diff --git a/.circleci/config.yml b/.circleci/config.yml index 09e5a6382d..93c84834f1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,5 +1,10 @@ version: 2.1 +parameters: + ci_builder_image: + type: string + default: us-docker.pkg.dev/${GCP_PROJECT_ID}/${GCP_ARTIFACT_REPOSITORY}/images/ci-builder:latest + executors: intergration-tests-executor: resource_class: xlarge @@ -8,6 +13,7 @@ executors: docker_layer_caching: true environment: DOCKER_BUILDKIT: 1 + COMPOSE_DOCKER_CLI_BUILD: 1 commands: check-changed: @@ -71,12 +77,16 @@ commands: patterns: common-ts,contracts,core-utils,data-transport-layer,message-relayer,regenesis-surgery,sdk,integration-tests,l2geth,packages/boba/account-abstraction,packages/boba/bobalink,packages/boba/bundler,packages/boba/bundler_sdk,packages/boba/bundler_utils,packages/boba/contracts,packages/boba/gas-price-oracle,packages/boba/register,packages/boba/teleportation,ops,ops_boba - run: name: Build the project - command: yarn && yarn build + command: yarn && yarn install && yarn build working_directory: ./ - run: name: Build the core services - command: docker-compose build + command: | + # docker context create buildx-build + # docker buildx create --use buildx-build + # docker buildx bake -f docker-compose.yml --load + docker-compose build working_directory: ops - run: @@ -110,7 +120,7 @@ commands: name: Start background logging working_directory: ops background: true - command: docker-compose -f <> -f <> logs --follow + command: docker-compose -f <> -f <> logs --follow || true - run: name: Wait for sequencer command: bash scripts/wait-for-sequencer.sh @@ -159,15 +169,14 @@ jobs: type: string default: this-package-does-not-exist docker: - - image: ethereumoptimism/ci-builder:latest - - image: cimg/postgres:14.1 + - image: <> steps: - checkout - check-changed: patterns: go/proxyd - run: name: Lint - command: golangci-lint run -E goimports,sqlclosecheck,bodyclose,asciicheck,misspell,errorlint -e "errors.As" -e "errors.Is" ./... + command: make lint working_directory: <> - store_test_results: path: /test-results @@ -223,7 +232,7 @@ workflows: main: jobs: - integration-tests - - integration-tests-avalanche + #- integration-tests-avalanche - integration-tests-bnb - go-lint-test-build: name: proxyd-tests diff --git a/.github/workflows/boba-publish-develop.yml b/.github/workflows/boba-publish-develop.yml index aecac00413..8dd24610d4 100644 --- a/.github/workflows/boba-publish-develop.yml +++ b/.github/workflows/boba-publish-develop.yml @@ -72,7 +72,7 @@ jobs: with: node-version: 16 - name: yq - portable yaml processor - uses: mikefarah/yq@v4.35.1 + uses: mikefarah/yq@v4.35.2 - name: Get yarn cache directory path id: yarn-cache-dir-path diff --git a/.github/workflows/boba-publish-master.yml b/.github/workflows/boba-publish-master.yml index 33c6993c61..1380e709bb 100644 --- a/.github/workflows/boba-publish-master.yml +++ b/.github/workflows/boba-publish-master.yml @@ -80,7 +80,7 @@ jobs: with: node-version: 16 - name: yq - portable yaml processor - uses: mikefarah/yq@v4.35.1 + uses: mikefarah/yq@v4.35.2 - name: Get yarn cache directory path id: yarn-cache-dir-path diff --git a/boba_community/boba-relayer/package.json b/boba_community/boba-relayer/package.json index 256956971b..8f4fd1ca9d 100644 --- a/boba_community/boba-relayer/package.json +++ b/boba_community/boba-relayer/package.json @@ -1,5 +1,5 @@ { - "name": "@boba/boba-relayer", + "name": "@bobanetwork/boba-relayer", "version": "1.0.0", "scripts": { "start": "node ./src/index.js", @@ -7,7 +7,7 @@ }, "license": "MIT", "dependencies": { - "@eth-optimism/sdk": "1.0.1", + "@bobanetwork/sdk": "1.0.7", "dotenv": "^16.0.0", "ethers": "^5.5.4", "node-fetch": "2.6.0", diff --git a/boba_community/boba-relayer/src/index.js b/boba_community/boba-relayer/src/index.js index bb65c871e9..b47e70d4da 100644 --- a/boba_community/boba-relayer/src/index.js +++ b/boba_community/boba-relayer/src/index.js @@ -13,7 +13,7 @@ const { CrossChainMessenger, MessageStatus, CONTRACT_ADDRESSES, -} = require('@eth-optimism/sdk') +} = require('@bobanetwork/sdk') const main = async () => { const env = process.env diff --git a/boba_community/fraud-detector/docker/Dockerfile.fraud-detector b/boba_community/fraud-detector/docker/Dockerfile.fraud-detector index 37eb4651b9..f4ad1095ee 100644 --- a/boba_community/fraud-detector/docker/Dockerfile.fraud-detector +++ b/boba_community/fraud-detector/docker/Dockerfile.fraud-detector @@ -1,5 +1,5 @@ FROM python:3.8-slim -RUN pip3 install --no-cache-dir web3==5.31.4 +RUN pip3 install --no-cache-dir web3==6.11.1 COPY boba_community/fraud-detector/fraud-detector.py / COPY boba_community/fraud-detector/packages/jsonrpclib /jsonrpclib COPY /packages/contracts/artifacts/contracts/L1/rollup/StateCommitmentChain.sol/StateCommitmentChain.json /contracts/StateCommitmentChain.json diff --git a/boba_community/fraud-detector/fraud-detector.py b/boba_community/fraud-detector/fraud-detector.py index a48bf0c81f..fa41745799 100644 --- a/boba_community/fraud-detector/fraud-detector.py +++ b/boba_community/fraud-detector/fraud-detector.py @@ -87,7 +87,7 @@ def status(*args): while True: try: rpc[1] = Web3(Web3.HTTPProvider(os.environ['L1_NODE_WEB3_URL'])) - assert (rpc[1].isConnected()) + assert (rpc[1].is_connected()) break except: logger.info ("Waiting for L1...") @@ -99,7 +99,7 @@ def status(*args): while True: try: rpc[2] = Web3(Web3.HTTPProvider(os.environ['L2_NODE_WEB3_URL'])) - assert (rpc[2].isConnected()) + assert (rpc[2].is_connected()) break except: logger.info ("Waiting for L2...") @@ -111,7 +111,7 @@ def status(*args): while True: try: rpc[3] = Web3(Web3.HTTPProvider(os.environ['VERIFIER_WEB3_URL'])) - assert (rpc[3].isConnected()) + assert (rpc[3].is_connected()) break except: logger.info ("Waiting for verifier...") @@ -181,17 +181,17 @@ def doEvent(event, force_L2): match = "**** SCC/VERIFIER MISMATCH ****" if l2SR: - l2SR_str = Web3.toHex(l2SR) + l2SR_str = Web3.utils.toHex(l2SR) else: l2SR_str = " -- " - log_str = "{} {} {} {} {} {}".format(rCount, event.blockNumber, Web3.toHex(sr), l2SR_str, Web3.toHex(vfSR), match) + log_str = "{} {} {} {} {} {}".format(rCount, event.blockNumber, Web3.utils.toHex(sr), l2SR_str, Web3.utils.toHex(vfSR), match) matchedLock.acquire() if match != "": Matched['is_ok'] = False logger.warning(log_str) else: Matched['Block'] = rCount - Matched['Root'] = Web3.toHex(sr) + Matched['Root'] = Web3.utils.toHex(sr) Matched['Time'] = time.time() logger.info(log_str) matchedLock.release() @@ -238,7 +238,7 @@ def fpLoop(): logger.info("#SCC-IDX L1-Block SCC-STATEROOT L2-STATEROOT VERIFIER-STATEROOT MISMATCH") - topic_sig = Web3.toHex(Web3.keccak(text="StateBatchAppended(uint256,bytes32,uint256,uint256,bytes)")) + topic_sig = Web3.utils.toHex(Web3.keccak(text="StateBatchAppended(uint256,bytes32,uint256,uint256,bytes)")) while startBlock < l1_tip: toBlock = min(startBlock+batch_size, l1_tip) - 1 diff --git a/boba_community/hc-captcha-faucet/packages/contracts/bin/deploy.ts b/boba_community/hc-captcha-faucet/packages/contracts/bin/deploy.ts index 44f133f964..0a1d050c49 100644 --- a/boba_community/hc-captcha-faucet/packages/contracts/bin/deploy.ts +++ b/boba_community/hc-captcha-faucet/packages/contracts/bin/deploy.ts @@ -1,5 +1,5 @@ import { Wallet, providers } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' /* eslint-disable */ require('dotenv').config() diff --git a/boba_community/hc-captcha-faucet/packages/contracts/deploy/001-BobaFaucet.deploy.ts b/boba_community/hc-captcha-faucet/packages/contracts/deploy/001-BobaFaucet.deploy.ts index 672fe484ac..d3bf8fd7b4 100644 --- a/boba_community/hc-captcha-faucet/packages/contracts/deploy/001-BobaFaucet.deploy.ts +++ b/boba_community/hc-captcha-faucet/packages/contracts/deploy/001-BobaFaucet.deploy.ts @@ -1,4 +1,4 @@ -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { DeployFunction, DeploymentSubmission } from 'hardhat-deploy/dist/types' import { Contract, ContractFactory, utils } from 'ethers' diff --git a/boba_community/hc-kyc/test/kyc.ts b/boba_community/hc-kyc/test/kyc.ts index ee834d2616..4df564eaf6 100644 --- a/boba_community/hc-kyc/test/kyc.ts +++ b/boba_community/hc-kyc/test/kyc.ts @@ -8,7 +8,7 @@ import { Wallet, utils, } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { ethers } from 'hardhat' import chai, { expect } from 'chai' import { solidity } from 'ethereum-waffle' diff --git a/boba_community/hc-monsters/contracts/bridge/L1NFTMonsterV2.sol b/boba_community/hc-monsters/contracts/bridge/L1NFTMonsterV2.sol index 366d11cce0..26ec570c0d 100644 --- a/boba_community/hc-monsters/contracts/bridge/L1NFTMonsterV2.sol +++ b/boba_community/hc-monsters/contracts/bridge/L1NFTMonsterV2.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity >0.7.5; -import "@boba/contracts/contracts/standards/L1StandardERC721.sol"; +import "@bobanetwork/contracts/contracts/standards/L1StandardERC721.sol"; import "base64-sol/base64.sol"; /** diff --git a/boba_community/hc-monsters/scripts/deploy.ts b/boba_community/hc-monsters/scripts/deploy.ts index c646562470..807a4ecfdb 100644 --- a/boba_community/hc-monsters/scripts/deploy.ts +++ b/boba_community/hc-monsters/scripts/deploy.ts @@ -3,7 +3,7 @@ import {Contract, ContractFactory, providers, utils, Wallet} from "ethers"; import TuringHelperJson from "../artifacts/contracts/TuringHelper.sol/HybridComputeHelper.json"; import {getContractFactory} from "@eth-optimism/contracts"; const cfg = hre.network.config -import L2GovernanceERC20Json from '@boba/contracts/artifacts/contracts/standards/L2GovernanceERC20.sol/L2GovernanceERC20.json' +import L2GovernanceERC20Json from '@bobanetwork/contracts/artifacts/contracts/standards/L2GovernanceERC20.sol/L2GovernanceERC20.json' async function main() { const local_provider = new providers.JsonRpcProvider(cfg['url']) diff --git a/boba_community/hc-monsters/test/NFTMonsterV2.ts b/boba_community/hc-monsters/test/NFTMonsterV2.ts index a04b04389a..0aa8eb3374 100644 --- a/boba_community/hc-monsters/test/NFTMonsterV2.ts +++ b/boba_community/hc-monsters/test/NFTMonsterV2.ts @@ -1,16 +1,16 @@ import { Contract, ContractFactory, providers, Wallet, utils } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { ethers } from 'hardhat' import chai, { expect } from 'chai' import { solidity } from 'ethereum-waffle' chai.use(solidity) import hre from 'hardhat' -import L1StandardERC721Json from '@boba/contracts/artifacts/contracts/standards/L1StandardERC721.sol/L1StandardERC721.json' +import L1StandardERC721Json from '@bobanetwork/contracts/artifacts/contracts/standards/L1StandardERC721.sol/L1StandardERC721.json' import ERC721Json from '../artifacts/contracts/NFTMonsterV2.sol/NFTMonsterV2.json' import L2BridgeMessengerMockJson from '../artifacts/contracts/L2BridgeMockMessenger.sol/L2BridgeMockMessenger.json' import TuringHelperJson from '../artifacts/contracts/TuringHelper.sol/TuringHelper.json' -import L2GovernanceERC20Json from '@boba/contracts/artifacts/contracts/standards/L2GovernanceERC20.sol/L2GovernanceERC20.json' -import L2NFTBridgeJson from '@boba/contracts/artifacts/contracts/ERC721Bridges/L2NFTBridge.sol/L2NFTBridge.json' +import L2GovernanceERC20Json from '@bobanetwork/contracts/artifacts/contracts/standards/L2GovernanceERC20.sol/L2GovernanceERC20.json' +import L2NFTBridgeJson from '@bobanetwork/contracts/artifacts/contracts/ERC721Bridges/L2NFTBridge.sol/L2NFTBridge.json' const cfg = hre.network.config diff --git a/boba_community/hc-start/packages/dapp-contracts/package.json b/boba_community/hc-start/packages/dapp-contracts/package.json index cd497fd6a0..fea78b2725 100644 --- a/boba_community/hc-start/packages/dapp-contracts/package.json +++ b/boba_community/hc-start/packages/dapp-contracts/package.json @@ -1,5 +1,5 @@ { - "name": "@boba/hcb-dapp-contracts", + "name": "@bobanetwork/hcb-dapp-contracts", "version": "0.1.0", "description": "Contracts for HybridCompute UX DApp", "main": "index.js", diff --git a/boba_community/hc-start/packages/dapp-contracts/test/factory.ts b/boba_community/hc-start/packages/dapp-contracts/test/factory.ts index 2dc345b538..f15153168f 100644 --- a/boba_community/hc-start/packages/dapp-contracts/test/factory.ts +++ b/boba_community/hc-start/packages/dapp-contracts/test/factory.ts @@ -8,7 +8,7 @@ import { Wallet, utils, } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { ethers, upgrades } from 'hardhat' import chai, { expect } from 'chai' import { solidity } from 'ethereum-waffle' diff --git a/boba_documentation/developer/price-feeds.md b/boba_documentation/developer/price-feeds.md index 71f340e260..1dd8f2f6ac 100644 --- a/boba_documentation/developer/price-feeds.md +++ b/boba_documentation/developer/price-feeds.md @@ -87,7 +87,7 @@ A quick note on fees and subscription: Currently the feed is free to use for the To get the latest price data call method **`latestRoundData(base, quote)`**. To get the price data from a certain past round (historical price) call method **`getRoundData(base, quote, roundId)`**. The `roundId` supplied here is phaseId plus aggregator roundId, for reference query the latest `roundId`. The answer returned will be of the form of decimals specified on the contract call method **`decimals(base, quote)`**. For example, ```javascript -import "@boba/contracts/oracle/FeedRegistry.sol" +import "@bobanetwork/contracts/oracle/FeedRegistry.sol" contract MyContract { @@ -138,7 +138,7 @@ A complete list of publicly available Witnet data feeds on Boba can be found in Witnet price feeds can be integrated into your own Boba Mainnet contracts in two different ways: 1. [Integrate through proxy](https://docs.witnet.io/smart-contracts/witnet-data-feeds/using-witnet-data-feeds#reading-multiple-currency-pairs-from-the-router) Recommended for testing and upgradability. - This is the preferred way to consume the Witnet-powered price feeds. Through using the ***Price Feeds Router***. + This is the preferred way to consume the Witnet-powered price feeds. Through using the ***Price Feeds Router***. 2. [Integrate directly](https://docs.witnet.io/smart-contracts/witnet-data-feeds/using-witnet-data-feeds#reading-last-price-and-timestamp-from-a-price-feed-contract-serving-a-specific-pair) Optimized for gas cost and decentralization @@ -168,7 +168,7 @@ contract MyContract { IWitnetPriceRouter immutable public router; /** - * IMPORTANT: pass the WitnetPriceRouter address depending on + * IMPORTANT: pass the WitnetPriceRouter address depending on * the network you are using! Please find available addresses here: * https://docs.witnet.io/smart-contracts/price-feeds/contract-addresses */ @@ -186,7 +186,7 @@ contract MyContract { (_price,,) = router.valueFor(bytes4(0x3d15f701)); } - /// Returns the BTC / ETH price (6 decimals), derived from the ETH/USD and + /// Returns the BTC / ETH price (6 decimals), derived from the ETH/USD and /// the BTC/USD pairs that were ultimately provided by the Witnet oracle. function getBtcEthPrice() public view returns (int256 _price) { return (1000000 * getBtcUsdPrice()) / getEthUsdPrice(); @@ -210,9 +210,9 @@ print("> lastTimestamp:", valueFor[1]) print("> latestUpdateStatus:", valueFor[2]) ``` -For more information about Witnet please refer to: +For more information about Witnet please refer to: -[website](https://witnet.io/) | [docs](https://docs.witnet.io/) | [github](https://github.com/witnet) | [twitter](https://twitter.com/witnet_io) | [telegram](https://t.me/witnetio) | [discord](https://discord.gg/witnet) +[website](https://witnet.io/) | [docs](https://docs.witnet.io/) | [github](https://github.com/witnet) | [twitter](https://twitter.com/witnet_io) | [telegram](https://t.me/witnetio) | [discord](https://discord.gg/witnet) ## 3. Turing diff --git a/boba_documentation/developer/xdomain-tx-status.md b/boba_documentation/developer/xdomain-tx-status.md index 2a6b770f10..9f7e8b9c05 100644 --- a/boba_documentation/developer/xdomain-tx-status.md +++ b/boba_documentation/developer/xdomain-tx-status.md @@ -24,7 +24,7 @@ Internally in all the services and also in the `gateway`, the status of transact CrossChainMessenger, MessageStatus, MessageDirection, - } from '@eth-optimism/sdk' + } from '@bobanetwork/sdk' const messenger = new CrossChainMessenger({ l1SignerOrProvider: l1Wallet, @@ -62,7 +62,7 @@ Internally in all the services and also in the `gateway`, the status of transact ## Using the Boba Transaction API -The system is [documented here](../../ops_boba/api/watcher-api/README.md). For example, to get L2 transactions between two blocks, use `get.l2.transactions`: +The system is [documented here](../../ops_boba/api/watcher-api/README.md). For example, to get L2 transactions between two blocks, use `get.l2.transactions`: ### get.l2.transactions @@ -117,4 +117,4 @@ The system is [documented here](../../ops_boba/api/watcher-api/README.md). For e } } ] -``` \ No newline at end of file +``` diff --git a/boba_examples/nft_bridging/src/index.js b/boba_examples/nft_bridging/src/index.js index de2aa42382..870a3d6378 100644 --- a/boba_examples/nft_bridging/src/index.js +++ b/boba_examples/nft_bridging/src/index.js @@ -5,9 +5,9 @@ const chalk = require('chalk') require('dotenv').config() const SampleERC721Json = require('../artifacts/contracts/SampleERC721.sol/SampleERC721.json') -const L1StandardERC721Json = require('@boba/contracts/artifacts/contracts/standards/L1StandardERC721.sol/L1StandardERC721.json') -const L1NFTBridgeJson = require('@boba/contracts/artifacts/contracts/ERC721Bridges/L1NFTBridge.sol/L1NFTBridge.json') -const L2NFTBridgeJson = require('@boba/contracts/artifacts/contracts/ERC721Bridges/L2NFTBridge.sol/L2NFTBridge.json') +const L1StandardERC721Json = require('@bobanetwork/contracts/artifacts/contracts/standards/L1StandardERC721.sol/L1StandardERC721.json') +const L1NFTBridgeJson = require('@bobanetwork/contracts/artifacts/contracts/ERC721Bridges/L1NFTBridge.sol/L1NFTBridge.json') +const L2NFTBridgeJson = require('@bobanetwork/contracts/artifacts/contracts/ERC721Bridges/L2NFTBridge.sol/L2NFTBridge.json') const { bridgeToL1 } = require('./bridgeToL1') const { bridgeBackToL2 } = require('./bridgeBackToL2') diff --git a/boba_examples/nft_bridging/src/quickStart-goerli.js b/boba_examples/nft_bridging/src/quickStart-goerli.js index 883239abd6..33bb6c0cf3 100644 --- a/boba_examples/nft_bridging/src/quickStart-goerli.js +++ b/boba_examples/nft_bridging/src/quickStart-goerli.js @@ -5,9 +5,9 @@ const chalk = require('chalk') require('dotenv').config() const SampleERC721Json = require('../quickStart-Goerli/SampleERC721.json') -const L1StandardERC721Json = require('@boba/contracts/artifacts/contracts/standards/L1StandardERC721.sol/L1StandardERC721.json') -const L1NFTBridgeJson = require('@boba/contracts/artifacts/contracts/ERC721Bridges/L1NFTBridge.sol/L1NFTBridge.json') -const L2NFTBridgeJson = require('@boba/contracts/artifacts/contracts/ERC721Bridges/L2NFTBridge.sol/L2NFTBridge.json') +const L1StandardERC721Json = require('@bobanetwork/contracts/artifacts/contracts/standards/L1StandardERC721.sol/L1StandardERC721.json') +const L1NFTBridgeJson = require('@bobanetwork/contracts/artifacts/contracts/ERC721Bridges/L1NFTBridge.sol/L1NFTBridge.json') +const L2NFTBridgeJson = require('@bobanetwork/contracts/artifacts/contracts/ERC721Bridges/L2NFTBridge.sol/L2NFTBridge.json') const { bridgeToL1 } = require('./bridgeToL1') const { bridgeBackToL2 } = require('./bridgeBackToL2') diff --git a/boba_examples/turing-complex-types/scripts/deploy.ts b/boba_examples/turing-complex-types/scripts/deploy.ts index b7a82fc759..8e6244dc4c 100644 --- a/boba_examples/turing-complex-types/scripts/deploy.ts +++ b/boba_examples/turing-complex-types/scripts/deploy.ts @@ -3,7 +3,7 @@ import {Contract, ContractFactory, providers, utils, Wallet} from "ethers"; import TuringHelperJson from "../artifacts/contracts/TuringHelper.sol/TuringHelper.json"; import {getContractFactory} from "@eth-optimism/contracts"; const cfg = hre.network.config -import L2GovernanceERC20Json from '@boba/contracts/artifacts/contracts/standards/L2GovernanceERC20.sol/L2GovernanceERC20.json' +import L2GovernanceERC20Json from '@bobanetwork/contracts/artifacts/contracts/standards/L2GovernanceERC20.sol/L2GovernanceERC20.json' async function main() { const local_provider = new providers.JsonRpcProvider(cfg['url']) diff --git a/boba_examples/turing-hello-world/contracts/HelloTuring.sol b/boba_examples/turing-hello-world/contracts/HelloTuring.sol index 0e27ca62cd..93da9a8d3b 100644 --- a/boba_examples/turing-hello-world/contracts/HelloTuring.sol +++ b/boba_examples/turing-hello-world/contracts/HelloTuring.sol @@ -37,9 +37,36 @@ contract HelloTuring { return product; } + // Tests error handling when a contract tries to make more than one call + // per Tx, using the "multFloatNumbers" offchain handler. + // Multiple calls from the same stack depth are permitted for legacy reasons + // but should not be used in new code. + function callTwice(string memory _url, string memory a, string memory b, uint32 mode) + public returns (uint256) { + + bytes memory encRequest; + bytes memory encResponse; + + if (mode == 2) { + // Call from a different stack depth + HelloTuring(address(this)).callTwice(_url, a, b, 0); + } else if (mode == 1) { + // Call from same stack depth + encRequest = abi.encode(b); + encResponse = myHelper.TuringTxV2(_url, encRequest); + } + + encRequest = abi.encode(a); + encResponse = myHelper.TuringTxV2(_url, encRequest); + + uint256 product = abi.decode(encResponse, (uint256)); + emit MultFloatNumbers(product); + return product; + } + // Tests a Turing method which returns a variable-length array. // The parameters 'a' and 'b' are passed in the request, returing - // an array of 'b' elements each with value 'a'. This function + // an array of 'a' elements each with value 'b'. This function // adds all of the returned values and returns a total of (a*b) function multArray(string memory _url, uint256 a, uint256 b) public { diff --git a/boba_examples/turing-hello-world/test/hello-world.spec.ts b/boba_examples/turing-hello-world/test/hello-world.spec.ts index 9ff19a233e..a64851553d 100644 --- a/boba_examples/turing-hello-world/test/hello-world.spec.ts +++ b/boba_examples/turing-hello-world/test/hello-world.spec.ts @@ -6,7 +6,7 @@ import { Wallet, utils, } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import chai, { expect } from 'chai' import { solidity } from 'ethereum-waffle' chai.use(solidity) diff --git a/boba_examples/turing-hello-world/test/local-webserver.ts b/boba_examples/turing-hello-world/test/local-webserver.ts index 4262d275bf..8c47c72ef9 100644 --- a/boba_examples/turing-hello-world/test/local-webserver.ts +++ b/boba_examples/turing-hello-world/test/local-webserver.ts @@ -1,5 +1,4 @@ -import { BigNumber, Contract, ContractFactory, providers, Wallet, utils } from 'ethers' -import { ethers } from 'hardhat' +import { Contract, ContractFactory, providers, Wallet, utils } from 'ethers' import chai, { expect } from 'chai' import { solidity } from 'ethereum-waffle' chai.use(solidity) @@ -12,7 +11,7 @@ const cfg = hre.network.config const hPort = 1235 // Port for local HTTP server var urlStr var urlStr2 -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' const gasOverride = { gasLimit: 11000000 //3,000,000 } @@ -21,7 +20,7 @@ import BobaTuringCreditJson from "../../../packages/contracts/artifacts/contract import GasOracleJson from "../../../packages/contracts/artifacts/contracts/L2/predeploys/OVM_GasPriceOracle.sol/OVM_GasPriceOracle.json" import HelloTuringJson from "../artifacts/contracts/HelloTuring.sol/HelloTuring.json" import TuringHelper from "../artifacts/contracts/TuringHelper.sol/TuringHelper.json" -import L2GovernanceERC20Json from '@boba/contracts/artifacts/contracts/standards/L2GovernanceERC20.sol/L2GovernanceERC20.json' +import L2GovernanceERC20Json from '@bobanetwork/contracts/artifacts/contracts/standards/L2GovernanceERC20.sol/L2GovernanceERC20.json' import { Server } from "http"; let Factory__Hello: ContractFactory @@ -204,7 +203,7 @@ if (hre.network.name === "boba_local") { it('Should fund your Turing helper contract in turingCredit', async () => { - const depositAmount = utils.parseEther('0.5') + const depositAmount = utils.parseEther('1.5') const preBalance = await turingCredit.prepaidBalance(helper.address) const bobaBalance = await L2BOBAToken.balanceOf(deployerWallet.address) @@ -280,15 +279,26 @@ if (hre.network.name === "boba_local") { } }) - it("should charge extra gas for L1 calldata storage", async() => { - const g1 = (await hello.estimateGas.multArray(urlStr2, 1, 10, gasOverride)).toNumber() - const g2 = (await hello.estimateGas.multArray(urlStr2, 101, 10, gasOverride)).toNumber() + it("should charge extra gas for L1 calldata storage", async() => { + const eg1 = (await hello.estimateGas.multArray(urlStr2, 1, 10, gasOverride)).toNumber() + let tx1 = await hello.multArray(urlStr2, 1, 10, gasOverride) + const res1 = await tx1.wait() + expect(res1).to.be.ok + const ag1 = res1.gasUsed.toNumber() + + const eg2 = (await hello.estimateGas.multArray(urlStr2, 101, 10, gasOverride)).toNumber() + let tx2 = await hello.multArray(urlStr2, 101, 10, gasOverride) + const res2 = await tx2.wait() + expect(res2).to.be.ok + const ag2 = res2.gasUsed.toNumber() // Larger calldata costs more gas inside the contract itself. We need to test for // additional usage on top of this from the L1 calldata calculation. The exact value - // depends on the L1 gas price so this test doesn't look for a specific number - expect (g2 - g1).to.be.above(110000) - }) + // depends on the L1 gas price so this test doesn't look for a specific number. + // Actual tx is a different code path than estimateGas so both are checked. + expect (eg2 - eg1).to.be.above(110000) + expect (ag2 - ag1).to.be.above(110000) + }) it("should support a large response", async() => { const nElem = 2038 @@ -304,11 +314,57 @@ if (hre.network.name === "boba_local") { expect(result).to.equal(nElem * 55) }) + it("should allow repeated calls (legacy support)", async () => { + await hello.estimateGas.callTwice(urlStr, '6', '6', 1, gasOverride) + let tr = await hello.callTwice(urlStr, '6', '6', 1, gasOverride) + const res = await tr.wait() + expect(res).to.be.ok + + const ev = res.events.find(e => e.event === "MultFloatNumbers") + const result = parseInt(ev.data.slice(-64), 16) / 100 + expect(result.toFixed(5)).to.equal('904.78000') + }) + + it("should disallow repeated calls with different input", async () => { + try { + await hello.estimateGas.callTwice(urlStr, '6', '7', 1, gasOverride) + expect(1).to.equal(0) + } catch (e) { + // generic error code indicating that a tx reverted + expect(e.error.toString()).to.contain("gas required exceeds allowance") + } + + try { + let tr = await hello.callTwice(urlStr, '6', '7', 1, gasOverride) + const res = await tr.wait() + expect(1).to.equal(0) + } catch (e) { + expect(e.toString()).to.contain("transaction failed") + } + }) + + it("should disallow repeated calls at different depth", async () => { + try { + await hello.estimateGas.callTwice(urlStr, '8', '8', 2, gasOverride) + expect(1).to.equal(0) + } catch (e) { + expect(e.error.toString()).to.contain("gas required exceeds allowance") + } + try { + let tr = await hello.callTwice(urlStr, '8', '8', 2, gasOverride) + const res = await tr.wait() + expect(1).to.equal(0) + } catch (e) { + expect(e.toString()).to.contain("transaction failed") + } + }) + it("final balance", async () => { const postBalance = await turingCredit.prepaidBalance( helper.address ) - //expect(postBalance).to.equal( utils.parseEther('0.5')) + // Change expected value if tests are added or skipped above + expect(postBalance).to.equal(utils.parseEther('0.7')) }) }) } else { diff --git a/boba_examples/turing-lending/test/lending.spec.ts b/boba_examples/turing-lending/test/lending.spec.ts index f1c139683b..0c80e2a534 100644 --- a/boba_examples/turing-lending/test/lending.spec.ts +++ b/boba_examples/turing-lending/test/lending.spec.ts @@ -1,5 +1,5 @@ import { BigNumber, Contract, ContractFactory, providers, Wallet, utils } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { ethers } from 'hardhat' import chai, { expect } from 'chai' import { solidity } from 'ethereum-waffle' diff --git a/boba_examples/turing-nft-random/test/NFT_random.spec.ts b/boba_examples/turing-nft-random/test/NFT_random.spec.ts index d337c31fe7..c3ca85e762 100644 --- a/boba_examples/turing-nft-random/test/NFT_random.spec.ts +++ b/boba_examples/turing-nft-random/test/NFT_random.spec.ts @@ -1,5 +1,5 @@ import { BigNumber, Contract, ContractFactory, providers, Wallet, utils } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { ethers } from 'hardhat' import chai, { expect } from 'chai' import { solidity } from 'ethereum-waffle' diff --git a/boba_examples/turing-stable-swap/test/stable_swap.spec.ts b/boba_examples/turing-stable-swap/test/stable_swap.spec.ts index eaa20f6471..adb40327f7 100644 --- a/boba_examples/turing-stable-swap/test/stable_swap.spec.ts +++ b/boba_examples/turing-stable-swap/test/stable_swap.spec.ts @@ -1,5 +1,5 @@ import { BigNumber, Contract, ContractFactory, providers, Wallet, utils } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { ethers } from 'hardhat' import chai, { expect } from 'chai' import { solidity } from 'ethereum-waffle' diff --git a/go/proxyd/Dockerfile b/go/proxyd/Dockerfile index f6ba052ba0..b066e0ecaf 100644 --- a/go/proxyd/Dockerfile +++ b/go/proxyd/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.18.0-alpine3.15 as builder +FROM golang:1.21.3-alpine3.18 as builder ARG GITCOMMIT=docker ARG GITDATE=docker @@ -12,7 +12,9 @@ WORKDIR /app RUN make proxyd -FROM alpine:3.15 +FROM alpine:3.18 + +RUN apk add bind-tools jq curl bash git redis COPY ./proxyd/entrypoint.sh /bin/entrypoint.sh diff --git a/go/proxyd/Makefile b/go/proxyd/Makefile index 263dc61051..049a23a3c0 100644 --- a/go/proxyd/Makefile +++ b/go/proxyd/Makefile @@ -13,9 +13,9 @@ fmt: .PHONY: fmt test: - go test -race -v ./... + go test -v ./... .PHONY: test lint: go vet ./... -.PHONY: test \ No newline at end of file +.PHONY: test diff --git a/go/proxyd/README.md b/go/proxyd/README.md index ff019ea7eb..e3ec1caad5 100644 --- a/go/proxyd/README.md +++ b/go/proxyd/README.md @@ -5,7 +5,12 @@ This tool implements `proxyd`, an RPC request router and proxy. It does the foll 1. Whitelists RPC methods. 2. Routes RPC methods to groups of backend services. 3. Automatically retries failed backend requests. -4. Provides metrics the measure request latency, error rates, and the like. +4. Track backend consensus (`latest`, `safe`, `finalized` blocks), peer count and sync state. +5. Re-write requests and responses to enforce consensus. +6. Load balance requests across backend services. +7. Cache immutable responses from backends. +8. Provides metrics the measure request latency, error rates, and the like. + ## Usage @@ -15,12 +20,127 @@ To configure `proxyd` for use, you'll need to create a configuration file to def Once you have a config file, start the daemon via `proxyd .toml`. + +## Consensus awareness + +Starting on v4.0.0, `proxyd` is aware of the consensus state of its backends. This helps minimize chain reorgs experienced by clients. + +To enable this behavior, you must set `consensus_aware` value to `true` in the backend group. + +When consensus awareness is enabled, `proxyd` will poll the backends for their states and resolve a consensus group based on: +* the common ancestor `latest` block, i.e. if a backend is experiencing a fork, the fork won't be visible to the clients +* the lowest `safe` block +* the lowest `finalized` block +* peer count +* sync state + +The backend group then acts as a round-robin load balancer distributing traffic equally across healthy backends in the consensus group, increasing the availability of the proxy. + +A backend is considered healthy if it meets the following criteria: +* not banned +* avg 1-min moving window error rate ≤ configurable threshold +* avg 1-min moving window latency ≤ configurable threshold +* peer count ≥ configurable threshold +* `latest` block lag ≤ configurable threshold +* last state update ≤ configurable threshold +* not currently syncing + +When a backend is experiencing inconsistent consensus, high error rates or high latency, +the backend will be banned for a configurable amount of time (default 5 minutes) +and won't receive any traffic during this period. + + +## Tag rewrite + +When consensus awareness is enabled, `proxyd` will enforce the consensus state transparently for all the clients. + +For example, if a client requests the `eth_getBlockByNumber` method with the `latest` tag, +`proxyd` will rewrite the request to use the resolved latest block from the consensus group +and forward it to the backend. + +The following request methods are rewritten: +* `eth_getLogs` +* `eth_newFilter` +* `eth_getBalance` +* `eth_getCode` +* `eth_getTransactionCount` +* `eth_call` +* `eth_getStorageAt` +* `eth_getBlockTransactionCountByNumber` +* `eth_getUncleCountByBlockNumber` +* `eth_getBlockByNumber` +* `eth_getTransactionByBlockNumberAndIndex` +* `eth_getUncleByBlockNumberAndIndex` +* `debug_getRawReceipts` + +And `eth_blockNumber` response is overridden with current block consensus. + + +## Cacheable methods + +Cache use Redis and can be enabled for the following immutable methods: + +* `eth_chainId` +* `net_version` +* `eth_getBlockTransactionCountByHash` +* `eth_getUncleCountByBlockHash` +* `eth_getBlockByHash` +* `eth_getTransactionByBlockHashAndIndex` +* `eth_getUncleByBlockHashAndIndex` +* `debug_getRawReceipts` (block hash only) + +## Meta method `consensus_getReceipts` + +To support backends with different specifications in the same backend group, +proxyd exposes a convenient method to fetch receipts abstracting away +what specific backend will serve the request. + +Each backend specifies their preferred method to fetch receipts with `consensus_receipts_target` config, +which will be translated from `consensus_getReceipts`. + +This method takes a `blockNumberOrHash` (i.e. `tag|qty|hash`) +and returns the receipts for all transactions in the block. + +Request example +```json +{ + "jsonrpc":"2.0", + "id": 1, + "params": ["0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b"] +} +``` + +It currently supports translation to the following targets: +* `debug_getRawReceipts(blockOrHash)` (default) +* `alchemy_getTransactionReceipts(blockOrHash)` +* `parity_getBlockReceipts(blockOrHash)` +* `eth_getBlockReceipts(blockOrHash)` + +The selected target is returned in the response, in a wrapped result. + +Response example +```json +{ + "jsonrpc": "2.0", + "id": 1, + "result": { + "method": "debug_getRawReceipts", + "result": { + // the actual raw result from backend + } + } +} +``` + +See [op-node receipt fetcher](https://github.com/ethereum-optimism/optimism/blob/186e46a47647a51a658e699e9ff047d39444c2de/op-node/sources/receipts.go#L186-L253). + + ## Metrics -See `metrics.go` for a list of all available metrics. +See `metrics.go` for a list of all available metrics. The metrics port is configurable via the `metrics.port` and `metrics.host` keys in the config. ## Adding Backend SSL Certificates in Docker -The Docker image runs on Alpine Linux. If you get SSL errors when connecting to a backend within Docker, you may need to add additional certificates to Alpine's certificate store. To do this, bind mount the certificate bundle into a file in `/usr/local/share/ca-certificates`. The `entrypoint.sh` script will then update the store with whatever is in the `ca-certificates` directory prior to starting `proxyd`. \ No newline at end of file +The Docker image runs on Alpine Linux. If you get SSL errors when connecting to a backend within Docker, you may need to add additional certificates to Alpine's certificate store. To do this, bind mount the certificate bundle into a file in `/usr/local/share/ca-certificates`. The `entrypoint.sh` script will then update the store with whatever is in the `ca-certificates` directory prior to starting `proxyd`. diff --git a/go/proxyd/backend.go b/go/proxyd/backend.go index 3efa89921f..6c699f0391 100644 --- a/go/proxyd/backend.go +++ b/go/proxyd/backend.go @@ -17,10 +17,14 @@ import ( "sync" "time" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/rpc" "github.com/gorilla/websocket" "github.com/prometheus/client_golang/prometheus" "golang.org/x/sync/semaphore" + + sw "github.com/ethereum-optimism/optimism/proxyd/pkg/avg-sliding-window" ) const ( @@ -83,8 +87,33 @@ var ( Message: "sender is over rate limit", HTTPErrorCode: 429, } + ErrNotHealthy = &RPCErr{ + Code: JSONRPCErrorInternal - 18, + Message: "backend is currently not healthy to serve traffic", + HTTPErrorCode: 503, + } + ErrBlockOutOfRange = &RPCErr{ + Code: JSONRPCErrorInternal - 19, + Message: "block is out of range", + HTTPErrorCode: 400, + } + + ErrRequestBodyTooLarge = &RPCErr{ + Code: JSONRPCErrorInternal - 21, + Message: "request body too large", + HTTPErrorCode: 413, + } + + ErrBackendResponseTooLarge = &RPCErr{ + Code: JSONRPCErrorInternal - 20, + Message: "backend response too large", + HTTPErrorCode: 500, + } ErrBackendUnexpectedJSONRPC = errors.New("backend returned an unexpected JSON-RPC response") + + ErrConsensusGetReceiptsCantBeBatched = errors.New("consensus_getReceipts cannot be batched") + ErrConsensusGetReceiptsInvalidTarget = errors.New("unsupported consensus_receipts_target") ) func ErrInvalidRequest(msg string) *RPCErr { @@ -106,10 +135,10 @@ func ErrInvalidParams(msg string) *RPCErr { type Backend struct { Name string rpcURL string + receiptsTarget string wsURL string authUsername string authPassword string - rateLimiter BackendRateLimiter client *LimitedHTTPClient dialer *websocket.Dialer maxRetries int @@ -119,6 +148,17 @@ type Backend struct { outOfServiceInterval time.Duration stripTrailingXFF bool proxydIP string + + skipPeerCountCheck bool + forcedCandidate bool + + maxDegradedLatencyThreshold time.Duration + maxLatencyThreshold time.Duration + maxErrorRateThreshold float64 + + latencySlidingWindow *sw.AvgSlidingWindow + networkRequestsSlidingWindow *sw.AvgSlidingWindow + networkErrorsSlidingWindow *sw.AvgSlidingWindow } type BackendOpt func(b *Backend) @@ -187,11 +227,70 @@ func WithProxydIP(ip string) BackendOpt { } } +func WithConsensusSkipPeerCountCheck(skipPeerCountCheck bool) BackendOpt { + return func(b *Backend) { + b.skipPeerCountCheck = skipPeerCountCheck + } +} + +func WithConsensusForcedCandidate(forcedCandidate bool) BackendOpt { + return func(b *Backend) { + b.forcedCandidate = forcedCandidate + } +} + +func WithMaxDegradedLatencyThreshold(maxDegradedLatencyThreshold time.Duration) BackendOpt { + return func(b *Backend) { + b.maxDegradedLatencyThreshold = maxDegradedLatencyThreshold + } +} + +func WithMaxLatencyThreshold(maxLatencyThreshold time.Duration) BackendOpt { + return func(b *Backend) { + b.maxLatencyThreshold = maxLatencyThreshold + } +} + +func WithMaxErrorRateThreshold(maxErrorRateThreshold float64) BackendOpt { + return func(b *Backend) { + b.maxErrorRateThreshold = maxErrorRateThreshold + } +} + +func WithConsensusReceiptTarget(receiptsTarget string) BackendOpt { + return func(b *Backend) { + b.receiptsTarget = receiptsTarget + } +} + +type indexedReqRes struct { + index int + req *RPCReq + res *RPCRes +} + +const ConsensusGetReceiptsMethod = "consensus_getReceipts" + +const ReceiptsTargetDebugGetRawReceipts = "debug_getRawReceipts" +const ReceiptsTargetAlchemyGetTransactionReceipts = "alchemy_getTransactionReceipts" +const ReceiptsTargetParityGetTransactionReceipts = "parity_getBlockReceipts" +const ReceiptsTargetEthGetTransactionReceipts = "eth_getBlockReceipts" + +type ConsensusGetReceiptsResult struct { + Method string `json:"method"` + Result interface{} `json:"result"` +} + +// BlockHashOrNumberParameter is a non-conventional wrapper used by alchemy_getTransactionReceipts +type BlockHashOrNumberParameter struct { + BlockHash *common.Hash `json:"blockHash"` + BlockNumber *rpc.BlockNumber `json:"blockNumber"` +} + func NewBackend( name string, rpcURL string, wsURL string, - rateLimiter BackendRateLimiter, rpcSemaphore *semaphore.Weighted, opts ...BackendOpt, ) *Backend { @@ -199,7 +298,6 @@ func NewBackend( Name: name, rpcURL: rpcURL, wsURL: wsURL, - rateLimiter: rateLimiter, maxResponseSize: math.MaxInt64, client: &LimitedHTTPClient{ Client: http.Client{Timeout: 5 * time.Second}, @@ -207,12 +305,18 @@ func NewBackend( backendName: name, }, dialer: &websocket.Dialer{}, - } - for _, opt := range opts { - opt(backend) + maxLatencyThreshold: 10 * time.Second, + maxDegradedLatencyThreshold: 5 * time.Second, + maxErrorRateThreshold: 0.5, + + latencySlidingWindow: sw.NewSlidingWindow(), + networkRequestsSlidingWindow: sw.NewSlidingWindow(), + networkErrorsSlidingWindow: sw.NewSlidingWindow(), } + backend.Override(opts...) + if !backend.stripTrailingXFF && backend.proxydIP == "" { log.Warn("proxied requests' XFF header will not contain the proxyd ip address") } @@ -220,16 +324,13 @@ func NewBackend( return backend } -func (b *Backend) Forward(ctx context.Context, reqs []*RPCReq, isBatch bool) ([]*RPCRes, error) { - if !b.Online() { - RecordBatchRPCError(ctx, b.Name, reqs, ErrBackendOffline) - return nil, ErrBackendOffline - } - if b.IsRateLimited() { - RecordBatchRPCError(ctx, b.Name, reqs, ErrBackendOverCapacity) - return nil, ErrBackendOverCapacity +func (b *Backend) Override(opts ...BackendOpt) { + for _, opt := range opts { + opt(b) } +} +func (b *Backend) Forward(ctx context.Context, reqs []*RPCReq, isBatch bool) ([]*RPCRes, error) { var lastError error // <= to account for the first attempt not technically being // a retry @@ -250,9 +351,31 @@ func (b *Backend) Forward(ctx context.Context, reqs []*RPCReq, isBatch bool) ([] res, err := b.doForward(ctx, reqs, isBatch) switch err { case nil: // do nothing + case ErrBackendResponseTooLarge: + log.Warn( + "backend response too large", + "name", b.Name, + "req_id", GetReqID(ctx), + "max", b.maxResponseSize, + ) + RecordBatchRPCError(ctx, b.Name, reqs, err) + case ErrConsensusGetReceiptsCantBeBatched: + log.Warn( + "Received unsupported batch request for consensus_getReceipts", + "name", b.Name, + "req_id", GetReqID(ctx), + "err", err, + ) + case ErrConsensusGetReceiptsInvalidTarget: + log.Error( + "Unsupported consensus_receipts_target for consensus_getReceipts", + "name", b.Name, + "req_id", GetReqID(ctx), + "err", err, + ) // ErrBackendUnexpectedJSONRPC occurs because infura responds with a single JSON-RPC object // to a batch request whenever any Request Object in the batch would induce a partial error. - // We don't label the the backend offline in this case. But the error is still returned to + // We don't label the backend offline in this case. But the error is still returned to // callers so failover can occur if needed. case ErrBackendUnexpectedJSONRPC: log.Debug( @@ -280,24 +403,12 @@ func (b *Backend) Forward(ctx context.Context, reqs []*RPCReq, isBatch bool) ([] return res, err } - b.setOffline() return nil, wrapErr(lastError, "permanent error forwarding request") } func (b *Backend) ProxyWS(clientConn *websocket.Conn, methodWhitelist *StringSet) (*WSProxier, error) { - if !b.Online() { - return nil, ErrBackendOffline - } - if b.IsWSSaturated() { - return nil, ErrBackendOverCapacity - } - backendConn, _, err := b.dialer.Dial(b.wsURL, nil) // nolint:bodyclose if err != nil { - b.setOffline() - if err := b.rateLimiter.DecBackendWSConns(b.Name); err != nil { - log.Error("error decrementing backend ws conns", "name", b.Name, "err", err) - } return nil, wrapErr(err, "error dialing backend") } @@ -305,72 +416,97 @@ func (b *Backend) ProxyWS(clientConn *websocket.Conn, methodWhitelist *StringSet return NewWSProxier(b, clientConn, backendConn, methodWhitelist), nil } -func (b *Backend) Online() bool { - online, err := b.rateLimiter.IsBackendOnline(b.Name) +// ForwardRPC makes a call directly to a backend and populate the response into `res` +func (b *Backend) ForwardRPC(ctx context.Context, res *RPCRes, id string, method string, params ...any) error { + jsonParams, err := json.Marshal(params) if err != nil { - log.Warn( - "error getting backend availability, assuming it is offline", - "name", b.Name, - "err", err, - ) - return false + return err } - return online -} -func (b *Backend) IsRateLimited() bool { - if b.maxRPS == 0 { - return false + rpcReq := RPCReq{ + JSONRPC: JSONRPCVersion, + Method: method, + Params: jsonParams, + ID: []byte(id), } - usedLimit, err := b.rateLimiter.IncBackendRPS(b.Name) + slicedRes, err := b.doForward(ctx, []*RPCReq{&rpcReq}, false) if err != nil { - log.Error( - "error getting backend used rate limit, assuming limit is exhausted", - "name", b.Name, - "err", err, - ) - return true + return err } - return b.maxRPS < usedLimit -} - -func (b *Backend) IsWSSaturated() bool { - if b.maxWSConns == 0 { - return false + if len(slicedRes) != 1 { + return fmt.Errorf("unexpected response len for non-batched request (len != 1)") } - - incremented, err := b.rateLimiter.IncBackendWSConns(b.Name, b.maxWSConns) - if err != nil { - log.Error( - "error getting backend used ws conns, assuming limit is exhausted", - "name", b.Name, - "err", err, - ) - return true + if slicedRes[0].IsError() { + return fmt.Errorf(slicedRes[0].Error.Error()) } - return !incremented + *res = *(slicedRes[0]) + return nil } -func (b *Backend) setOffline() { - err := b.rateLimiter.SetBackendOffline(b.Name, b.outOfServiceInterval) - if err != nil { - log.Warn( - "error setting backend offline", - "name", b.Name, - "err", err, - ) +func (b *Backend) doForward(ctx context.Context, rpcReqs []*RPCReq, isBatch bool) ([]*RPCRes, error) { + // we are concerned about network error rates, so we record 1 request independently of how many are in the batch + b.networkRequestsSlidingWindow.Incr() + + translatedReqs := make(map[string]*RPCReq, len(rpcReqs)) + // translate consensus_getReceipts to receipts target + // right now we only support non-batched + if isBatch { + for _, rpcReq := range rpcReqs { + if rpcReq.Method == ConsensusGetReceiptsMethod { + return nil, ErrConsensusGetReceiptsCantBeBatched + } + } + } else { + for _, rpcReq := range rpcReqs { + if rpcReq.Method == ConsensusGetReceiptsMethod { + translatedReqs[string(rpcReq.ID)] = rpcReq + rpcReq.Method = b.receiptsTarget + var reqParams []rpc.BlockNumberOrHash + err := json.Unmarshal(rpcReq.Params, &reqParams) + if err != nil { + return nil, ErrInvalidRequest("invalid request") + } + + var translatedParams []byte + switch rpcReq.Method { + case ReceiptsTargetDebugGetRawReceipts, + ReceiptsTargetEthGetTransactionReceipts, + ReceiptsTargetParityGetTransactionReceipts: + // conventional methods use an array of strings having either block number or block hash + // i.e. ["0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b"] + params := make([]string, 1) + if reqParams[0].BlockNumber != nil { + params[0] = reqParams[0].BlockNumber.String() + } else { + params[0] = reqParams[0].BlockHash.Hex() + } + translatedParams = mustMarshalJSON(params) + case ReceiptsTargetAlchemyGetTransactionReceipts: + // alchemy uses an array of object with either block number or block hash + // i.e. [{ blockHash: "0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b" }] + params := make([]BlockHashOrNumberParameter, 1) + if reqParams[0].BlockNumber != nil { + params[0].BlockNumber = reqParams[0].BlockNumber + } else { + params[0].BlockHash = reqParams[0].BlockHash + } + translatedParams = mustMarshalJSON(params) + default: + return nil, ErrConsensusGetReceiptsInvalidTarget + } + + rpcReq.Params = translatedParams + } + } } -} -func (b *Backend) doForward(ctx context.Context, rpcReqs []*RPCReq, isBatch bool) ([]*RPCRes, error) { isSingleElementBatch := len(rpcReqs) == 1 // Single element batches are unwrapped before being sent // since Alchemy handles single requests better than batches. - var body []byte if isSingleElementBatch { body = mustMarshalJSON(rpcReqs[0]) @@ -380,6 +516,8 @@ func (b *Backend) doForward(ctx context.Context, rpcReqs []*RPCReq, isBatch bool httpReq, err := http.NewRequestWithContext(ctx, "POST", b.rpcURL, bytes.NewReader(body)) if err != nil { + b.networkErrorsSlidingWindow.Incr() + RecordBackendNetworkErrorRateSlidingWindow(b, b.ErrorRate()) return nil, wrapErr(err, "error creating backend request") } @@ -397,8 +535,11 @@ func (b *Backend) doForward(ctx context.Context, rpcReqs []*RPCReq, isBatch bool httpReq.Header.Set("content-type", "application/json") httpReq.Header.Set("X-Forwarded-For", xForwardedFor) + start := time.Now() httpRes, err := b.client.DoLimited(httpReq) if err != nil { + b.networkErrorsSlidingWindow.Incr() + RecordBackendNetworkErrorRateSlidingWindow(b, b.ErrorRate()) return nil, wrapErr(err, "error in backend request") } @@ -416,48 +557,106 @@ func (b *Backend) doForward(ctx context.Context, rpcReqs []*RPCReq, isBatch bool // Alchemy returns a 400 on bad JSONs, so handle that case if httpRes.StatusCode != 200 && httpRes.StatusCode != 400 { + b.networkErrorsSlidingWindow.Incr() + RecordBackendNetworkErrorRateSlidingWindow(b, b.ErrorRate()) return nil, fmt.Errorf("response code %d", httpRes.StatusCode) } defer httpRes.Body.Close() - resB, err := io.ReadAll(io.LimitReader(httpRes.Body, b.maxResponseSize)) + resB, err := io.ReadAll(LimitReader(httpRes.Body, b.maxResponseSize)) + if errors.Is(err, ErrLimitReaderOverLimit) { + return nil, ErrBackendResponseTooLarge + } if err != nil { + b.networkErrorsSlidingWindow.Incr() + RecordBackendNetworkErrorRateSlidingWindow(b, b.ErrorRate()) return nil, wrapErr(err, "error reading response body") } - var res []*RPCRes + var rpcRes []*RPCRes if isSingleElementBatch { var singleRes RPCRes if err := json.Unmarshal(resB, &singleRes); err != nil { return nil, ErrBackendBadResponse } - res = []*RPCRes{ + rpcRes = []*RPCRes{ &singleRes, } } else { - if err := json.Unmarshal(resB, &res); err != nil { + if err := json.Unmarshal(resB, &rpcRes); err != nil { // Infura may return a single JSON-RPC response if, for example, the batch contains a request for an unsupported method if responseIsNotBatched(resB) { + b.networkErrorsSlidingWindow.Incr() + RecordBackendNetworkErrorRateSlidingWindow(b, b.ErrorRate()) return nil, ErrBackendUnexpectedJSONRPC } + b.networkErrorsSlidingWindow.Incr() + RecordBackendNetworkErrorRateSlidingWindow(b, b.ErrorRate()) return nil, ErrBackendBadResponse } } - if len(rpcReqs) != len(res) { + if len(rpcReqs) != len(rpcRes) { + b.networkErrorsSlidingWindow.Incr() + RecordBackendNetworkErrorRateSlidingWindow(b, b.ErrorRate()) return nil, ErrBackendUnexpectedJSONRPC } // capture the HTTP status code in the response. this will only // ever be 400 given the status check on line 318 above. if httpRes.StatusCode != 200 { - for _, res := range res { + for _, res := range rpcRes { res.Error.HTTPErrorCode = httpRes.StatusCode } } + duration := time.Since(start) + b.latencySlidingWindow.Add(float64(duration)) + RecordBackendNetworkLatencyAverageSlidingWindow(b, time.Duration(b.latencySlidingWindow.Avg())) + RecordBackendNetworkErrorRateSlidingWindow(b, b.ErrorRate()) + + // enrich the response with the actual request method + for _, res := range rpcRes { + translatedReq, exist := translatedReqs[string(res.ID)] + if exist { + res.Result = ConsensusGetReceiptsResult{ + Method: translatedReq.Method, + Result: res.Result, + } + } + } - sortBatchRPCResponse(rpcReqs, res) - return res, nil + sortBatchRPCResponse(rpcReqs, rpcRes) + + return rpcRes, nil +} + +// IsHealthy checks if the backend is able to serve traffic, based on dynamic parameters +func (b *Backend) IsHealthy() bool { + errorRate := b.ErrorRate() + avgLatency := time.Duration(b.latencySlidingWindow.Avg()) + if errorRate >= b.maxErrorRateThreshold { + return false + } + if avgLatency >= b.maxLatencyThreshold { + return false + } + return true +} + +// ErrorRate returns the instant error rate of the backend +func (b *Backend) ErrorRate() (errorRate float64) { + // we only really start counting the error rate after a minimum of 10 requests + // this is to avoid false positives when the backend is just starting up + if b.networkRequestsSlidingWindow.Sum() >= 10 { + errorRate = b.networkErrorsSlidingWindow.Sum() / b.networkRequestsSlidingWindow.Sum() + } + return errorRate +} + +// IsDegraded checks if the backend is serving traffic in a degraded state (i.e. used as a last resource) +func (b *Backend) IsDegraded() bool { + avgLatency := time.Duration(b.latencySlidingWindow.Avg()) + return avgLatency >= b.maxDegradedLatencyThreshold } func responseIsNotBatched(b []byte) bool { @@ -484,59 +683,133 @@ func sortBatchRPCResponse(req []*RPCReq, res []*RPCRes) { } type BackendGroup struct { - Name string - Backends []*Backend + Name string + Backends []*Backend + Consensus *ConsensusPoller } -func (b *BackendGroup) Forward(ctx context.Context, rpcReqs []*RPCReq, isBatch bool) ([]*RPCRes, error) { +func (bg *BackendGroup) Forward(ctx context.Context, rpcReqs []*RPCReq, isBatch bool) ([]*RPCRes, string, error) { if len(rpcReqs) == 0 { - return nil, nil + return nil, "", nil } - rpcRequestsTotal.Inc() + backends := bg.Backends + + overriddenResponses := make([]*indexedReqRes, 0) + rewrittenReqs := make([]*RPCReq, 0, len(rpcReqs)) - for _, back := range b.Backends { - res, err := back.Forward(ctx, rpcReqs, isBatch) - if errors.Is(err, ErrMethodNotWhitelisted) { - return nil, err + if bg.Consensus != nil { + // When `consensus_aware` is set to `true`, the backend group acts as a load balancer + // serving traffic from any backend that agrees in the consensus group + backends = bg.loadBalancedConsensusGroup() + + // We also rewrite block tags to enforce compliance with consensus + rctx := RewriteContext{ + latest: bg.Consensus.GetLatestBlockNumber(), + safe: bg.Consensus.GetSafeBlockNumber(), + finalized: bg.Consensus.GetFinalizedBlockNumber(), + maxBlockRange: bg.Consensus.maxBlockRange, } - if errors.Is(err, ErrBackendOffline) { - log.Warn( - "skipping offline backend", - "name", back.Name, - "auth", GetAuthCtx(ctx), - "req_id", GetReqID(ctx), - ) - continue + + for i, req := range rpcReqs { + res := RPCRes{JSONRPC: JSONRPCVersion, ID: req.ID} + result, err := RewriteTags(rctx, req, &res) + switch result { + case RewriteOverrideError: + overriddenResponses = append(overriddenResponses, &indexedReqRes{ + index: i, + req: req, + res: &res, + }) + if errors.Is(err, ErrRewriteBlockOutOfRange) { + res.Error = ErrBlockOutOfRange + } else if errors.Is(err, ErrRewriteRangeTooLarge) { + res.Error = ErrInvalidParams( + fmt.Sprintf("block range greater than %d max", rctx.maxBlockRange), + ) + } else { + res.Error = ErrParseErr + } + case RewriteOverrideResponse: + overriddenResponses = append(overriddenResponses, &indexedReqRes{ + index: i, + req: req, + res: &res, + }) + case RewriteOverrideRequest, RewriteNone: + rewrittenReqs = append(rewrittenReqs, req) + } } - if errors.Is(err, ErrBackendOverCapacity) { - log.Warn( - "skipping over-capacity backend", - "name", back.Name, - "auth", GetAuthCtx(ctx), - "req_id", GetReqID(ctx), - ) - continue + rpcReqs = rewrittenReqs + } + + rpcRequestsTotal.Inc() + + for _, back := range backends { + res := make([]*RPCRes, 0) + var err error + + servedBy := fmt.Sprintf("%s/%s", bg.Name, back.Name) + + if len(rpcReqs) > 0 { + res, err = back.Forward(ctx, rpcReqs, isBatch) + if errors.Is(err, ErrConsensusGetReceiptsCantBeBatched) || + errors.Is(err, ErrConsensusGetReceiptsInvalidTarget) || + errors.Is(err, ErrMethodNotWhitelisted) { + return nil, "", err + } + if errors.Is(err, ErrBackendResponseTooLarge) { + return nil, servedBy, err + } + if errors.Is(err, ErrBackendOffline) { + log.Warn( + "skipping offline backend", + "name", back.Name, + "auth", GetAuthCtx(ctx), + "req_id", GetReqID(ctx), + ) + continue + } + if errors.Is(err, ErrBackendOverCapacity) { + log.Warn( + "skipping over-capacity backend", + "name", back.Name, + "auth", GetAuthCtx(ctx), + "req_id", GetReqID(ctx), + ) + continue + } + if err != nil { + log.Error( + "error forwarding request to backend", + "name", back.Name, + "req_id", GetReqID(ctx), + "auth", GetAuthCtx(ctx), + "err", err, + ) + continue + } } - if err != nil { - log.Error( - "error forwarding request to backend", - "name", back.Name, - "req_id", GetReqID(ctx), - "auth", GetAuthCtx(ctx), - "err", err, - ) - continue + + // re-apply overridden responses + for _, ov := range overriddenResponses { + if len(res) > 0 { + // insert ov.res at position ov.index + res = append(res[:ov.index], append([]*RPCRes{ov.res}, res[ov.index:]...)...) + } else { + res = append(res, ov.res) + } } - return res, nil + + return res, servedBy, nil } RecordUnserviceableRequest(ctx, RPCRequestSourceHTTP) - return nil, ErrNoBackends + return nil, "", ErrNoBackends } -func (b *BackendGroup) ProxyWS(ctx context.Context, clientConn *websocket.Conn, methodWhitelist *StringSet) (*WSProxier, error) { - for _, back := range b.Backends { +func (bg *BackendGroup) ProxyWS(ctx context.Context, clientConn *websocket.Conn, methodWhitelist *StringSet) (*WSProxier, error) { + for _, back := range bg.Backends { proxier, err := back.ProxyWS(clientConn, methodWhitelist) if errors.Is(err, ErrBackendOffline) { log.Warn( @@ -572,6 +845,46 @@ func (b *BackendGroup) ProxyWS(ctx context.Context, clientConn *websocket.Conn, return nil, ErrNoBackends } +func (bg *BackendGroup) loadBalancedConsensusGroup() []*Backend { + cg := bg.Consensus.GetConsensusGroup() + + backendsHealthy := make([]*Backend, 0, len(cg)) + backendsDegraded := make([]*Backend, 0, len(cg)) + // separate into healthy, degraded and unhealthy backends + for _, be := range cg { + // unhealthy are filtered out and not attempted + if !be.IsHealthy() { + continue + } + if be.IsDegraded() { + backendsDegraded = append(backendsDegraded, be) + continue + } + backendsHealthy = append(backendsHealthy, be) + } + + // shuffle both slices + r := rand.New(rand.NewSource(time.Now().UnixNano())) + r.Shuffle(len(backendsHealthy), func(i, j int) { + backendsHealthy[i], backendsHealthy[j] = backendsHealthy[j], backendsHealthy[i] + }) + r.Shuffle(len(backendsDegraded), func(i, j int) { + backendsDegraded[i], backendsDegraded[j] = backendsDegraded[j], backendsDegraded[i] + }) + + // healthy are put into a priority position + // degraded backends are used as fallback + backendsHealthy = append(backendsHealthy, backendsDegraded...) + + return backendsHealthy +} + +func (bg *BackendGroup) Shutdown() { + if bg.Consensus != nil { + bg.Consensus.Shutdown() + } +} + func calcBackoff(i int) time.Duration { jitter := float64(rand.Int63n(250)) ms := math.Min(math.Pow(2, float64(i))*1000+jitter, 3000) @@ -581,9 +894,12 @@ func calcBackoff(i int) time.Duration { type WSProxier struct { backend *Backend clientConn *websocket.Conn + clientConnMu sync.Mutex backendConn *websocket.Conn + backendConnMu sync.Mutex methodWhitelist *StringSet - clientConnMu sync.Mutex + readTimeout time.Duration + writeTimeout time.Duration } func NewWSProxier(backend *Backend, clientConn, backendConn *websocket.Conn, methodWhitelist *StringSet) *WSProxier { @@ -592,28 +908,30 @@ func NewWSProxier(backend *Backend, clientConn, backendConn *websocket.Conn, met clientConn: clientConn, backendConn: backendConn, methodWhitelist: methodWhitelist, + readTimeout: defaultWSReadTimeout, + writeTimeout: defaultWSWriteTimeout, } } -func (w *WSProxier) Proxy(ctx context.Context, proxyServerLimiter *WSServerLimiter) error { +func (w *WSProxier) Proxy(ctx context.Context) error { errC := make(chan error, 2) - go w.clientPump(ctx, proxyServerLimiter, errC) + go w.clientPump(ctx, errC) go w.backendPump(ctx, errC) err := <-errC w.close() return err } -func (w *WSProxier) clientPump(ctx context.Context, proxyServerLimiter *WSServerLimiter, errC chan error) { +func (w *WSProxier) clientPump(ctx context.Context, errC chan error) { for { // Block until we get a message. msgType, msg, err := w.clientConn.ReadMessage() if err != nil { - errC <- err - if err := w.backendConn.WriteMessage(websocket.CloseMessage, formatWSError(err)); err != nil { + if err := w.writeBackendConn(websocket.CloseMessage, formatWSError(err)); err != nil { log.Error("error writing backendConn message", "err", err) + errC <- err + return } - return } RecordWSMessage(ctx, w.backend.Name, SourceClient) @@ -621,7 +939,7 @@ func (w *WSProxier) clientPump(ctx context.Context, proxyServerLimiter *WSServer // Route control messages to the backend. These don't // count towards the total RPC requests count. if msgType != websocket.TextMessage && msgType != websocket.BinaryMessage { - err := w.backendConn.WriteMessage(msgType, msg) + err := w.writeBackendConn(msgType, msg) if err != nil { errC <- err return @@ -631,25 +949,16 @@ func (w *WSProxier) clientPump(ctx context.Context, proxyServerLimiter *WSServer rpcRequestsTotal.Inc() - // truncate message if it's too big - if len(msg) > int(proxyServerLimiter.maxBodySize) { - msg = msg[:proxyServerLimiter.maxBodySize] - } - // Don't bother sending invalid requests to the backend, // just handle them here. req, err := w.prepareClientMsg(msg) - isRateLimit := proxyServerLimiter.isLimited("") - if err != nil || isRateLimit { + if err != nil { var id json.RawMessage method := MethodUnknown if req != nil { id = req.ID method = req.Method } - if err == nil { - err = errors.New(ErrOverRateLimit.Message) - } log.Info( "error preparing client message", "auth", GetAuthCtx(ctx), @@ -680,19 +989,6 @@ func (w *WSProxier) clientPump(ctx context.Context, proxyServerLimiter *WSServer continue } - if req.Method == "eth_sendRawTransaction" { - if err := proxyServerLimiter.isRateLimitSender(ctx, req); err != nil { - RecordRPCError(ctx, BackendProxyd, "eth_sendRawTransaction", err) - msg = mustMarshalJSON(NewRPCErrorRes(req.ID, err)) - err = w.writeClientConn(msgType, msg) - if err != nil { - errC <- err - return - } - continue - } - } - RecordRPCForward(ctx, w.backend.Name, req.Method, RPCRequestSourceWS) log.Info( "forwarded WS message to backend", @@ -701,7 +997,7 @@ func (w *WSProxier) clientPump(ctx context.Context, proxyServerLimiter *WSServer "req_id", GetReqID(ctx), ) - err = w.backendConn.WriteMessage(msgType, msg) + err = w.writeBackendConn(msgType, msg) if err != nil { errC <- err return @@ -714,11 +1010,11 @@ func (w *WSProxier) backendPump(ctx context.Context, errC chan error) { // Block until we get a message. msgType, msg, err := w.backendConn.ReadMessage() if err != nil { - errC <- err if err := w.writeClientConn(websocket.CloseMessage, formatWSError(err)); err != nil { log.Error("error writing clientConn message", "err", err) + errC <- err + return } - return } RecordWSMessage(ctx, w.backend.Name, SourceBackend) @@ -733,11 +1029,6 @@ func (w *WSProxier) backendPump(ctx context.Context, errC chan error) { continue } - // truncate message if it's too big - if len(msg) > int(w.backend.maxResponseSize) { - msg = msg[:w.backend.maxResponseSize] - } - res, err := w.parseBackendMsg(msg) if err != nil { var id json.RawMessage @@ -777,9 +1068,6 @@ func (w *WSProxier) backendPump(ctx context.Context, errC chan error) { func (w *WSProxier) close() { w.clientConn.Close() w.backendConn.Close() - if err := w.backend.rateLimiter.DecBackendWSConns(w.backend.Name); err != nil { - log.Error("error decrementing backend ws conns", "name", w.backend.Name, "err", err) - } activeBackendWsConnsGauge.WithLabelValues(w.backend.Name).Dec() } @@ -789,18 +1077,10 @@ func (w *WSProxier) prepareClientMsg(msg []byte) (*RPCReq, error) { return nil, err } - if err = ValidateRPCReq(req); err != nil { - return nil, err - } - if !w.methodWhitelist.Has(req.Method) { return req, ErrMethodNotWhitelisted } - if w.backend.IsRateLimited() { - return req, ErrBackendOverCapacity - } - return req, nil } @@ -815,8 +1095,23 @@ func (w *WSProxier) parseBackendMsg(msg []byte) (*RPCRes, error) { func (w *WSProxier) writeClientConn(msgType int, msg []byte) error { w.clientConnMu.Lock() + defer w.clientConnMu.Unlock() + if err := w.clientConn.SetWriteDeadline(time.Now().Add(w.writeTimeout)); err != nil { + log.Error("ws client write timeout", "err", err) + return err + } err := w.clientConn.WriteMessage(msgType, msg) - w.clientConnMu.Unlock() + return err +} + +func (w *WSProxier) writeBackendConn(msgType int, msg []byte) error { + w.backendConnMu.Lock() + defer w.backendConnMu.Unlock() + if err := w.backendConn.SetWriteDeadline(time.Now().Add(w.writeTimeout)); err != nil { + log.Error("ws backend write timeout", "err", err) + return err + } + err := w.backendConn.WriteMessage(msgType, msg) return err } @@ -902,6 +1197,6 @@ func RecordBatchRPCForward(ctx context.Context, backendName string, reqs []*RPCR } func stripXFF(xff string) string { - ipList := strings.Split(xff, ", ") + ipList := strings.Split(xff, ",") return strings.TrimSpace(ipList[0]) } diff --git a/go/proxyd/backend_rate_limiter.go b/go/proxyd/backend_rate_limiter.go deleted file mode 100644 index 3cc6faecc3..0000000000 --- a/go/proxyd/backend_rate_limiter.go +++ /dev/null @@ -1,286 +0,0 @@ -package proxyd - -import ( - "context" - "crypto/rand" - "encoding/hex" - "fmt" - "math" - "sync" - "time" - - "github.com/ethereum/go-ethereum/log" - "github.com/go-redis/redis/v8" -) - -const MaxRPSScript = ` -local current -current = redis.call("incr", KEYS[1]) -if current == 1 then - redis.call("expire", KEYS[1], 1) -end -return current -` - -const MaxConcurrentWSConnsScript = ` -redis.call("sadd", KEYS[1], KEYS[2]) -local total = 0 -local scanres = redis.call("sscan", KEYS[1], 0) -for _, k in ipairs(scanres[2]) do - local value = redis.call("get", k) - if value then - total = total + value - end -end - -if total < tonumber(ARGV[1]) then - redis.call("incr", KEYS[2]) - redis.call("expire", KEYS[2], 300) - return true -end - -return false -` - -type BackendRateLimiter interface { - IsBackendOnline(name string) (bool, error) - SetBackendOffline(name string, duration time.Duration) error - IncBackendRPS(name string) (int, error) - IncBackendWSConns(name string, max int) (bool, error) - DecBackendWSConns(name string) error - FlushBackendWSConns(names []string) error -} - -type RedisBackendRateLimiter struct { - rdb *redis.Client - randID string - touchKeys map[string]time.Duration - tkMtx sync.Mutex -} - -func NewRedisRateLimiter(rdb *redis.Client) BackendRateLimiter { - out := &RedisBackendRateLimiter{ - rdb: rdb, - randID: randStr(20), - touchKeys: make(map[string]time.Duration), - } - go out.touch() - return out -} - -func (r *RedisBackendRateLimiter) IsBackendOnline(name string) (bool, error) { - exists, err := r.rdb.Exists(context.Background(), fmt.Sprintf("backend:%s:offline", name)).Result() - if err != nil { - RecordRedisError("IsBackendOnline") - return false, wrapErr(err, "error getting backend availability") - } - - return exists == 0, nil -} - -func (r *RedisBackendRateLimiter) SetBackendOffline(name string, duration time.Duration) error { - if duration == 0 { - return nil - } - err := r.rdb.SetEX( - context.Background(), - fmt.Sprintf("backend:%s:offline", name), - 1, - duration, - ).Err() - if err != nil { - RecordRedisError("SetBackendOffline") - return wrapErr(err, "error setting backend unavailable") - } - return nil -} - -func (r *RedisBackendRateLimiter) IncBackendRPS(name string) (int, error) { - cmd := r.rdb.Eval( - context.Background(), - MaxRPSScript, - []string{fmt.Sprintf("backend:%s:ratelimit", name)}, - ) - rps, err := cmd.Int() - if err != nil { - RecordRedisError("IncBackendRPS") - return -1, wrapErr(err, "error upserting backend rate limit") - } - return rps, nil -} - -func (r *RedisBackendRateLimiter) IncBackendWSConns(name string, max int) (bool, error) { - connsKey := fmt.Sprintf("proxy:%s:wsconns:%s", r.randID, name) - r.tkMtx.Lock() - r.touchKeys[connsKey] = 5 * time.Minute - r.tkMtx.Unlock() - cmd := r.rdb.Eval( - context.Background(), - MaxConcurrentWSConnsScript, - []string{ - fmt.Sprintf("backend:%s:proxies", name), - connsKey, - }, - max, - ) - incremented, err := cmd.Bool() - // false gets coerced to redis.nil, see https://redis.io/commands/eval#conversion-between-lua-and-redis-data-types - if err == redis.Nil { - return false, nil - } - if err != nil { - RecordRedisError("IncBackendWSConns") - return false, wrapErr(err, "error incrementing backend ws conns") - } - return incremented, nil -} - -func (r *RedisBackendRateLimiter) DecBackendWSConns(name string) error { - connsKey := fmt.Sprintf("proxy:%s:wsconns:%s", r.randID, name) - err := r.rdb.Decr(context.Background(), connsKey).Err() - if err != nil { - RecordRedisError("DecBackendWSConns") - return wrapErr(err, "error decrementing backend ws conns") - } - return nil -} - -func (r *RedisBackendRateLimiter) FlushBackendWSConns(names []string) error { - ctx := context.Background() - for _, name := range names { - connsKey := fmt.Sprintf("proxy:%s:wsconns:%s", r.randID, name) - err := r.rdb.SRem( - ctx, - fmt.Sprintf("backend:%s:proxies", name), - connsKey, - ).Err() - if err != nil { - return wrapErr(err, "error flushing backend ws conns") - } - err = r.rdb.Del(ctx, connsKey).Err() - if err != nil { - return wrapErr(err, "error flushing backend ws conns") - } - } - return nil -} - -func (r *RedisBackendRateLimiter) touch() { - for { - r.tkMtx.Lock() - for key, dur := range r.touchKeys { - if err := r.rdb.Expire(context.Background(), key, dur).Err(); err != nil { - RecordRedisError("touch") - log.Error("error touching redis key", "key", key, "err", err) - } - } - r.tkMtx.Unlock() - time.Sleep(5 * time.Second) - } -} - -type LocalBackendRateLimiter struct { - deadBackends map[string]time.Time - backendRPS map[string]int - backendWSConns map[string]int - mtx sync.RWMutex -} - -func NewLocalBackendRateLimiter() *LocalBackendRateLimiter { - out := &LocalBackendRateLimiter{ - deadBackends: make(map[string]time.Time), - backendRPS: make(map[string]int), - backendWSConns: make(map[string]int), - } - go out.clear() - return out -} - -func (l *LocalBackendRateLimiter) IsBackendOnline(name string) (bool, error) { - l.mtx.RLock() - defer l.mtx.RUnlock() - return l.deadBackends[name].Before(time.Now()), nil -} - -func (l *LocalBackendRateLimiter) SetBackendOffline(name string, duration time.Duration) error { - l.mtx.Lock() - defer l.mtx.Unlock() - l.deadBackends[name] = time.Now().Add(duration) - return nil -} - -func (l *LocalBackendRateLimiter) IncBackendRPS(name string) (int, error) { - l.mtx.Lock() - defer l.mtx.Unlock() - l.backendRPS[name] += 1 - return l.backendRPS[name], nil -} - -func (l *LocalBackendRateLimiter) IncBackendWSConns(name string, max int) (bool, error) { - l.mtx.Lock() - defer l.mtx.Unlock() - if l.backendWSConns[name] == max { - return false, nil - } - l.backendWSConns[name] += 1 - return true, nil -} - -func (l *LocalBackendRateLimiter) DecBackendWSConns(name string) error { - l.mtx.Lock() - defer l.mtx.Unlock() - if l.backendWSConns[name] == 0 { - return nil - } - l.backendWSConns[name] -= 1 - return nil -} - -func (l *LocalBackendRateLimiter) FlushBackendWSConns(names []string) error { - return nil -} - -func (l *LocalBackendRateLimiter) clear() { - for { - time.Sleep(time.Second) - l.mtx.Lock() - l.backendRPS = make(map[string]int) - l.mtx.Unlock() - } -} - -func randStr(l int) string { - b := make([]byte, l) - if _, err := rand.Read(b); err != nil { - panic(err) - } - return hex.EncodeToString(b) -} - -type NoopBackendRateLimiter struct{} - -var noopBackendRateLimiter = &NoopBackendRateLimiter{} - -func (n *NoopBackendRateLimiter) IsBackendOnline(name string) (bool, error) { - return true, nil -} - -func (n *NoopBackendRateLimiter) SetBackendOffline(name string, duration time.Duration) error { - return nil -} - -func (n *NoopBackendRateLimiter) IncBackendRPS(name string) (int, error) { - return math.MaxInt, nil -} - -func (n *NoopBackendRateLimiter) IncBackendWSConns(name string, max int) (bool, error) { - return true, nil -} - -func (n *NoopBackendRateLimiter) DecBackendWSConns(name string) error { - return nil -} - -func (n *NoopBackendRateLimiter) FlushBackendWSConns(names []string) error { - return nil -} diff --git a/go/proxyd/backend_test.go b/go/proxyd/backend_test.go new file mode 100644 index 0000000000..7be23bfed7 --- /dev/null +++ b/go/proxyd/backend_test.go @@ -0,0 +1,21 @@ +package proxyd + +import ( + "github.com/stretchr/testify/assert" + "testing" +) + +func TestStripXFF(t *testing.T) { + tests := []struct { + in, out string + }{ + {"1.2.3, 4.5.6, 7.8.9", "1.2.3"}, + {"1.2.3,4.5.6", "1.2.3"}, + {" 1.2.3 , 4.5.6 ", "1.2.3"}, + } + + for _, test := range tests { + actual := stripXFF(test.in) + assert.Equal(t, test.out, actual) + } +} diff --git a/go/proxyd/cache.go b/go/proxyd/cache.go index 73b7fd890a..a93a393713 100644 --- a/go/proxyd/cache.go +++ b/go/proxyd/cache.go @@ -2,9 +2,13 @@ package proxyd import ( "context" + "encoding/json" + "strings" "time" - "github.com/go-redis/redis/v8" + "github.com/ethereum/go-ethereum/rpc" + "github.com/redis/go-redis/v9" + "github.com/golang/snappy" lru "github.com/hashicorp/golang-lru" ) @@ -43,16 +47,24 @@ func (c *cache) Put(ctx context.Context, key string, value string) error { } type redisCache struct { - rdb *redis.Client + rdb *redis.Client + prefix string +} + +func newRedisCache(rdb *redis.Client, prefix string) *redisCache { + return &redisCache{rdb, prefix} } -func newRedisCache(rdb *redis.Client) *redisCache { - return &redisCache{rdb} +func (c *redisCache) namespaced(key string) string { + if c.prefix == "" { + return key + } + return strings.Join([]string{c.prefix, key}, ":") } func (c *redisCache) Get(ctx context.Context, key string) (string, error) { start := time.Now() - val, err := c.rdb.Get(ctx, key).Result() + val, err := c.rdb.Get(ctx, c.namespaced(key)).Result() redisCacheDurationSumm.WithLabelValues("GET").Observe(float64(time.Since(start).Milliseconds())) if err == redis.Nil { @@ -66,7 +78,7 @@ func (c *redisCache) Get(ctx context.Context, key string) (string, error) { func (c *redisCache) Put(ctx context.Context, key string, value string) error { start := time.Now() - err := c.rdb.SetEX(ctx, key, value, redisTTL).Err() + err := c.rdb.SetEx(ctx, c.namespaced(key), value, redisTTL).Err() redisCacheDurationSumm.WithLabelValues("SETEX").Observe(float64(time.Since(start).Milliseconds())) if err != nil { @@ -103,9 +115,6 @@ func (c *cacheWithCompression) Put(ctx context.Context, key string, value string return c.cache.Put(ctx, key, string(encodedVal)) } -type GetLatestBlockNumFn func(ctx context.Context) (uint64, error) -type GetLatestGasPriceFn func(ctx context.Context) (uint64, error) - type RPCCache interface { GetRPC(ctx context.Context, req *RPCReq) (*RPCRes, error) PutRPC(ctx context.Context, req *RPCReq, res *RPCRes) error @@ -116,15 +125,40 @@ type rpcCache struct { handlers map[string]RPCMethodHandler } -func newRPCCache(cache Cache, getLatestBlockNumFn GetLatestBlockNumFn, getLatestGasPriceFn GetLatestGasPriceFn, numBlockConfirmations int) RPCCache { +func newRPCCache(cache Cache) RPCCache { + staticHandler := &StaticMethodHandler{cache: cache} + debugGetRawReceiptsHandler := &StaticMethodHandler{cache: cache, + filterGet: func(req *RPCReq) bool { + // cache only if the request is for a block hash + + var p []rpc.BlockNumberOrHash + err := json.Unmarshal(req.Params, &p) + if err != nil { + return false + } + if len(p) != 1 { + return false + } + return p[0].BlockHash != nil + }, + filterPut: func(req *RPCReq, res *RPCRes) bool { + // don't cache if response contains 0 receipts + rawReceipts, ok := res.Result.([]interface{}) + if !ok { + return false + } + return len(rawReceipts) > 0 + }, + } handlers := map[string]RPCMethodHandler{ - "eth_chainId": &StaticMethodHandler{}, - "net_version": &StaticMethodHandler{}, - "eth_getBlockByNumber": &EthGetBlockByNumberMethodHandler{cache, getLatestBlockNumFn, numBlockConfirmations}, - "eth_getBlockRange": &EthGetBlockRangeMethodHandler{cache, getLatestBlockNumFn, numBlockConfirmations}, - "eth_blockNumber": &EthBlockNumberMethodHandler{getLatestBlockNumFn}, - "eth_gasPrice": &EthGasPriceMethodHandler{getLatestGasPriceFn}, - "eth_call": &EthCallMethodHandler{cache, getLatestBlockNumFn, numBlockConfirmations}, + "eth_chainId": staticHandler, + "net_version": staticHandler, + "eth_getBlockTransactionCountByHash": staticHandler, + "eth_getUncleCountByBlockHash": staticHandler, + "eth_getBlockByHash": staticHandler, + "eth_getTransactionByBlockHashAndIndex": staticHandler, + "eth_getUncleByBlockHashAndIndex": staticHandler, + "debug_getRawReceipts": debugGetRawReceiptsHandler, } return &rpcCache{ cache: cache, @@ -138,14 +172,16 @@ func (c *rpcCache) GetRPC(ctx context.Context, req *RPCReq) (*RPCRes, error) { return nil, nil } res, err := handler.GetRPCMethod(ctx, req) - if res != nil { - if res == nil { - RecordCacheMiss(req.Method) - } else { - RecordCacheHit(req.Method) - } + if err != nil { + RecordCacheError(req.Method) + return nil, err + } + if res == nil { + RecordCacheMiss(req.Method) + } else { + RecordCacheHit(req.Method) } - return res, err + return res, nil } func (c *rpcCache) PutRPC(ctx context.Context, req *RPCReq, res *RPCRes) error { diff --git a/go/proxyd/cache_test.go b/go/proxyd/cache_test.go index 11c277bb1d..da47e7c4d6 100644 --- a/go/proxyd/cache_test.go +++ b/go/proxyd/cache_test.go @@ -2,23 +2,16 @@ package proxyd import ( "context" - "math" "strconv" "testing" "github.com/stretchr/testify/require" ) -const numBlockConfirmations = 10 - func TestRPCCacheImmutableRPCs(t *testing.T) { - const blockHead = math.MaxUint64 ctx := context.Background() - getBlockNum := func(ctx context.Context) (uint64, error) { - return blockHead, nil - } - cache := newRPCCache(newMemoryCache(), getBlockNum, nil, numBlockConfirmations) + cache := newRPCCache(newMemoryCache()) ID := []byte(strconv.Itoa(1)) rpcs := []struct { @@ -55,276 +48,72 @@ func TestRPCCacheImmutableRPCs(t *testing.T) { { req: &RPCReq{ JSONRPC: "2.0", - Method: "eth_getBlockByNumber", - Params: []byte(`["0x1", false]`), - ID: ID, - }, - res: &RPCRes{ - JSONRPC: "2.0", - Result: `{"difficulty": "0x1", "number": "0x1"}`, - ID: ID, - }, - name: "eth_getBlockByNumber", - }, - { - req: &RPCReq{ - JSONRPC: "2.0", - Method: "eth_getBlockByNumber", - Params: []byte(`["earliest", false]`), + Method: "eth_getBlockTransactionCountByHash", + Params: mustMarshalJSON([]string{"0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"}), ID: ID, }, res: &RPCRes{ JSONRPC: "2.0", - Result: `{"difficulty": "0x1", "number": "0x1"}`, + Result: `{"eth_getBlockTransactionCountByHash":"!"}`, ID: ID, }, - name: "eth_getBlockByNumber earliest", + name: "eth_getBlockTransactionCountByHash", }, { req: &RPCReq{ JSONRPC: "2.0", - Method: "eth_getBlockRange", - Params: []byte(`["0x1", "0x2", false]`), + Method: "eth_getUncleCountByBlockHash", + Params: mustMarshalJSON([]string{"0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"}), ID: ID, }, res: &RPCRes{ JSONRPC: "2.0", - Result: `[{"number": "0x1"}, {"number": "0x2"}]`, + Result: `{"eth_getUncleCountByBlockHash":"!"}`, ID: ID, }, - name: "eth_getBlockRange", + name: "eth_getUncleCountByBlockHash", }, { req: &RPCReq{ JSONRPC: "2.0", - Method: "eth_getBlockRange", - Params: []byte(`["earliest", "0x2", false]`), + Method: "eth_getBlockByHash", + Params: mustMarshalJSON([]string{"0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", "false"}), ID: ID, }, res: &RPCRes{ JSONRPC: "2.0", - Result: `[{"number": "0x1"}, {"number": "0x2"}]`, + Result: `{"eth_getBlockByHash":"!"}`, ID: ID, }, - name: "eth_getBlockRange earliest", + name: "eth_getBlockByHash", }, - } - - for _, rpc := range rpcs { - t.Run(rpc.name, func(t *testing.T) { - err := cache.PutRPC(ctx, rpc.req, rpc.res) - require.NoError(t, err) - - cachedRes, err := cache.GetRPC(ctx, rpc.req) - require.NoError(t, err) - require.Equal(t, rpc.res, cachedRes) - }) - } -} - -func TestRPCCacheBlockNumber(t *testing.T) { - var blockHead uint64 = 0x1000 - var gasPrice uint64 = 0x100 - ctx := context.Background() - ID := []byte(strconv.Itoa(1)) - - getGasPrice := func(ctx context.Context) (uint64, error) { - return gasPrice, nil - } - getBlockNum := func(ctx context.Context) (uint64, error) { - return blockHead, nil - } - cache := newRPCCache(newMemoryCache(), getBlockNum, getGasPrice, numBlockConfirmations) - - req := &RPCReq{ - JSONRPC: "2.0", - Method: "eth_blockNumber", - ID: ID, - } - res := &RPCRes{ - JSONRPC: "2.0", - Result: `0x1000`, - ID: ID, - } - - err := cache.PutRPC(ctx, req, res) - require.NoError(t, err) - - cachedRes, err := cache.GetRPC(ctx, req) - require.NoError(t, err) - require.Equal(t, res, cachedRes) - - blockHead = 0x1001 - cachedRes, err = cache.GetRPC(ctx, req) - require.NoError(t, err) - require.Equal(t, &RPCRes{JSONRPC: "2.0", Result: `0x1001`, ID: ID}, cachedRes) -} - -func TestRPCCacheGasPrice(t *testing.T) { - var blockHead uint64 = 0x1000 - var gasPrice uint64 = 0x100 - ctx := context.Background() - ID := []byte(strconv.Itoa(1)) - - getGasPrice := func(ctx context.Context) (uint64, error) { - return gasPrice, nil - } - getBlockNum := func(ctx context.Context) (uint64, error) { - return blockHead, nil - } - cache := newRPCCache(newMemoryCache(), getBlockNum, getGasPrice, numBlockConfirmations) - - req := &RPCReq{ - JSONRPC: "2.0", - Method: "eth_gasPrice", - ID: ID, - } - res := &RPCRes{ - JSONRPC: "2.0", - Result: `0x100`, - ID: ID, - } - - err := cache.PutRPC(ctx, req, res) - require.NoError(t, err) - - cachedRes, err := cache.GetRPC(ctx, req) - require.NoError(t, err) - require.Equal(t, res, cachedRes) - - gasPrice = 0x101 - cachedRes, err = cache.GetRPC(ctx, req) - require.NoError(t, err) - require.Equal(t, &RPCRes{JSONRPC: "2.0", Result: `0x101`, ID: ID}, cachedRes) -} - -func TestRPCCacheUnsupportedMethod(t *testing.T) { - const blockHead = math.MaxUint64 - ctx := context.Background() - - fn := func(ctx context.Context) (uint64, error) { - return blockHead, nil - } - cache := newRPCCache(newMemoryCache(), fn, nil, numBlockConfirmations) - ID := []byte(strconv.Itoa(1)) - - req := &RPCReq{ - JSONRPC: "2.0", - Method: "eth_syncing", - ID: ID, - } - res := &RPCRes{ - JSONRPC: "2.0", - Result: false, - ID: ID, - } - - err := cache.PutRPC(ctx, req, res) - require.NoError(t, err) - - cachedRes, err := cache.GetRPC(ctx, req) - require.NoError(t, err) - require.Nil(t, cachedRes) -} - -func TestRPCCacheEthGetBlockByNumber(t *testing.T) { - ctx := context.Background() - - var blockHead uint64 - fn := func(ctx context.Context) (uint64, error) { - return blockHead, nil - } - makeCache := func() RPCCache { return newRPCCache(newMemoryCache(), fn, nil, numBlockConfirmations) } - ID := []byte(strconv.Itoa(1)) - - req := &RPCReq{ - JSONRPC: "2.0", - Method: "eth_getBlockByNumber", - Params: []byte(`["0xa", false]`), - ID: ID, - } - res := &RPCRes{ - JSONRPC: "2.0", - Result: `{"difficulty": "0x1", "number": "0x1"}`, - ID: ID, - } - req2 := &RPCReq{ - JSONRPC: "2.0", - Method: "eth_getBlockByNumber", - Params: []byte(`["0xb", false]`), - ID: ID, - } - res2 := &RPCRes{ - JSONRPC: "2.0", - Result: `{"difficulty": "0x2", "number": "0x2"}`, - ID: ID, - } - - t.Run("set multiple finalized blocks", func(t *testing.T) { - blockHead = 100 - cache := makeCache() - require.NoError(t, cache.PutRPC(ctx, req, res)) - require.NoError(t, cache.PutRPC(ctx, req2, res2)) - cachedRes, err := cache.GetRPC(ctx, req) - require.NoError(t, err) - require.Equal(t, res, cachedRes) - cachedRes, err = cache.GetRPC(ctx, req2) - require.NoError(t, err) - require.Equal(t, res2, cachedRes) - }) - - t.Run("unconfirmed block", func(t *testing.T) { - blockHead = 0xc - cache := makeCache() - require.NoError(t, cache.PutRPC(ctx, req, res)) - cachedRes, err := cache.GetRPC(ctx, req) - require.NoError(t, err) - require.Nil(t, cachedRes) - }) -} - -func TestRPCCacheEthGetBlockByNumberForRecentBlocks(t *testing.T) { - ctx := context.Background() - - var blockHead uint64 = 2 - fn := func(ctx context.Context) (uint64, error) { - return blockHead, nil - } - cache := newRPCCache(newMemoryCache(), fn, nil, numBlockConfirmations) - ID := []byte(strconv.Itoa(1)) - - rpcs := []struct { - req *RPCReq - res *RPCRes - name string - }{ { req: &RPCReq{ JSONRPC: "2.0", - Method: "eth_getBlockByNumber", - Params: []byte(`["latest", false]`), + Method: "eth_getUncleByBlockHashAndIndex", + Params: mustMarshalJSON([]string{"0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238", "0x90"}), ID: ID, }, res: &RPCRes{ JSONRPC: "2.0", - Result: `{"difficulty": "0x1", "number": "0x1"}`, + Result: `{"eth_getUncleByBlockHashAndIndex":"!"}`, ID: ID, }, - name: "latest block", + name: "eth_getUncleByBlockHashAndIndex", }, { req: &RPCReq{ JSONRPC: "2.0", - Method: "eth_getBlockByNumber", - Params: []byte(`["pending", false]`), + Method: "debug_getRawReceipts", + Params: mustMarshalJSON([]string{"0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b"}), ID: ID, }, res: &RPCRes{ JSONRPC: "2.0", - Result: `{"difficulty": "0x1", "number": "0x1"}`, + Result: []interface{}{"a"}, ID: ID, }, - name: "pending block", + name: "debug_getRawReceipts", }, } @@ -335,288 +124,90 @@ func TestRPCCacheEthGetBlockByNumberForRecentBlocks(t *testing.T) { cachedRes, err := cache.GetRPC(ctx, rpc.req) require.NoError(t, err) - require.Nil(t, cachedRes) + require.Equal(t, rpc.res, cachedRes) }) } } -func TestRPCCacheEthGetBlockByNumberInvalidRequest(t *testing.T) { - ctx := context.Background() - - const blockHead = math.MaxUint64 - fn := func(ctx context.Context) (uint64, error) { - return blockHead, nil - } - cache := newRPCCache(newMemoryCache(), fn, nil, numBlockConfirmations) - ID := []byte(strconv.Itoa(1)) - - req := &RPCReq{ - JSONRPC: "2.0", - Method: "eth_getBlockByNumber", - Params: []byte(`["0x1"]`), // missing required boolean param - ID: ID, - } - res := &RPCRes{ - JSONRPC: "2.0", - Result: `{"difficulty": "0x1", "number": "0x1"}`, - ID: ID, - } - - err := cache.PutRPC(ctx, req, res) - require.Error(t, err) - - cachedRes, err := cache.GetRPC(ctx, req) - require.Error(t, err) - require.Nil(t, cachedRes) -} - -func TestRPCCacheEthGetBlockRange(t *testing.T) { +func TestRPCCacheUnsupportedMethod(t *testing.T) { ctx := context.Background() - var blockHead uint64 - fn := func(ctx context.Context) (uint64, error) { - return blockHead, nil - } - makeCache := func() RPCCache { return newRPCCache(newMemoryCache(), fn, nil, numBlockConfirmations) } - ID := []byte(strconv.Itoa(1)) - - t.Run("finalized block", func(t *testing.T) { - req := &RPCReq{ - JSONRPC: "2.0", - Method: "eth_getBlockRange", - Params: []byte(`["0x1", "0x10", false]`), - ID: ID, - } - res := &RPCRes{ - JSONRPC: "2.0", - Result: `[{"number": "0x1"}, {"number": "0x10"}]`, - ID: ID, - } - blockHead = 0x1000 - cache := makeCache() - require.NoError(t, cache.PutRPC(ctx, req, res)) - cachedRes, err := cache.GetRPC(ctx, req) - require.NoError(t, err) - require.Equal(t, res, cachedRes) - }) - - t.Run("unconfirmed block", func(t *testing.T) { - cache := makeCache() - req := &RPCReq{ - JSONRPC: "2.0", - Method: "eth_getBlockRange", - Params: []byte(`["0x1", "0x1000", false]`), - ID: ID, - } - res := &RPCRes{ - JSONRPC: "2.0", - Result: `[{"number": "0x1"}, {"number": "0x2"}]`, - ID: ID, - } - require.NoError(t, cache.PutRPC(ctx, req, res)) - cachedRes, err := cache.GetRPC(ctx, req) - require.NoError(t, err) - require.Nil(t, cachedRes) - }) -} - -func TestRPCCacheEthGetBlockRangeForRecentBlocks(t *testing.T) { - ctx := context.Background() - - var blockHead uint64 = 0x1000 - fn := func(ctx context.Context) (uint64, error) { - return blockHead, nil - } - cache := newRPCCache(newMemoryCache(), fn, nil, numBlockConfirmations) + cache := newRPCCache(newMemoryCache()) ID := []byte(strconv.Itoa(1)) rpcs := []struct { req *RPCReq - res *RPCRes name string }{ { + name: "eth_syncing", req: &RPCReq{ JSONRPC: "2.0", - Method: "eth_getBlockRange", - Params: []byte(`["0x1", "latest", false]`), - ID: ID, - }, - res: &RPCRes{ - JSONRPC: "2.0", - Result: `[{"number": "0x1"}, {"number": "0x2"}]`, + Method: "eth_syncing", ID: ID, }, - name: "latest block", }, { + name: "eth_blockNumber", req: &RPCReq{ JSONRPC: "2.0", - Method: "eth_getBlockRange", - Params: []byte(`["0x1", "pending", false]`), - ID: ID, - }, - res: &RPCRes{ - JSONRPC: "2.0", - Result: `[{"number": "0x1"}, {"number": "0x2"}]`, + Method: "eth_blockNumber", ID: ID, }, - name: "pending block", }, { + name: "eth_getBlockByNumber", req: &RPCReq{ JSONRPC: "2.0", - Method: "eth_getBlockRange", - Params: []byte(`["latest", "0x1000", false]`), - ID: ID, - }, - res: &RPCRes{ - JSONRPC: "2.0", - Result: `[{"number": "0x1"}, {"number": "0x2"}]`, + Method: "eth_getBlockByNumber", ID: ID, }, - name: "latest block 2", }, - } - - for _, rpc := range rpcs { - t.Run(rpc.name, func(t *testing.T) { - err := cache.PutRPC(ctx, rpc.req, rpc.res) - require.NoError(t, err) - - cachedRes, err := cache.GetRPC(ctx, rpc.req) - require.NoError(t, err) - require.Nil(t, cachedRes) - }) - } -} - -func TestRPCCacheEthGetBlockRangeInvalidRequest(t *testing.T) { - ctx := context.Background() - - const blockHead = math.MaxUint64 - fn := func(ctx context.Context) (uint64, error) { - return blockHead, nil - } - cache := newRPCCache(newMemoryCache(), fn, nil, numBlockConfirmations) - ID := []byte(strconv.Itoa(1)) - - rpcs := []struct { - req *RPCReq - res *RPCRes - name string - }{ { + name: "eth_getBlockRange", req: &RPCReq{ JSONRPC: "2.0", Method: "eth_getBlockRange", - Params: []byte(`["0x1", "0x2"]`), // missing required boolean param ID: ID, }, - res: &RPCRes{ + }, + { + name: "eth_gasPrice", + req: &RPCReq{ JSONRPC: "2.0", - Result: `[{"number": "0x1"}, {"number": "0x2"}]`, + Method: "eth_gasPrice", ID: ID, }, - name: "missing boolean param", }, { + name: "eth_call", req: &RPCReq{ JSONRPC: "2.0", - Method: "eth_getBlockRange", - Params: []byte(`["abc", "0x2", true]`), // invalid block hex + Method: "eth_gasPrice", ID: ID, }, - res: &RPCRes{ + }, + { + req: &RPCReq{ JSONRPC: "2.0", - Result: `[{"number": "0x1"}, {"number": "0x2"}]`, + Method: "debug_getRawReceipts", + Params: mustMarshalJSON([]string{"0x100"}), ID: ID, }, - name: "invalid block hex", + name: "debug_getRawReceipts", }, } for _, rpc := range rpcs { t.Run(rpc.name, func(t *testing.T) { - err := cache.PutRPC(ctx, rpc.req, rpc.res) - require.Error(t, err) + fakeval := mustMarshalJSON([]string{rpc.name}) + err := cache.PutRPC(ctx, rpc.req, &RPCRes{Result: fakeval}) + require.NoError(t, err) cachedRes, err := cache.GetRPC(ctx, rpc.req) - require.Error(t, err) + require.NoError(t, err) require.Nil(t, cachedRes) }) } -} - -func TestRPCCacheEthCall(t *testing.T) { - ctx := context.Background() - - var blockHead uint64 - fn := func(ctx context.Context) (uint64, error) { - return blockHead, nil - } - - makeCache := func() RPCCache { return newRPCCache(newMemoryCache(), fn, nil, numBlockConfirmations) } - ID := []byte(strconv.Itoa(1)) - - req := &RPCReq{ - JSONRPC: "2.0", - Method: "eth_call", - Params: []byte(`[{"to": "0xDEADBEEF", "data": "0x1"}, "0x10"]`), - ID: ID, - } - res := &RPCRes{ - JSONRPC: "2.0", - Result: `0x0`, - ID: ID, - } - - t.Run("finalized block", func(t *testing.T) { - blockHead = 0x100 - cache := makeCache() - err := cache.PutRPC(ctx, req, res) - require.NoError(t, err) - cachedRes, err := cache.GetRPC(ctx, req) - require.NoError(t, err) - require.Equal(t, res, cachedRes) - }) - - t.Run("unconfirmed block", func(t *testing.T) { - blockHead = 0x10 - cache := makeCache() - require.NoError(t, cache.PutRPC(ctx, req, res)) - cachedRes, err := cache.GetRPC(ctx, req) - require.NoError(t, err) - require.Nil(t, cachedRes) - }) - - t.Run("latest block", func(t *testing.T) { - blockHead = 0x100 - req := &RPCReq{ - JSONRPC: "2.0", - Method: "eth_call", - Params: []byte(`[{"to": "0xDEADBEEF", "data": "0x1"}, "latest"]`), - ID: ID, - } - cache := makeCache() - require.NoError(t, cache.PutRPC(ctx, req, res)) - cachedRes, err := cache.GetRPC(ctx, req) - require.NoError(t, err) - require.Nil(t, cachedRes) - }) - t.Run("pending block", func(t *testing.T) { - blockHead = 0x100 - req := &RPCReq{ - JSONRPC: "2.0", - Method: "eth_call", - Params: []byte(`[{"to": "0xDEADBEEF", "data": "0x1"}, "pending"]`), - ID: ID, - } - cache := makeCache() - require.NoError(t, cache.PutRPC(ctx, req, res)) - cachedRes, err := cache.GetRPC(ctx, req) - require.NoError(t, err) - require.Nil(t, cachedRes) - }) } diff --git a/go/proxyd/cmd/proxyd/main.go b/go/proxyd/cmd/proxyd/main.go index c184a1d3fd..10a1518cdb 100644 --- a/go/proxyd/cmd/proxyd/main.go +++ b/go/proxyd/cmd/proxyd/main.go @@ -1,8 +1,12 @@ package main import ( + "net" + "net/http" + "net/http/pprof" "os" "os/signal" + "strconv" "syscall" "github.com/BurntSushi/toml" @@ -52,7 +56,18 @@ func main() { ), ) - shutdown, err := proxyd.Start(config) + if config.Server.EnablePprof { + log.Info("starting pprof", "addr", "0.0.0.0", "port", "6060") + pprofSrv := StartPProf("0.0.0.0", 6060) + log.Info("started pprof server", "addr", pprofSrv.Addr) + defer func() { + if err := pprofSrv.Close(); err != nil { + log.Error("failed to stop pprof server", "err", err) + } + }() + } + + _, shutdown, err := proxyd.Start(config) if err != nil { log.Crit("error starting proxyd", "err", err) } @@ -63,3 +78,25 @@ func main() { log.Info("caught signal, shutting down", "signal", recvSig) shutdown() } + +func StartPProf(hostname string, port int) *http.Server { + mux := http.NewServeMux() + + // have to do below to support multiple servers, since the + // pprof import only uses DefaultServeMux + mux.Handle("/debug/pprof/", http.HandlerFunc(pprof.Index)) + mux.Handle("/debug/pprof/cmdline", http.HandlerFunc(pprof.Cmdline)) + mux.Handle("/debug/pprof/profile", http.HandlerFunc(pprof.Profile)) + mux.Handle("/debug/pprof/symbol", http.HandlerFunc(pprof.Symbol)) + mux.Handle("/debug/pprof/trace", http.HandlerFunc(pprof.Trace)) + + addr := net.JoinHostPort(hostname, strconv.Itoa(port)) + srv := &http.Server{ + Handler: mux, + Addr: addr, + } + + go srv.ListenAndServe() + + return srv +} diff --git a/go/proxyd/config.go b/go/proxyd/config.go index 7a004f09e5..fefca9f6e5 100644 --- a/go/proxyd/config.go +++ b/go/proxyd/config.go @@ -2,6 +2,7 @@ package proxyd import ( "fmt" + "math/big" "os" "strings" "time" @@ -23,16 +24,17 @@ type ServerConfig struct { EnableRequestLog bool `toml:"enable_request_log"` MaxRequestBodyLogLen int `toml:"max_request_body_log_len"` + EnablePprof bool `toml:"enable_pprof"` + EnableXServedByHeader bool `toml:"enable_served_by_header"` } type CacheConfig struct { - Enabled bool `toml:"enabled"` - BlockSyncRPCURL string `toml:"block_sync_rpc_url"` - NumBlockConfirmations int `toml:"num_block_confirmations"` + Enabled bool `toml:"enabled"` } type RedisConfig struct { - URL string `toml:"url"` + URL string `toml:"url"` + Namespace string `toml:"namespace"` } type MetricsConfig struct { @@ -42,14 +44,13 @@ type MetricsConfig struct { } type RateLimitConfig struct { - UseRedis bool `toml:"use_redis"` - EnableBackendRateLimiter bool `toml:"enable_backend_rate_limiter"` - BaseRate int `toml:"base_rate"` - BaseInterval TOMLDuration `toml:"base_interval"` - ExemptOrigins []string `toml:"exempt_origins"` - ExemptUserAgents []string `toml:"exempt_user_agents"` - ErrorMessage string `toml:"error_message"` - MethodOverrides map[string]*RateLimitMethodOverride `toml:"method_overrides"` + UseRedis bool `toml:"use_redis"` + BaseRate int `toml:"base_rate"` + BaseInterval TOMLDuration `toml:"base_interval"` + ExemptOrigins []string `toml:"exempt_origins"` + ExemptUserAgents []string `toml:"exempt_user_agents"` + ErrorMessage string `toml:"error_message"` + MethodOverrides map[string]*RateLimitMethodOverride `toml:"method_overrides"` } type RateLimitMethodOverride struct { @@ -71,10 +72,13 @@ func (t *TOMLDuration) UnmarshalText(b []byte) error { } type BackendOptions struct { - ResponseTimeoutSeconds int `toml:"response_timeout_seconds"` - MaxResponseSizeBytes int64 `toml:"max_response_size_bytes"` - MaxRetries int `toml:"max_retries"` - OutOfServiceSeconds int `toml:"out_of_service_seconds"` + ResponseTimeoutSeconds int `toml:"response_timeout_seconds"` + MaxResponseSizeBytes int64 `toml:"max_response_size_bytes"` + MaxRetries int `toml:"max_retries"` + OutOfServiceSeconds int `toml:"out_of_service_seconds"` + MaxDegradedLatencyThreshold TOMLDuration `toml:"max_degraded_latency_threshold"` + MaxLatencyThreshold TOMLDuration `toml:"max_latency_threshold"` + MaxErrorRateThreshold float64 `toml:"max_error_rate_threshold"` } type BackendConfig struct { @@ -82,18 +86,36 @@ type BackendConfig struct { Password string `toml:"password"` RPCURL string `toml:"rpc_url"` WSURL string `toml:"ws_url"` + WSPort int `toml:"ws_port"` MaxRPS int `toml:"max_rps"` MaxWSConns int `toml:"max_ws_conns"` CAFile string `toml:"ca_file"` ClientCertFile string `toml:"client_cert_file"` ClientKeyFile string `toml:"client_key_file"` StripTrailingXFF bool `toml:"strip_trailing_xff"` + + ConsensusSkipPeerCountCheck bool `toml:"consensus_skip_peer_count"` + ConsensusForcedCandidate bool `toml:"consensus_forced_candidate"` + ConsensusReceiptsTarget string `toml:"consensus_receipts_target"` } type BackendsConfig map[string]*BackendConfig type BackendGroupConfig struct { Backends []string `toml:"backends"` + + ConsensusAware bool `toml:"consensus_aware"` + ConsensusAsyncHandler string `toml:"consensus_handler"` + + ConsensusBanPeriod TOMLDuration `toml:"consensus_ban_period"` + ConsensusMaxUpdateThreshold TOMLDuration `toml:"consensus_max_update_threshold"` + ConsensusMaxBlockLag uint64 `toml:"consensus_max_block_lag"` + ConsensusMaxBlockRange uint64 `toml:"consensus_max_block_range"` + ConsensusMinPeerCount int `toml:"consensus_min_peer_count"` + + ConsensusHA bool `toml:"consensus_ha"` + ConsensusHAHeartbeatInterval TOMLDuration `toml:"consensus_ha_heartbeat_interval"` + ConsensusHALockPeriod TOMLDuration `toml:"consensus_ha_lock_period"` } type BackendGroupsConfig map[string]*BackendGroupConfig @@ -108,9 +130,10 @@ type BatchConfig struct { // SenderRateLimitConfig configures the sender-based rate limiter // for eth_sendRawTransaction requests. type SenderRateLimitConfig struct { - Enabled bool - Interval TOMLDuration - Limit int + Enabled bool + Interval TOMLDuration + Limit int + AllowedChainIds []*big.Int `toml:"allowed_chain_ids"` } type Config struct { diff --git a/go/proxyd/consensus_poller.go b/go/proxyd/consensus_poller.go new file mode 100644 index 0000000000..c72992cbd5 --- /dev/null +++ b/go/proxyd/consensus_poller.go @@ -0,0 +1,683 @@ +package proxyd + +import ( + "context" + "fmt" + "strconv" + "strings" + "sync" + "time" + + "github.com/ethereum/go-ethereum/common/hexutil" + + "github.com/ethereum/go-ethereum/log" +) + +const ( + PollerInterval = 1 * time.Second +) + +type OnConsensusBroken func() + +// ConsensusPoller checks the consensus state for each member of a BackendGroup +// resolves the highest common block for multiple nodes, and reconciles the consensus +// in case of block hash divergence to minimize re-orgs +type ConsensusPoller struct { + ctx context.Context + cancelFunc context.CancelFunc + listeners []OnConsensusBroken + + backendGroup *BackendGroup + backendState map[*Backend]*backendState + consensusGroupMux sync.Mutex + consensusGroup []*Backend + + tracker ConsensusTracker + asyncHandler ConsensusAsyncHandler + + minPeerCount uint64 + banPeriod time.Duration + maxUpdateThreshold time.Duration + maxBlockLag uint64 + maxBlockRange uint64 +} + +type backendState struct { + backendStateMux sync.Mutex + + latestBlockNumber hexutil.Uint64 + latestBlockHash string + safeBlockNumber hexutil.Uint64 + finalizedBlockNumber hexutil.Uint64 + + peerCount uint64 + inSync bool + + lastUpdate time.Time + + bannedUntil time.Time +} + +func (bs *backendState) IsBanned() bool { + return time.Now().Before(bs.bannedUntil) +} + +// GetConsensusGroup returns the backend members that are agreeing in a consensus +func (cp *ConsensusPoller) GetConsensusGroup() []*Backend { + defer cp.consensusGroupMux.Unlock() + cp.consensusGroupMux.Lock() + + g := make([]*Backend, len(cp.consensusGroup)) + copy(g, cp.consensusGroup) + + return g +} + +// GetLatestBlockNumber returns the `latest` agreed block number in a consensus +func (ct *ConsensusPoller) GetLatestBlockNumber() hexutil.Uint64 { + return ct.tracker.GetLatestBlockNumber() +} + +// GetSafeBlockNumber returns the `safe` agreed block number in a consensus +func (ct *ConsensusPoller) GetSafeBlockNumber() hexutil.Uint64 { + return ct.tracker.GetSafeBlockNumber() +} + +// GetFinalizedBlockNumber returns the `finalized` agreed block number in a consensus +func (ct *ConsensusPoller) GetFinalizedBlockNumber() hexutil.Uint64 { + return ct.tracker.GetFinalizedBlockNumber() +} + +func (cp *ConsensusPoller) Shutdown() { + cp.asyncHandler.Shutdown() +} + +// ConsensusAsyncHandler controls the asynchronous polling mechanism, interval and shutdown +type ConsensusAsyncHandler interface { + Init() + Shutdown() +} + +// NoopAsyncHandler allows fine control updating the consensus +type NoopAsyncHandler struct{} + +func NewNoopAsyncHandler() ConsensusAsyncHandler { + log.Warn("using NewNoopAsyncHandler") + return &NoopAsyncHandler{} +} +func (ah *NoopAsyncHandler) Init() {} +func (ah *NoopAsyncHandler) Shutdown() {} + +// PollerAsyncHandler asynchronously updates each individual backend and the group consensus +type PollerAsyncHandler struct { + ctx context.Context + cp *ConsensusPoller +} + +func NewPollerAsyncHandler(ctx context.Context, cp *ConsensusPoller) ConsensusAsyncHandler { + return &PollerAsyncHandler{ + ctx: ctx, + cp: cp, + } +} +func (ah *PollerAsyncHandler) Init() { + // create the individual backend pollers + for _, be := range ah.cp.backendGroup.Backends { + go func(be *Backend) { + for { + timer := time.NewTimer(PollerInterval) + ah.cp.UpdateBackend(ah.ctx, be) + + select { + case <-timer.C: + case <-ah.ctx.Done(): + timer.Stop() + return + } + } + }(be) + } + + // create the group consensus poller + go func() { + for { + timer := time.NewTimer(PollerInterval) + ah.cp.UpdateBackendGroupConsensus(ah.ctx) + + select { + case <-timer.C: + case <-ah.ctx.Done(): + timer.Stop() + return + } + } + }() +} +func (ah *PollerAsyncHandler) Shutdown() { + ah.cp.cancelFunc() +} + +type ConsensusOpt func(cp *ConsensusPoller) + +func WithTracker(tracker ConsensusTracker) ConsensusOpt { + return func(cp *ConsensusPoller) { + cp.tracker = tracker + } +} + +func WithAsyncHandler(asyncHandler ConsensusAsyncHandler) ConsensusOpt { + return func(cp *ConsensusPoller) { + cp.asyncHandler = asyncHandler + } +} + +func WithListener(listener OnConsensusBroken) ConsensusOpt { + return func(cp *ConsensusPoller) { + cp.AddListener(listener) + } +} + +func (cp *ConsensusPoller) AddListener(listener OnConsensusBroken) { + cp.listeners = append(cp.listeners, listener) +} + +func (cp *ConsensusPoller) ClearListeners() { + cp.listeners = []OnConsensusBroken{} +} + +func WithBanPeriod(banPeriod time.Duration) ConsensusOpt { + return func(cp *ConsensusPoller) { + cp.banPeriod = banPeriod + } +} + +func WithMaxUpdateThreshold(maxUpdateThreshold time.Duration) ConsensusOpt { + return func(cp *ConsensusPoller) { + cp.maxUpdateThreshold = maxUpdateThreshold + } +} + +func WithMaxBlockLag(maxBlockLag uint64) ConsensusOpt { + return func(cp *ConsensusPoller) { + cp.maxBlockLag = maxBlockLag + } +} + +func WithMaxBlockRange(maxBlockRange uint64) ConsensusOpt { + return func(cp *ConsensusPoller) { + cp.maxBlockRange = maxBlockRange + } +} + +func WithMinPeerCount(minPeerCount uint64) ConsensusOpt { + return func(cp *ConsensusPoller) { + cp.minPeerCount = minPeerCount + } +} + +func NewConsensusPoller(bg *BackendGroup, opts ...ConsensusOpt) *ConsensusPoller { + ctx, cancelFunc := context.WithCancel(context.Background()) + + state := make(map[*Backend]*backendState, len(bg.Backends)) + + cp := &ConsensusPoller{ + ctx: ctx, + cancelFunc: cancelFunc, + backendGroup: bg, + backendState: state, + + banPeriod: 5 * time.Minute, + maxUpdateThreshold: 30 * time.Second, + maxBlockLag: 8, // 8*12 seconds = 96 seconds ~ 1.6 minutes + minPeerCount: 3, + } + + for _, opt := range opts { + opt(cp) + } + + if cp.tracker == nil { + cp.tracker = NewInMemoryConsensusTracker() + } + + if cp.asyncHandler == nil { + cp.asyncHandler = NewPollerAsyncHandler(ctx, cp) + } + + cp.Reset() + cp.asyncHandler.Init() + + return cp +} + +// UpdateBackend refreshes the consensus state of a single backend +func (cp *ConsensusPoller) UpdateBackend(ctx context.Context, be *Backend) { + bs := cp.getBackendState(be) + RecordConsensusBackendBanned(be, bs.IsBanned()) + + if bs.IsBanned() { + log.Debug("skipping backend - banned", "backend", be.Name) + return + } + + // if backend is not healthy state we'll only resume checking it after ban + if !be.IsHealthy() && !be.forcedCandidate { + log.Warn("backend banned - not healthy", "backend", be.Name) + cp.Ban(be) + return + } + + inSync, err := cp.isInSync(ctx, be) + RecordConsensusBackendInSync(be, err == nil && inSync) + if err != nil { + log.Warn("error updating backend sync state", "name", be.Name, "err", err) + } + + var peerCount uint64 + if !be.skipPeerCountCheck { + peerCount, err = cp.getPeerCount(ctx, be) + if err != nil { + log.Warn("error updating backend peer count", "name", be.Name, "err", err) + } + RecordConsensusBackendPeerCount(be, peerCount) + } + + latestBlockNumber, latestBlockHash, err := cp.fetchBlock(ctx, be, "latest") + if err != nil { + log.Warn("error updating backend - latest block", "name", be.Name, "err", err) + } + + safeBlockNumber, _, err := cp.fetchBlock(ctx, be, "safe") + if err != nil { + log.Warn("error updating backend - safe block", "name", be.Name, "err", err) + } + + finalizedBlockNumber, _, err := cp.fetchBlock(ctx, be, "finalized") + if err != nil { + log.Warn("error updating backend - finalized block", "name", be.Name, "err", err) + } + + RecordConsensusBackendUpdateDelay(be, bs.lastUpdate) + + changed := cp.setBackendState(be, peerCount, inSync, + latestBlockNumber, latestBlockHash, + safeBlockNumber, finalizedBlockNumber) + + RecordBackendLatestBlock(be, latestBlockNumber) + RecordBackendSafeBlock(be, safeBlockNumber) + RecordBackendFinalizedBlock(be, finalizedBlockNumber) + + if changed { + log.Debug("backend state updated", + "name", be.Name, + "peerCount", peerCount, + "inSync", inSync, + "latestBlockNumber", latestBlockNumber, + "latestBlockHash", latestBlockHash, + "safeBlockNumber", safeBlockNumber, + "finalizedBlockNumber", finalizedBlockNumber, + "lastUpdate", bs.lastUpdate) + } + + // sanity check for latest, safe and finalized block tags + expectedBlockTags := cp.checkExpectedBlockTags( + latestBlockNumber, + bs.safeBlockNumber, safeBlockNumber, + bs.finalizedBlockNumber, finalizedBlockNumber) + + RecordBackendUnexpectedBlockTags(be, !expectedBlockTags) + + if !expectedBlockTags && !be.forcedCandidate { + log.Warn("backend banned - unexpected block tags", + "backend", be.Name, + "oldFinalized", bs.finalizedBlockNumber, + "finalizedBlockNumber", finalizedBlockNumber, + "oldSafe", bs.safeBlockNumber, + "safeBlockNumber", safeBlockNumber, + "latestBlockNumber", latestBlockNumber, + ) + cp.Ban(be) + } +} + +// checkExpectedBlockTags for unexpected conditions on block tags +// - finalized block number should never decrease +// - safe block number should never decrease +// - finalized block should be <= safe block <= latest block +func (cp *ConsensusPoller) checkExpectedBlockTags( + currentLatest hexutil.Uint64, + oldSafe hexutil.Uint64, currentSafe hexutil.Uint64, + oldFinalized hexutil.Uint64, currentFinalized hexutil.Uint64) bool { + return currentFinalized >= oldFinalized && + currentSafe >= oldSafe && + currentFinalized <= currentSafe && + currentSafe <= currentLatest +} + +// UpdateBackendGroupConsensus resolves the current group consensus based on the state of the backends +func (cp *ConsensusPoller) UpdateBackendGroupConsensus(ctx context.Context) { + // get the latest block number from the tracker + currentConsensusBlockNumber := cp.GetLatestBlockNumber() + + // get the candidates for the consensus group + candidates := cp.getConsensusCandidates() + + // update the lowest latest block number and hash + // the lowest safe block number + // the lowest finalized block number + var lowestLatestBlock hexutil.Uint64 + var lowestLatestBlockHash string + var lowestFinalizedBlock hexutil.Uint64 + var lowestSafeBlock hexutil.Uint64 + for _, bs := range candidates { + if lowestLatestBlock == 0 || bs.latestBlockNumber < lowestLatestBlock { + lowestLatestBlock = bs.latestBlockNumber + lowestLatestBlockHash = bs.latestBlockHash + } + if lowestFinalizedBlock == 0 || bs.finalizedBlockNumber < lowestFinalizedBlock { + lowestFinalizedBlock = bs.finalizedBlockNumber + } + if lowestSafeBlock == 0 || bs.safeBlockNumber < lowestSafeBlock { + lowestSafeBlock = bs.safeBlockNumber + } + } + + // find the proposed block among the candidates + // the proposed block needs have the same hash in the entire consensus group + proposedBlock := lowestLatestBlock + proposedBlockHash := lowestLatestBlockHash + hasConsensus := false + broken := false + + if lowestLatestBlock > currentConsensusBlockNumber { + log.Debug("validating consensus on block", "lowestLatestBlock", lowestLatestBlock) + } + + // if there is a block to propose, check if it is the same in all backends + if proposedBlock > 0 { + for !hasConsensus { + allAgreed := true + for be := range candidates { + actualBlockNumber, actualBlockHash, err := cp.fetchBlock(ctx, be, proposedBlock.String()) + if err != nil { + log.Warn("error updating backend", "name", be.Name, "err", err) + continue + } + if proposedBlockHash == "" { + proposedBlockHash = actualBlockHash + } + blocksDontMatch := (actualBlockNumber != proposedBlock) || (actualBlockHash != proposedBlockHash) + if blocksDontMatch { + if currentConsensusBlockNumber >= actualBlockNumber { + log.Warn("backend broke consensus", + "name", be.Name, + "actualBlockNumber", actualBlockNumber, + "actualBlockHash", actualBlockHash, + "proposedBlock", proposedBlock, + "proposedBlockHash", proposedBlockHash) + broken = true + } + allAgreed = false + break + } + } + if allAgreed { + hasConsensus = true + } else { + // walk one block behind and try again + proposedBlock -= 1 + proposedBlockHash = "" + log.Debug("no consensus, now trying", "block:", proposedBlock) + } + } + } + + if broken { + // propagate event to other interested parts, such as cache invalidator + for _, l := range cp.listeners { + l() + } + log.Info("consensus broken", + "currentConsensusBlockNumber", currentConsensusBlockNumber, + "proposedBlock", proposedBlock, + "proposedBlockHash", proposedBlockHash) + } + + // update tracker + cp.tracker.SetLatestBlockNumber(proposedBlock) + cp.tracker.SetSafeBlockNumber(lowestSafeBlock) + cp.tracker.SetFinalizedBlockNumber(lowestFinalizedBlock) + + // update consensus group + group := make([]*Backend, 0, len(candidates)) + consensusBackendsNames := make([]string, 0, len(candidates)) + filteredBackendsNames := make([]string, 0, len(cp.backendGroup.Backends)) + for _, be := range cp.backendGroup.Backends { + _, exist := candidates[be] + if exist { + group = append(group, be) + consensusBackendsNames = append(consensusBackendsNames, be.Name) + } else { + filteredBackendsNames = append(filteredBackendsNames, be.Name) + } + } + + cp.consensusGroupMux.Lock() + cp.consensusGroup = group + cp.consensusGroupMux.Unlock() + + RecordGroupConsensusLatestBlock(cp.backendGroup, proposedBlock) + RecordGroupConsensusSafeBlock(cp.backendGroup, lowestSafeBlock) + RecordGroupConsensusFinalizedBlock(cp.backendGroup, lowestFinalizedBlock) + + RecordGroupConsensusCount(cp.backendGroup, len(group)) + RecordGroupConsensusFilteredCount(cp.backendGroup, len(filteredBackendsNames)) + RecordGroupTotalCount(cp.backendGroup, len(cp.backendGroup.Backends)) + + log.Debug("group state", + "proposedBlock", proposedBlock, + "consensusBackends", strings.Join(consensusBackendsNames, ", "), + "filteredBackends", strings.Join(filteredBackendsNames, ", ")) +} + +// IsBanned checks if a specific backend is banned +func (cp *ConsensusPoller) IsBanned(be *Backend) bool { + bs := cp.backendState[be] + defer bs.backendStateMux.Unlock() + bs.backendStateMux.Lock() + return bs.IsBanned() +} + +// Ban bans a specific backend +func (cp *ConsensusPoller) Ban(be *Backend) { + if be.forcedCandidate { + return + } + + bs := cp.backendState[be] + defer bs.backendStateMux.Unlock() + bs.backendStateMux.Lock() + bs.bannedUntil = time.Now().Add(cp.banPeriod) + + // when we ban a node, we give it the chance to start from any block when it is back + bs.latestBlockNumber = 0 + bs.safeBlockNumber = 0 + bs.finalizedBlockNumber = 0 +} + +// Unban removes any bans from the backends +func (cp *ConsensusPoller) Unban(be *Backend) { + bs := cp.backendState[be] + defer bs.backendStateMux.Unlock() + bs.backendStateMux.Lock() + bs.bannedUntil = time.Now().Add(-10 * time.Hour) +} + +// Reset reset all backend states +func (cp *ConsensusPoller) Reset() { + for _, be := range cp.backendGroup.Backends { + cp.backendState[be] = &backendState{} + } +} + +// fetchBlock is a convenient wrapper to make a request to get a block directly from the backend +func (cp *ConsensusPoller) fetchBlock(ctx context.Context, be *Backend, block string) (blockNumber hexutil.Uint64, blockHash string, err error) { + var rpcRes RPCRes + err = be.ForwardRPC(ctx, &rpcRes, "67", "eth_getBlockByNumber", block, false) + if err != nil { + return 0, "", err + } + + jsonMap, ok := rpcRes.Result.(map[string]interface{}) + if !ok { + return 0, "", fmt.Errorf("unexpected response to eth_getBlockByNumber on backend %s", be.Name) + } + blockNumber = hexutil.Uint64(hexutil.MustDecodeUint64(jsonMap["number"].(string))) + blockHash = jsonMap["hash"].(string) + + return +} + +// getPeerCount is a convenient wrapper to retrieve the current peer count from the backend +func (cp *ConsensusPoller) getPeerCount(ctx context.Context, be *Backend) (count uint64, err error) { + var rpcRes RPCRes + err = be.ForwardRPC(ctx, &rpcRes, "67", "net_peerCount") + if err != nil { + return 0, err + } + + jsonMap, ok := rpcRes.Result.(string) + if !ok { + return 0, fmt.Errorf("unexpected response to net_peerCount on backend %s", be.Name) + } + + count = hexutil.MustDecodeUint64(jsonMap) + + return count, nil +} + +// isInSync is a convenient wrapper to check if the backend is in sync from the network +func (cp *ConsensusPoller) isInSync(ctx context.Context, be *Backend) (result bool, err error) { + var rpcRes RPCRes + err = be.ForwardRPC(ctx, &rpcRes, "67", "eth_syncing") + if err != nil { + return false, err + } + + var res bool + switch typed := rpcRes.Result.(type) { + case bool: + syncing := typed + res = !syncing + case string: + syncing, err := strconv.ParseBool(typed) + if err != nil { + return false, err + } + res = !syncing + default: + // result is a json when not in sync + res = false + } + + return res, nil +} + +// getBackendState creates a copy of backend state so that the caller can use it without locking +func (cp *ConsensusPoller) getBackendState(be *Backend) *backendState { + bs := cp.backendState[be] + defer bs.backendStateMux.Unlock() + bs.backendStateMux.Lock() + + return &backendState{ + latestBlockNumber: bs.latestBlockNumber, + latestBlockHash: bs.latestBlockHash, + safeBlockNumber: bs.safeBlockNumber, + finalizedBlockNumber: bs.finalizedBlockNumber, + peerCount: bs.peerCount, + inSync: bs.inSync, + lastUpdate: bs.lastUpdate, + bannedUntil: bs.bannedUntil, + } +} + +func (cp *ConsensusPoller) setBackendState(be *Backend, peerCount uint64, inSync bool, + latestBlockNumber hexutil.Uint64, latestBlockHash string, + safeBlockNumber hexutil.Uint64, + finalizedBlockNumber hexutil.Uint64) bool { + bs := cp.backendState[be] + bs.backendStateMux.Lock() + changed := bs.latestBlockHash != latestBlockHash + bs.peerCount = peerCount + bs.inSync = inSync + bs.latestBlockNumber = latestBlockNumber + bs.latestBlockHash = latestBlockHash + bs.finalizedBlockNumber = finalizedBlockNumber + bs.safeBlockNumber = safeBlockNumber + bs.lastUpdate = time.Now() + bs.backendStateMux.Unlock() + return changed +} + +// getConsensusCandidates find out what backends are the candidates to be in the consensus group +// and create a copy of current their state +// +// a candidate is a serving node within the following conditions: +// - not banned +// - healthy (network latency and error rate) +// - with minimum peer count +// - in sync +// - updated recently +// - not lagging latest block +func (cp *ConsensusPoller) getConsensusCandidates() map[*Backend]*backendState { + candidates := make(map[*Backend]*backendState, len(cp.backendGroup.Backends)) + + for _, be := range cp.backendGroup.Backends { + bs := cp.getBackendState(be) + if be.forcedCandidate { + candidates[be] = bs + continue + } + if bs.IsBanned() { + continue + } + if !be.IsHealthy() { + continue + } + if !be.skipPeerCountCheck && bs.peerCount < cp.minPeerCount { + continue + } + if !bs.inSync { + continue + } + if bs.lastUpdate.Add(cp.maxUpdateThreshold).Before(time.Now()) { + continue + } + + candidates[be] = bs + } + + // find the highest block, in order to use it defining the highest non-lagging ancestor block + var highestLatestBlock hexutil.Uint64 + for _, bs := range candidates { + if bs.latestBlockNumber > highestLatestBlock { + highestLatestBlock = bs.latestBlockNumber + } + } + + // find the highest common ancestor block + lagging := make([]*Backend, 0, len(candidates)) + for be, bs := range candidates { + // check if backend is lagging behind the highest block + if uint64(highestLatestBlock-bs.latestBlockNumber) > cp.maxBlockLag { + lagging = append(lagging, be) + } + } + + // remove lagging backends from the candidates + for _, be := range lagging { + delete(candidates, be) + } + + return candidates +} diff --git a/go/proxyd/consensus_tracker.go b/go/proxyd/consensus_tracker.go new file mode 100644 index 0000000000..158c31bdc6 --- /dev/null +++ b/go/proxyd/consensus_tracker.go @@ -0,0 +1,335 @@ +package proxyd + +import ( + "context" + "encoding/json" + "fmt" + "os" + "sync" + "time" + + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/log" + "github.com/go-redsync/redsync/v4" + "github.com/go-redsync/redsync/v4/redis/goredis/v9" + "github.com/redis/go-redis/v9" +) + +// ConsensusTracker abstracts how we store and retrieve the current consensus +// allowing it to be stored locally in-memory or in a shared Redis cluster +type ConsensusTracker interface { + GetLatestBlockNumber() hexutil.Uint64 + SetLatestBlockNumber(blockNumber hexutil.Uint64) + GetSafeBlockNumber() hexutil.Uint64 + SetSafeBlockNumber(blockNumber hexutil.Uint64) + GetFinalizedBlockNumber() hexutil.Uint64 + SetFinalizedBlockNumber(blockNumber hexutil.Uint64) +} + +// DTO to hold the current consensus state +type ConsensusTrackerState struct { + Latest hexutil.Uint64 `json:"latest"` + Safe hexutil.Uint64 `json:"safe"` + Finalized hexutil.Uint64 `json:"finalized"` +} + +func (ct *InMemoryConsensusTracker) update(o *ConsensusTrackerState) { + ct.mutex.Lock() + defer ct.mutex.Unlock() + + ct.state.Latest = o.Latest + ct.state.Safe = o.Safe + ct.state.Finalized = o.Finalized +} + +// InMemoryConsensusTracker store and retrieve in memory, async-safe +type InMemoryConsensusTracker struct { + mutex sync.Mutex + state *ConsensusTrackerState +} + +func NewInMemoryConsensusTracker() ConsensusTracker { + return &InMemoryConsensusTracker{ + mutex: sync.Mutex{}, + state: &ConsensusTrackerState{}, + } +} + +func (ct *InMemoryConsensusTracker) Valid() bool { + return ct.GetLatestBlockNumber() > 0 && + ct.GetSafeBlockNumber() > 0 && + ct.GetFinalizedBlockNumber() > 0 +} + +func (ct *InMemoryConsensusTracker) Behind(other *InMemoryConsensusTracker) bool { + return ct.GetLatestBlockNumber() < other.GetLatestBlockNumber() || + ct.GetSafeBlockNumber() < other.GetSafeBlockNumber() || + ct.GetFinalizedBlockNumber() < other.GetFinalizedBlockNumber() +} + +func (ct *InMemoryConsensusTracker) GetLatestBlockNumber() hexutil.Uint64 { + defer ct.mutex.Unlock() + ct.mutex.Lock() + + return ct.state.Latest +} + +func (ct *InMemoryConsensusTracker) SetLatestBlockNumber(blockNumber hexutil.Uint64) { + defer ct.mutex.Unlock() + ct.mutex.Lock() + + ct.state.Latest = blockNumber +} + +func (ct *InMemoryConsensusTracker) GetSafeBlockNumber() hexutil.Uint64 { + defer ct.mutex.Unlock() + ct.mutex.Lock() + + return ct.state.Safe +} + +func (ct *InMemoryConsensusTracker) SetSafeBlockNumber(blockNumber hexutil.Uint64) { + defer ct.mutex.Unlock() + ct.mutex.Lock() + + ct.state.Safe = blockNumber +} + +func (ct *InMemoryConsensusTracker) GetFinalizedBlockNumber() hexutil.Uint64 { + defer ct.mutex.Unlock() + ct.mutex.Lock() + + return ct.state.Finalized +} + +func (ct *InMemoryConsensusTracker) SetFinalizedBlockNumber(blockNumber hexutil.Uint64) { + defer ct.mutex.Unlock() + ct.mutex.Lock() + + ct.state.Finalized = blockNumber +} + +// RedisConsensusTracker store and retrieve in a shared Redis cluster, with leader election +type RedisConsensusTracker struct { + ctx context.Context + client *redis.Client + namespace string + backendGroup *BackendGroup + + redlock *redsync.Mutex + lockPeriod time.Duration + heartbeatInterval time.Duration + + leader bool + leaderName string + + // holds the state collected by local pollers + local *InMemoryConsensusTracker + + // holds a copy of the remote shared state + // when leader, updates the remote with the local state + remote *InMemoryConsensusTracker +} + +type RedisConsensusTrackerOpt func(cp *RedisConsensusTracker) + +func WithLockPeriod(lockPeriod time.Duration) RedisConsensusTrackerOpt { + return func(ct *RedisConsensusTracker) { + ct.lockPeriod = lockPeriod + } +} + +func WithHeartbeatInterval(heartbeatInterval time.Duration) RedisConsensusTrackerOpt { + return func(ct *RedisConsensusTracker) { + ct.heartbeatInterval = heartbeatInterval + } +} +func NewRedisConsensusTracker(ctx context.Context, + redisClient *redis.Client, + bg *BackendGroup, + namespace string, + opts ...RedisConsensusTrackerOpt) ConsensusTracker { + + tracker := &RedisConsensusTracker{ + ctx: ctx, + client: redisClient, + backendGroup: bg, + namespace: namespace, + + lockPeriod: 30 * time.Second, + heartbeatInterval: 2 * time.Second, + local: NewInMemoryConsensusTracker().(*InMemoryConsensusTracker), + remote: NewInMemoryConsensusTracker().(*InMemoryConsensusTracker), + } + + for _, opt := range opts { + opt(tracker) + } + + return tracker +} + +func (ct *RedisConsensusTracker) Init() { + go func() { + for { + timer := time.NewTimer(ct.heartbeatInterval) + ct.stateHeartbeat() + + select { + case <-timer.C: + continue + case <-ct.ctx.Done(): + timer.Stop() + return + } + } + }() +} + +func (ct *RedisConsensusTracker) stateHeartbeat() { + pool := goredis.NewPool(ct.client) + rs := redsync.New(pool) + key := ct.key("mutex") + + val, err := ct.client.Get(ct.ctx, key).Result() + if err != nil && err != redis.Nil { + log.Error("failed to read the lock", "err", err) + if ct.leader { + ok, err := ct.redlock.Unlock() + if err != nil || !ok { + log.Error("failed to release the lock after error", "err", err) + return + } + ct.leader = false + } + return + } + if val != "" { + if ct.leader { + log.Debug("extending lock") + ok, err := ct.redlock.Extend() + if err != nil || !ok { + log.Error("failed to extend lock", "err", err, "mutex", ct.redlock.Name(), "val", ct.redlock.Value()) + ok, err := ct.redlock.Unlock() + if err != nil || !ok { + log.Error("failed to release the lock after error", "err", err) + return + } + ct.leader = false + return + } + ct.postPayload(val) + } else { + // retrieve current leader + leaderName, err := ct.client.Get(ct.ctx, ct.key(fmt.Sprintf("leader:%s", val))).Result() + if err != nil && err != redis.Nil { + log.Error("failed to read the remote leader", "err", err) + return + } + ct.leaderName = leaderName + log.Debug("following", "val", val, "leader", leaderName) + // retrieve payload + val, err := ct.client.Get(ct.ctx, ct.key(fmt.Sprintf("state:%s", val))).Result() + if err != nil && err != redis.Nil { + log.Error("failed to read the remote state", "err", err) + return + } + if val == "" { + log.Error("remote state is missing (recent leader election maybe?)") + return + } + state := &ConsensusTrackerState{} + err = json.Unmarshal([]byte(val), state) + if err != nil { + log.Error("failed to unmarshal the remote state", "err", err) + return + } + + ct.remote.update(state) + log.Debug("updated state from remote", "state", val, "leader", leaderName) + + RecordGroupConsensusHALatestBlock(ct.backendGroup, leaderName, ct.remote.state.Latest) + RecordGroupConsensusHASafeBlock(ct.backendGroup, leaderName, ct.remote.state.Safe) + RecordGroupConsensusHAFinalizedBlock(ct.backendGroup, leaderName, ct.remote.state.Finalized) + } + } else { + if !ct.local.Valid() { + log.Warn("local state is not valid or behind remote, skipping") + return + } + if ct.remote.Valid() && ct.local.Behind(ct.remote) { + log.Warn("local state is behind remote, skipping") + return + } + + log.Info("lock not found, creating a new one") + + mutex := rs.NewMutex(key, + redsync.WithExpiry(ct.lockPeriod), + redsync.WithFailFast(true), + redsync.WithTries(1)) + + // nosemgrep: missing-unlock-before-return + // this lock is hold indefinitely, and it is extended until the leader dies + if err := mutex.Lock(); err != nil { + log.Debug("failed to obtain lock", "err", err) + ct.leader = false + return + } + + log.Info("lock acquired", "mutex", mutex.Name(), "val", mutex.Value()) + ct.redlock = mutex + ct.leader = true + ct.postPayload(mutex.Value()) + } +} + +func (ct *RedisConsensusTracker) key(tag string) string { + return fmt.Sprintf("consensus:%s:%s", ct.namespace, tag) +} + +func (ct *RedisConsensusTracker) GetLatestBlockNumber() hexutil.Uint64 { + return ct.remote.GetLatestBlockNumber() +} + +func (ct *RedisConsensusTracker) SetLatestBlockNumber(blockNumber hexutil.Uint64) { + ct.local.SetLatestBlockNumber(blockNumber) +} + +func (ct *RedisConsensusTracker) GetSafeBlockNumber() hexutil.Uint64 { + return ct.remote.GetSafeBlockNumber() +} + +func (ct *RedisConsensusTracker) SetSafeBlockNumber(blockNumber hexutil.Uint64) { + ct.local.SetSafeBlockNumber(blockNumber) +} + +func (ct *RedisConsensusTracker) GetFinalizedBlockNumber() hexutil.Uint64 { + return ct.remote.GetFinalizedBlockNumber() +} + +func (ct *RedisConsensusTracker) SetFinalizedBlockNumber(blockNumber hexutil.Uint64) { + ct.local.SetFinalizedBlockNumber(blockNumber) +} + +func (ct *RedisConsensusTracker) postPayload(mutexVal string) { + jsonState, err := json.Marshal(ct.local.state) + if err != nil { + log.Error("failed to marshal local", "err", err) + ct.leader = false + return + } + ct.client.Set(ct.ctx, ct.key(fmt.Sprintf("state:%s", mutexVal)), jsonState, ct.lockPeriod) + + leader, _ := os.LookupEnv("HOSTNAME") + ct.client.Set(ct.ctx, ct.key(fmt.Sprintf("leader:%s", mutexVal)), leader, ct.lockPeriod) + + log.Debug("posted state", "state", string(jsonState), "leader", leader) + + ct.leaderName = leader + ct.remote.update(ct.local.state) + + RecordGroupConsensusHALatestBlock(ct.backendGroup, leader, ct.remote.state.Latest) + RecordGroupConsensusHASafeBlock(ct.backendGroup, leader, ct.remote.state.Safe) + RecordGroupConsensusHAFinalizedBlock(ct.backendGroup, leader, ct.remote.state.Finalized) +} diff --git a/go/proxyd/example.config.toml b/go/proxyd/example.config.toml index fb8fea941b..cce4896926 100644 --- a/go/proxyd/example.config.toml +++ b/go/proxyd/example.config.toml @@ -15,6 +15,7 @@ rpc_port = 8080 # Host for the proxyd WS server to listen on. ws_host = "0.0.0.0" # Port for the above +# Set the ws_port to 0 to disable WS ws_port = 8085 # Maximum client body size, in bytes, that the server will accept. max_body_size_bytes = 10485760 @@ -43,6 +44,12 @@ max_response_size_bytes = 5242880 max_retries = 3 # Number of seconds to wait before trying an unhealthy backend again. out_of_service_seconds = 600 +# Maximum latency accepted to serve requests, default 10s +max_latency_threshold = "30s" +# Maximum latency accepted to serve requests before degraded, default 5s +max_degraded_latency_threshold = "10s" +# Maximum error rate accepted to serve requests, default 0.5 (i.e. 50%) +max_error_rate_threshold = 0.3 [backends] # A map of backends by name. @@ -65,6 +72,11 @@ ca_file = "" client_cert_file = "" # Path to a custom client key file. client_key_file = "" +# Allows backends to skip peer count checking, default false +# consensus_skip_peer_count = true +# Specified the target method to get receipts, default "debug_getRawReceipts" +# See https://github.com/ethereum-optimism/optimism/blob/186e46a47647a51a658e699e9ff047d39444c2de/op-node/sources/receipts.go#L186-L253 +consensus_receipts_target = "eth_getBlockReceipts" [backends.alchemy] rpc_url = "" @@ -73,10 +85,21 @@ username = "" password = "" max_rps = 3 max_ws_conns = 1 +consensus_receipts_target = "alchemy_getTransactionReceipts" [backend_groups] [backend_groups.main] backends = ["infura"] +# Enable consensus awareness for backend group, making it act as a load balancer, default false +# consensus_aware = true +# Period in which the backend wont serve requests if banned, default 5m +# consensus_ban_period = "1m" +# Maximum delay for update the backend, default 30s +# consensus_max_update_threshold = "20s" +# Maximum block lag, default 8 +# consensus_max_block_lag = 16 +# Minimum peer count, default 3 +# consensus_min_peer_count = 4 [backend_groups.alchemy] backends = ["alchemy"] diff --git a/go/proxyd/frontend_rate_limiter.go b/go/proxyd/frontend_rate_limiter.go index d377370ed8..d0590f0561 100644 --- a/go/proxyd/frontend_rate_limiter.go +++ b/go/proxyd/frontend_rate_limiter.go @@ -6,7 +6,7 @@ import ( "sync" "time" - "github.com/go-redis/redis/v8" + "github.com/redis/go-redis/v9" ) type FrontendRateLimiter interface { diff --git a/go/proxyd/frontend_rate_limiter_test.go b/go/proxyd/frontend_rate_limiter_test.go index f3542cf351..fb5f808bb5 100644 --- a/go/proxyd/frontend_rate_limiter_test.go +++ b/go/proxyd/frontend_rate_limiter_test.go @@ -7,7 +7,7 @@ import ( "time" "github.com/alicebob/miniredis" - "github.com/go-redis/redis/v8" + "github.com/redis/go-redis/v9" "github.com/stretchr/testify/require" ) diff --git a/go/proxyd/go.mod b/go/proxyd/go.mod index d47c7a3239..cbab0d5c30 100644 --- a/go/proxyd/go.mod +++ b/go/proxyd/go.mod @@ -1,66 +1,84 @@ module github.com/ethereum-optimism/optimism/proxyd -go 1.18 +go 1.21 require ( - github.com/BurntSushi/toml v0.4.1 + github.com/BurntSushi/toml v1.3.2 github.com/alicebob/miniredis v2.5.0+incompatible - github.com/ethereum/go-ethereum v1.10.17 - github.com/go-redis/redis/v8 v8.11.4 - github.com/golang/snappy v0.0.4 + github.com/emirpasic/gods v1.18.1 + github.com/ethereum/go-ethereum v1.13.4 + github.com/go-redsync/redsync/v4 v4.10.0 + github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb github.com/gorilla/mux v1.8.0 github.com/gorilla/websocket v1.5.0 - github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d - github.com/prometheus/client_golang v1.11.1 - github.com/rs/cors v1.8.2 - github.com/stretchr/testify v1.7.0 - golang.org/x/sync v0.0.0-20210220032951-036812b2e83c + github.com/hashicorp/golang-lru v1.0.2 + github.com/pkg/errors v0.9.1 + github.com/prometheus/client_golang v1.17.0 + github.com/redis/go-redis/v9 v9.2.1 + github.com/rs/cors v1.10.1 + github.com/stretchr/testify v1.8.4 + github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 + golang.org/x/sync v0.4.0 + gopkg.in/yaml.v3 v3.0.1 ) require ( - github.com/VictoriaMetrics/fastcache v1.9.0 // indirect - github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a // indirect + github.com/DataDog/zstd v1.5.5 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/VictoriaMetrics/fastcache v1.12.1 // indirect + github.com/alicebob/gopher-json v0.0.0-20230218143504-906a9b012302 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/btcsuite/btcd v0.22.0-beta // indirect - github.com/btcsuite/btcd/btcec/v2 v2.1.2 // indirect - github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/bits-and-blooms/bitset v1.10.0 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cockroachdb/errors v1.11.1 // indirect + github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect + github.com/cockroachdb/pebble v0.0.0-20231020221949-babd592d2360 // indirect + github.com/cockroachdb/redact v1.1.5 // indirect + github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect + github.com/consensys/bavard v0.1.13 // indirect + github.com/consensys/gnark-crypto v0.12.1 // indirect + github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/deckarep/golang-set v1.8.0 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect + github.com/deckarep/golang-set/v2 v2.3.1 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect - github.com/edsrzf/mmap-go v1.1.0 // indirect - github.com/fjl/memsize v0.0.1 // indirect - github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 // indirect - github.com/go-ole/go-ole v1.2.6 // indirect + github.com/ethereum/c-kzg-4844 v0.4.0 // indirect + github.com/getsentry/sentry-go v0.25.0 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-stack/stack v1.8.1 // indirect - github.com/golang/protobuf v1.5.2 // indirect - github.com/gomodule/redigo v1.8.8 // indirect - github.com/google/go-cmp v0.5.8 // indirect - github.com/google/uuid v1.3.0 // indirect - github.com/hashicorp/go-bexpr v0.1.11 // indirect - github.com/huin/goupnp v1.0.3 // indirect - github.com/mattn/go-colorable v0.1.12 // indirect - github.com/mattn/go-isatty v0.0.14 // indirect - github.com/mattn/go-runewidth v0.0.13 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect - github.com/mitchellh/mapstructure v1.4.3 // indirect + github.com/gofrs/flock v0.8.1 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/gomodule/redigo v1.8.9 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/holiman/bloomfilter/v2 v2.0.3 // indirect + github.com/holiman/uint256 v1.2.3 // indirect + github.com/klauspost/compress v1.17.1 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/mattn/go-runewidth v0.0.15 // indirect + github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect + github.com/mmcloughlin/addchain v0.4.0 // indirect + github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_model v0.2.0 // indirect - github.com/prometheus/common v0.30.0 // indirect - github.com/prometheus/procfs v0.7.3 // indirect - github.com/prometheus/tsdb v0.10.0 // indirect - github.com/rjeczalik/notify v0.9.2 // indirect + github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/common v0.45.0 // indirect + github.com/prometheus/procfs v0.12.0 // indirect + github.com/rivo/uniseg v0.4.4 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/shirou/gopsutil v3.21.11+incompatible // indirect - github.com/status-im/keycard-go v0.0.0-20211109104530-b0e0482ba91d // indirect - github.com/tklauser/go-sysconf v0.3.10 // indirect - github.com/tklauser/numcpus v0.4.0 // indirect - github.com/tyler-smith/go-bip39 v1.1.0 // indirect - github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9 // indirect - github.com/yusufpapurcu/wmi v1.2.2 // indirect - golang.org/x/crypto v0.0.0-20220307211146-efcb8507fb70 // indirect - golang.org/x/sys v0.1.0 // indirect - golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9 // indirect - google.golang.org/protobuf v1.27.1 // indirect - gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect - gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect + github.com/supranational/blst v0.3.11 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/yuin/gopher-lua v1.1.0 // indirect + github.com/yusufpapurcu/wmi v1.2.3 // indirect + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect + golang.org/x/mod v0.13.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect + golang.org/x/tools v0.14.0 // indirect + google.golang.org/protobuf v1.31.0 // indirect + rsc.io/tmplfunc v0.0.3 // indirect ) diff --git a/go/proxyd/go.sum b/go/proxyd/go.sum index 6e90470107..e759ce561a 100644 --- a/go/proxyd/go.sum +++ b/go/proxyd/go.sum @@ -1,882 +1,290 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= -github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v0.4.1 h1:GaI7EiDXDRfa8VshkTj7Fym7ha+y8/XxIgD2okUIjLw= -github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= -github.com/VictoriaMetrics/fastcache v1.9.0 h1:oMwsS6c8abz98B7ytAewQ7M1ZN/Im/iwKoE1euaFvhs= -github.com/VictoriaMetrics/fastcache v1.9.0/go.mod h1:otoTS3xu+6IzF/qByjqzjp3rTuzM3Qf0ScU1UTj97iU= -github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= -github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a h1:HbKu58rmZpUGpz5+4FfNmIU+FmZg2P3Xaj2v2bfNWmk= -github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= +github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= +github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= +github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o= +github.com/alicebob/gopher-json v0.0.0-20230218143504-906a9b012302 h1:uvdUDbHQHO85qeSydJtItA4T55Pw6BtAejd0APRJOCE= +github.com/alicebob/gopher-json v0.0.0-20230218143504-906a9b012302/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= github.com/alicebob/miniredis v2.5.0+incompatible h1:yBHoLpsyjupjz3NL3MhKMVkR41j82Yjf3KFv7ApYzUI= github.com/alicebob/miniredis v2.5.0+incompatible/go.mod h1:8HZjEj4yU0dwhYHky+DxYx+6BMjkBbe5ONFIF1MXffk= +github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= -github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= -github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0= -github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo= -github.com/aws/aws-sdk-go-v2/config v1.1.1/go.mod h1:0XsVy9lBI/BCXm+2Tuvt39YmdHwS5unDQmxZOYe8F5Y= -github.com/aws/aws-sdk-go-v2/credentials v1.1.1/go.mod h1:mM2iIjwl7LULWtS6JCACyInboHirisUUdkBPoTHMOUo= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2/go.mod h1:3hGg3PpiEjHnrkrlasTfxFqUsZ2GCk/fMUn4CbKgSkM= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2/go.mod h1:45MfaXZ0cNbeuT0KQ1XJylq8A6+OpVV2E5kvY/Kq+u8= -github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7NkwbjlijluLsrIbu/iyl35RO4= -github.com/aws/aws-sdk-go-v2/service/sso v1.1.1/go.mod h1:SuZJxklHxLAXgLTc1iFXbEWkXs7QRTQpCLGaKIprQW0= -github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxqTCJGUfYTWXrrBwkq736bM= -github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= -github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= -github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= -github.com/btcsuite/btcd v0.22.0-beta h1:LTDpDKUM5EeOFBPM8IXpinEcmZ6FWfNZbE3lfrfdnWo= -github.com/btcsuite/btcd v0.22.0-beta/go.mod h1:9n5ntfhhHQBIhUvlhDvD3Qg6fRUj4jkN0VB8L8svzOA= -github.com/btcsuite/btcd/btcec/v2 v2.1.2 h1:YoYoC9J0jwfukodSBMzZYUVQ8PTiYg4BnOWiJVzTmLs= -github.com/btcsuite/btcd/btcec/v2 v2.1.2/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= -github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= -github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= -github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= -github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= -github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= -github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= -github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= -github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= -github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= +github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= +github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= +github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= +github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= +github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= +github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= +github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/pebble v0.0.0-20231020221949-babd592d2360 h1:x1dzGu9e1FYmkG8mL9emtdWD1EzH/17SijnoLvKvPiM= +github.com/cockroachdb/pebble v0.0.0-20231020221949-babd592d2360/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= +github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= +github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= +github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= +github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= +github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA= +github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= -github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= -github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deckarep/golang-set v1.8.0 h1:sk9/l/KqpunDwP7pSjUg0keiOOLEnOBHzykLrsPppp4= -github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= -github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= -github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= -github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= -github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= -github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= +github.com/deckarep/golang-set/v2 v2.3.1 h1:vjmkvJt/IV27WXPyYQpAh4bRyWJc5Y435D17XQ9QU5A= +github.com/deckarep/golang-set/v2 v2.3.1/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= +github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= -github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= -github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= -github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/dop251/goja v0.0.0-20211011172007-d99e4b8cbf48/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= -github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= -github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/edsrzf/mmap-go v1.1.0 h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ= -github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/go-ethereum v1.10.17 h1:XEcumY+qSr1cZQaWsQs5Kck3FHB0V2RiMHPdTBJ+oT8= -github.com/ethereum/go-ethereum v1.10.17/go.mod h1:Lt5WzjM07XlXc95YzrhosmR4J9Ahd6X2wyEV2SvGhk0= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= -github.com/fjl/memsize v0.0.1 h1:+zhkb+dhUgx0/e+M8sF0QqiouvMQUiKR+QYvdxIOKcQ= -github.com/fjl/memsize v0.0.1/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= -github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= +github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= +github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-ethereum v1.13.4 h1:25HJnaWVg3q1O7Z62LaaI6S9wVq8QCw3K88g8wEzrcM= +github.com/ethereum/go-ethereum v1.13.4/go.mod h1:I0U5VewuuTzvBtVzKo7b3hJzDhXOUtn9mJW7SsIPB0Q= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 h1:f6D9Hr8xV8uYKlyuj8XIruxlh9WjVjdh1gIicAS7ays= -github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= -github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= -github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= -github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= -github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/getsentry/sentry-go v0.25.0 h1:q6Eo+hS+yoJlTO3uu/azhQadsD8V+jQn2D8VvX1eOyI= +github.com/getsentry/sentry-go v0.25.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/go-redis/redis v6.15.9+incompatible h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg= +github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= +github.com/go-redis/redis/v7 v7.4.0 h1:7obg6wUoj05T0EpY0o8B59S9w5yeMWql7sw2kwNW1x4= +github.com/go-redis/redis/v7 v7.4.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= github.com/go-redis/redis/v8 v8.11.4 h1:kHoYkfZP6+pe04aFTnhDH6GDROa5yJdHJVNxV3F46Tg= github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Pxt6RJr792+w= -github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= -github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-redsync/redsync/v4 v4.10.0 h1:hTeAak4C73mNBQSTq6KCKDFaiIlfC+z5yTTl8fCJuBs= +github.com/go-redsync/redsync/v4 v4.10.0/go.mod h1:ZfayzutkgeBmEmBlUR3j+rF6kN44UUGtEdfzhBFZTPc= github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= -github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= -github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= -github.com/gomodule/redigo v1.8.8 h1:f6cXq6RRfiyrOJEV7p3JhLDlmawGBVBBP1MggY8Mo4E= -github.com/gomodule/redigo v1.8.8/go.mod h1:7ArFNvsTjH8GMMzB4uy1snslv2BwmginuMs06a1uzZE= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/gomodule/redigo v1.8.9 h1:Sl3u+2BI/kk+VEatbj0scLdrFhjPmbxOc1myhDP41ws= +github.com/gomodule/redigo v1.8.9/go.mod h1:7ArFNvsTjH8GMMzB4uy1snslv2BwmginuMs06a1uzZE= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= -github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= -github.com/hashicorp/go-bexpr v0.1.11 h1:6DqdA/KBjurGby9yTY0bmkathya0lfwF2SeuubCI7dY= -github.com/hashicorp/go-bexpr v0.1.11/go.mod h1:f03lAo0duBlDIUMGCuad8oLcgejw4m7U+N8T+6Kz1AE= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= -github.com/holiman/uint256 v1.2.0 h1:gpSYcPLWGv4sG43I2mVLiDZCNDh/EpGjSk8tmtxitHM= -github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= +github.com/holiman/uint256 v1.2.3 h1:K8UWO1HUJpRMXBxbmaY1Y8IAMZC/RsKB+ArEnnK4l5o= +github.com/holiman/uint256 v1.2.3/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= -github.com/huin/goupnp v1.0.3 h1:N8No57ls+MnjlB+JPiCVSOyy/ot7MJTqlo7rn+NYSqQ= -github.com/huin/goupnp v1.0.3/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= -github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY= -github.com/influxdata/influxdb v1.8.3/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI= -github.com/influxdata/influxdb-client-go/v2 v2.4.0/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8= -github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk= -github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE= -github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= -github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= -github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19ybifQhZoQNF5D8= -github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE= -github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= -github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po= -github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= -github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= -github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= -github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= -github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= -github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= -github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/klauspost/compress v1.17.1 h1:NE3C767s2ak2bweCZo3+rdP4U/HoyVXLv/X9f2gPS5g= +github.com/klauspost/compress v1.17.1/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= -github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= +github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= -github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= -github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= -github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs= -github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= -github.com/mitchellh/pointerstructure v1.2.1 h1:ZhBBeX8tSlRpu/FFhXH4RC4OJzFlqsQhoHZAz4x7TIw= -github.com/mitchellh/pointerstructure v1.2.1/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= -github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= -github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= +github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= +github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= +github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= +github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.16.0 h1:6gjqkI8iiRHMvdccRJM8rVKjCWk6ZIm6FTm3ddIe4/c= -github.com/onsi/gomega v1.16.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.0.3-0.20180606204148-bd9c31933947/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE= -github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= -github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= -github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.11.1 h1:+4eQaD7vAZ6DsfsxB15hbE0odUjGI5ARs9yskGu1v4s= -github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.30.0 h1:JEkYlQnpzrzQFxi6gnukFPdQ+ac82oRhzMcIduJu/Ug= -github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/prometheus/tsdb v0.10.0 h1:If5rVCMTp6W2SiRAQFlbpJNgVlgMEd+U2GZckwK38ic= -github.com/prometheus/tsdb v0.10.0/go.mod h1:oi49uRhEe9dPUTlS3JRZOwJuVi6tmh10QSgwXEyGCt4= -github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= -github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= +github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= +github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/redis/go-redis/v9 v9.2.1 h1:WlYJg71ODF0dVspZZCpYmoF1+U1Jjk9Rwd7pq6QmlCg= +github.com/redis/go-redis/v9 v9.2.1/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M= +github.com/redis/rueidis v1.0.19 h1:s65oWtotzlIFN8eMPhyYwxlwLR1lUdhza2KtWprKYSo= +github.com/redis/rueidis v1.0.19/go.mod h1:8B+r5wdnjwK3lTFml5VtxjzGOQAC+5UmujoD12pDrEo= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= -github.com/rjeczalik/notify v0.9.2 h1:MiTWrPj55mNDHEiIX5YUSKefw/+lCQVoAFmD6oQm5w8= -github.com/rjeczalik/notify v0.9.2/go.mod h1:aErll2f0sUX9PXZnVNyeiObbmTlk5jnMoCa4QEjJeqM= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= -github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= -github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= +github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rs/cors v1.10.1 h1:L0uuZVXIKlI1SShY2nhFfo44TYvDPQ1w4oFkUJNfhyo= +github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= -github.com/status-im/keycard-go v0.0.0-20211109104530-b0e0482ba91d h1:vmirMegf1vqPJ+lDBxLQ0MAt3tz+JL57UPxu44JBOjA= -github.com/status-im/keycard-go v0.0.0-20211109104530-b0e0482ba91d/go.mod h1:97vT0Rym0wCnK4B++hNA3nCetr0Mh1KXaVxzSt1arjg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203 h1:QVqDTf3h2WHt08YuiTGPZLls0Wq99X9bWd0Q5ZSBesM= +github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203/go.mod h1:oqN97ltKNihBbwlX8dLpwxCl3+HnXKV/R0e+sRLd9C8= +github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= +github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= -github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= -github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= -github.com/tklauser/go-sysconf v0.3.10 h1:IJ1AZGZRWbY8T5Vfk04D9WOA5WSejdflXxP03OUqALw= -github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk= -github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= -github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq//o= -github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= -github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= -github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= -github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= -github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= -github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= -github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9 h1:k/gmLsJDWwWqbLCur2yWnJzwQEKRcAHXo6seXGuSwWw= -github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9/go.mod h1:E1AXubJBdNmFERAOucpDIxNzeGfLzg0mYh+UfMWdChA= -github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= -github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +github.com/yuin/gopher-lua v1.1.0 h1:BojcDhfyDWgU2f2TOzYK/g5p2gxMrku8oupLDqlnSqE= +github.com/yuin/gopher-lua v1.1.0/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw= +github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= +github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20220307211146-efcb8507fb70 h1:syTAU9FwmvzEoIYMqcPHOcVm4H3U5u90WsvuYgwpETU= -golang.org/x/crypto v0.0.0-20220307211146-efcb8507fb70/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= +golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= +golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180926160741-c2ed4eda69e7/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220204135822-1c1b9b1eba6a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9 h1:ftMN5LMiBFjbzleLqtoBZk7KdJwhuybIU+FckUHgoyQ= -golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200108203644-89082a384178/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= +golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= -gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU= -gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= -gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/urfave/cli.v1 v1.20.0 h1:NdAVW6RYxDif9DhDHaAortIu956m2c0v+09AZBPTbE0= -gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= +rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= diff --git a/go/proxyd/integration_tests/batch_timeout_test.go b/go/proxyd/integration_tests/batch_timeout_test.go index 372f047c72..4906c1d07e 100644 --- a/go/proxyd/integration_tests/batch_timeout_test.go +++ b/go/proxyd/integration_tests/batch_timeout_test.go @@ -22,7 +22,7 @@ func TestBatchTimeout(t *testing.T) { config := ReadConfig("batch_timeout") client := NewProxydClient("http://127.0.0.1:8545") - shutdown, err := proxyd.Start(config) + _, shutdown, err := proxyd.Start(config) require.NoError(t, err) defer shutdown() diff --git a/go/proxyd/integration_tests/batching_test.go b/go/proxyd/integration_tests/batching_test.go index b0f811ca4b..c1f8b386d0 100644 --- a/go/proxyd/integration_tests/batching_test.go +++ b/go/proxyd/integration_tests/batching_test.go @@ -20,6 +20,9 @@ func TestBatching(t *testing.T) { ethAccountsResponse2 := `{"jsonrpc": "2.0", "result": [], "id": 2}` + backendResTooLargeResponse1 := `{"error":{"code":-32020,"message":"backend response too large"},"id":1,"jsonrpc":"2.0"}` + backendResTooLargeResponse2 := `{"error":{"code":-32020,"message":"backend response too large"},"id":2,"jsonrpc":"2.0"}` + type mockResult struct { method string id string @@ -40,6 +43,7 @@ func TestBatching(t *testing.T) { expectedRes string maxUpstreamBatchSize int numExpectedForwards int + maxResponseSizeBytes int64 }{ { name: "backend returns batches out of order", @@ -128,11 +132,24 @@ func TestBatching(t *testing.T) { maxUpstreamBatchSize: 2, numExpectedForwards: 1, }, + { + name: "large upstream response gets dropped", + mocks: []mockResult{chainIDMock1, chainIDMock2}, + reqs: []*proxyd.RPCReq{ + NewRPCReq("1", "eth_chainId", nil), + NewRPCReq("2", "eth_chainId", nil), + }, + expectedRes: asArray(backendResTooLargeResponse1, backendResTooLargeResponse2), + maxUpstreamBatchSize: 2, + numExpectedForwards: 1, + maxResponseSizeBytes: 1, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { config.Server.MaxUpstreamBatchSize = tt.maxUpstreamBatchSize + config.BackendOptions.MaxResponseSizeBytes = tt.maxResponseSizeBytes handler := tt.handler if handler == nil { @@ -148,7 +165,7 @@ func TestBatching(t *testing.T) { require.NoError(t, os.Setenv("GOOD_BACKEND_RPC_URL", goodBackend.URL())) client := NewProxydClient("http://127.0.0.1:8545") - shutdown, err := proxyd.Start(config) + _, shutdown, err := proxyd.Start(config) require.NoError(t, err) defer shutdown() diff --git a/go/proxyd/integration_tests/caching_test.go b/go/proxyd/integration_tests/caching_test.go index a75a59106c..e74b85b4a7 100644 --- a/go/proxyd/integration_tests/caching_test.go +++ b/go/proxyd/integration_tests/caching_test.go @@ -18,15 +18,20 @@ func TestCaching(t *testing.T) { defer redis.Close() hdlr := NewBatchRPCResponseRouter() + /* cacheable */ hdlr.SetRoute("eth_chainId", "999", "0x420") hdlr.SetRoute("net_version", "999", "0x1234") - hdlr.SetRoute("eth_blockNumber", "999", "0x64") - hdlr.SetRoute("eth_getBlockByNumber", "999", "dummy_block") - hdlr.SetRoute("eth_call", "999", "dummy_call") - - // mock LVC requests - hdlr.SetFallbackRoute("eth_blockNumber", "0x64") - hdlr.SetFallbackRoute("eth_gasPrice", "0x420") + hdlr.SetRoute("eth_getBlockTransactionCountByHash", "999", "eth_getBlockTransactionCountByHash") + hdlr.SetRoute("eth_getBlockByHash", "999", "eth_getBlockByHash") + hdlr.SetRoute("eth_getTransactionByHash", "999", "eth_getTransactionByHash") + hdlr.SetRoute("eth_getTransactionByBlockHashAndIndex", "999", "eth_getTransactionByBlockHashAndIndex") + hdlr.SetRoute("eth_getUncleByBlockHashAndIndex", "999", "eth_getUncleByBlockHashAndIndex") + hdlr.SetRoute("eth_getTransactionReceipt", "999", "eth_getTransactionReceipt") + hdlr.SetRoute("debug_getRawReceipts", "999", "debug_getRawReceipts") + /* not cacheable */ + hdlr.SetRoute("eth_getBlockByNumber", "999", "eth_getBlockByNumber") + hdlr.SetRoute("eth_blockNumber", "999", "eth_blockNumber") + hdlr.SetRoute("eth_call", "999", "eth_call") backend := NewMockBackend(hdlr) defer backend.Close() @@ -35,7 +40,7 @@ func TestCaching(t *testing.T) { require.NoError(t, os.Setenv("REDIS_URL", fmt.Sprintf("redis://127.0.0.1:%s", redis.Port()))) config := ReadConfig("caching") client := NewProxydClient("http://127.0.0.1:8545") - shutdown, err := proxyd.Start(config) + _, shutdown, err := proxyd.Start(config) require.NoError(t, err) defer shutdown() @@ -48,6 +53,7 @@ func TestCaching(t *testing.T) { response string backendCalls int }{ + /* cacheable */ { "eth_chainId", nil, @@ -60,14 +66,51 @@ func TestCaching(t *testing.T) { "{\"jsonrpc\": \"2.0\", \"result\": \"0x1234\", \"id\": 999}", 1, }, + { + "eth_getBlockTransactionCountByHash", + []interface{}{"0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"}, + "{\"jsonrpc\": \"2.0\", \"result\": \"eth_getBlockTransactionCountByHash\", \"id\": 999}", + 1, + }, + { + "eth_getBlockByHash", + []interface{}{"0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", "false"}, + "{\"jsonrpc\": \"2.0\", \"result\": \"eth_getBlockByHash\", \"id\": 999}", + 1, + }, + { + "eth_getTransactionByBlockHashAndIndex", + []interface{}{"0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331", "0x55"}, + "{\"jsonrpc\": \"2.0\", \"result\": \"eth_getTransactionByBlockHashAndIndex\", \"id\": 999}", + 1, + }, + { + "eth_getUncleByBlockHashAndIndex", + []interface{}{"0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238", "0x90"}, + "{\"jsonrpc\": \"2.0\", \"result\": \"eth_getUncleByBlockHashAndIndex\", \"id\": 999}", + 1, + }, + /* not cacheable */ { "eth_getBlockByNumber", []interface{}{ "0x1", true, }, - "{\"jsonrpc\": \"2.0\", \"result\": \"dummy_block\", \"id\": 999}", - 1, + "{\"jsonrpc\": \"2.0\", \"result\": \"eth_getBlockByNumber\", \"id\": 999}", + 2, + }, + { + "eth_getTransactionReceipt", + []interface{}{"0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5"}, + "{\"jsonrpc\": \"2.0\", \"result\": \"eth_getTransactionReceipt\", \"id\": 999}", + 2, + }, + { + "eth_getTransactionByHash", + []interface{}{"0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"}, + "{\"jsonrpc\": \"2.0\", \"result\": \"eth_getTransactionByHash\", \"id\": 999}", + 2, }, { "eth_call", @@ -79,14 +122,14 @@ func TestCaching(t *testing.T) { }, "0x60", }, - "{\"id\":999,\"jsonrpc\":\"2.0\",\"result\":\"dummy_call\"}", - 1, + "{\"jsonrpc\": \"2.0\", \"result\": \"eth_call\", \"id\": 999}", + 2, }, { "eth_blockNumber", nil, - "{\"id\":999,\"jsonrpc\":\"2.0\",\"result\":\"0x64\"}", - 0, + "{\"jsonrpc\": \"2.0\", \"result\": \"eth_blockNumber\", \"id\": 999}", + 2, }, { "eth_call", @@ -98,7 +141,7 @@ func TestCaching(t *testing.T) { }, "latest", }, - "{\"id\":999,\"jsonrpc\":\"2.0\",\"result\":\"dummy_call\"}", + "{\"jsonrpc\": \"2.0\", \"result\": \"eth_call\", \"id\": 999}", 2, }, { @@ -111,7 +154,7 @@ func TestCaching(t *testing.T) { }, "pending", }, - "{\"id\":999,\"jsonrpc\":\"2.0\",\"result\":\"dummy_call\"}", + "{\"jsonrpc\": \"2.0\", \"result\": \"eth_call\", \"id\": 999}", 2, }, } @@ -128,24 +171,39 @@ func TestCaching(t *testing.T) { }) } - t.Run("block numbers update", func(t *testing.T) { - hdlr.SetFallbackRoute("eth_blockNumber", "0x100") - time.Sleep(1500 * time.Millisecond) - resRaw, _, err := client.SendRPC("eth_blockNumber", nil) + t.Run("nil responses should not be cached", func(t *testing.T) { + hdlr.SetRoute("eth_getBlockByHash", "999", nil) + resRaw, _, err := client.SendRPC("eth_getBlockByHash", []interface{}{"0x123"}) + require.NoError(t, err) + resCache, _, err := client.SendRPC("eth_getBlockByHash", []interface{}{"0x123"}) require.NoError(t, err) - RequireEqualJSON(t, []byte("{\"id\":999,\"jsonrpc\":\"2.0\",\"result\":\"0x100\"}"), resRaw) + RequireEqualJSON(t, []byte("{\"id\":999,\"jsonrpc\":\"2.0\",\"result\":null}"), resRaw) + RequireEqualJSON(t, resRaw, resCache) + require.Equal(t, 2, countRequests(backend, "eth_getBlockByHash")) + }) + + t.Run("debug_getRawReceipts with 0 receipts should not be cached", func(t *testing.T) { backend.Reset() + hdlr.SetRoute("debug_getRawReceipts", "999", []string{}) + resRaw, _, err := client.SendRPC("debug_getRawReceipts", []interface{}{"0x88420081ab9c6d50dc57af36b541c6b8a7b3e9c0d837b0414512c4c5883560ff"}) + require.NoError(t, err) + resCache, _, err := client.SendRPC("debug_getRawReceipts", []interface{}{"0x88420081ab9c6d50dc57af36b541c6b8a7b3e9c0d837b0414512c4c5883560ff"}) + require.NoError(t, err) + RequireEqualJSON(t, []byte("{\"id\":999,\"jsonrpc\":\"2.0\",\"result\":[]}"), resRaw) + RequireEqualJSON(t, resRaw, resCache) + require.Equal(t, 2, countRequests(backend, "debug_getRawReceipts")) }) - t.Run("nil responses should not be cached", func(t *testing.T) { - hdlr.SetRoute("eth_getBlockByNumber", "999", nil) - resRaw, _, err := client.SendRPC("eth_getBlockByNumber", []interface{}{"0x123"}) + t.Run("debug_getRawReceipts with more than 0 receipts should be cached", func(t *testing.T) { + backend.Reset() + hdlr.SetRoute("debug_getRawReceipts", "999", []string{"a"}) + resRaw, _, err := client.SendRPC("debug_getRawReceipts", []interface{}{"0x88420081ab9c6d50dc57af36b541c6b8a7b3e9c0d837b0414512c4c5883560bb"}) require.NoError(t, err) - resCache, _, err := client.SendRPC("eth_getBlockByNumber", []interface{}{"0x123"}) + resCache, _, err := client.SendRPC("debug_getRawReceipts", []interface{}{"0x88420081ab9c6d50dc57af36b541c6b8a7b3e9c0d837b0414512c4c5883560bb"}) require.NoError(t, err) - RequireEqualJSON(t, []byte("{\"id\":999,\"jsonrpc\":\"2.0\",\"result\":null}"), resRaw) + RequireEqualJSON(t, []byte("{\"id\":999,\"jsonrpc\":\"2.0\",\"result\":[\"a\"]}"), resRaw) RequireEqualJSON(t, resRaw, resCache) - require.Equal(t, 2, countRequests(backend, "eth_getBlockByNumber")) + require.Equal(t, 1, countRequests(backend, "debug_getRawReceipts")) }) } @@ -158,10 +216,7 @@ func TestBatchCaching(t *testing.T) { hdlr.SetRoute("eth_chainId", "1", "0x420") hdlr.SetRoute("net_version", "1", "0x1234") hdlr.SetRoute("eth_call", "1", "dummy_call") - - // mock LVC requests - hdlr.SetFallbackRoute("eth_blockNumber", "0x64") - hdlr.SetFallbackRoute("eth_gasPrice", "0x420") + hdlr.SetRoute("eth_getBlockByHash", "1", "eth_getBlockByHash") backend := NewMockBackend(hdlr) defer backend.Close() @@ -171,7 +226,7 @@ func TestBatchCaching(t *testing.T) { config := ReadConfig("caching") client := NewProxydClient("http://127.0.0.1:8545") - shutdown, err := proxyd.Start(config) + _, shutdown, err := proxyd.Start(config) require.NoError(t, err) defer shutdown() @@ -181,26 +236,31 @@ func TestBatchCaching(t *testing.T) { goodChainIdResponse := "{\"jsonrpc\": \"2.0\", \"result\": \"0x420\", \"id\": 1}" goodNetVersionResponse := "{\"jsonrpc\": \"2.0\", \"result\": \"0x1234\", \"id\": 1}" goodEthCallResponse := "{\"jsonrpc\": \"2.0\", \"result\": \"dummy_call\", \"id\": 1}" + goodEthGetBlockByHash := "{\"jsonrpc\": \"2.0\", \"result\": \"eth_getBlockByHash\", \"id\": 1}" res, _, err := client.SendBatchRPC( NewRPCReq("1", "eth_chainId", nil), NewRPCReq("1", "net_version", nil), + NewRPCReq("1", "eth_getBlockByHash", []interface{}{"0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", "false"}), ) require.NoError(t, err) - RequireEqualJSON(t, []byte(asArray(goodChainIdResponse, goodNetVersionResponse)), res) + RequireEqualJSON(t, []byte(asArray(goodChainIdResponse, goodNetVersionResponse, goodEthGetBlockByHash)), res) require.Equal(t, 1, countRequests(backend, "eth_chainId")) require.Equal(t, 1, countRequests(backend, "net_version")) + require.Equal(t, 1, countRequests(backend, "eth_getBlockByHash")) backend.Reset() res, _, err = client.SendBatchRPC( NewRPCReq("1", "eth_chainId", nil), NewRPCReq("1", "eth_call", []interface{}{`{"to":"0x1234"}`, "pending"}), NewRPCReq("1", "net_version", nil), + NewRPCReq("1", "eth_getBlockByHash", []interface{}{"0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", "false"}), ) require.NoError(t, err) - RequireEqualJSON(t, []byte(asArray(goodChainIdResponse, goodEthCallResponse, goodNetVersionResponse)), res) + RequireEqualJSON(t, []byte(asArray(goodChainIdResponse, goodEthCallResponse, goodNetVersionResponse, goodEthGetBlockByHash)), res) require.Equal(t, 0, countRequests(backend, "eth_chainId")) require.Equal(t, 0, countRequests(backend, "net_version")) + require.Equal(t, 0, countRequests(backend, "eth_getBlockByHash")) require.Equal(t, 1, countRequests(backend, "eth_call")) } diff --git a/go/proxyd/integration_tests/consensus_test.go b/go/proxyd/integration_tests/consensus_test.go new file mode 100644 index 0000000000..1b37ef7527 --- /dev/null +++ b/go/proxyd/integration_tests/consensus_test.go @@ -0,0 +1,1002 @@ +package integration_tests + +import ( + "context" + "encoding/json" + "fmt" + "net/http" + "os" + "path" + "testing" + "time" + + "github.com/ethereum/go-ethereum/common/hexutil" + + "github.com/ethereum-optimism/optimism/proxyd" + ms "github.com/ethereum-optimism/optimism/proxyd/tools/mockserver/handler" + "github.com/stretchr/testify/require" +) + +type nodeContext struct { + backend *proxyd.Backend // this is the actual backend impl in proxyd + mockBackend *MockBackend // this is the fake backend that we can use to mock responses + handler *ms.MockedHandler // this is where we control the state of mocked responses +} + +func setup(t *testing.T) (map[string]nodeContext, *proxyd.BackendGroup, *ProxydHTTPClient, func()) { + // setup mock servers + node1 := NewMockBackend(nil) + node2 := NewMockBackend(nil) + + dir, err := os.Getwd() + require.NoError(t, err) + + responses := path.Join(dir, "testdata/consensus_responses.yml") + + h1 := ms.MockedHandler{ + Overrides: []*ms.MethodTemplate{}, + Autoload: true, + AutoloadFile: responses, + } + h2 := ms.MockedHandler{ + Overrides: []*ms.MethodTemplate{}, + Autoload: true, + AutoloadFile: responses, + } + + require.NoError(t, os.Setenv("NODE1_URL", node1.URL())) + require.NoError(t, os.Setenv("NODE2_URL", node2.URL())) + + node1.SetHandler(http.HandlerFunc(h1.Handler)) + node2.SetHandler(http.HandlerFunc(h2.Handler)) + + // setup proxyd + config := ReadConfig("consensus") + svr, shutdown, err := proxyd.Start(config) + require.NoError(t, err) + + // expose the proxyd client + client := NewProxydClient("http://127.0.0.1:8545") + + // expose the backend group + bg := svr.BackendGroups["node"] + require.NotNil(t, bg) + require.NotNil(t, bg.Consensus) + require.Equal(t, 2, len(bg.Backends)) // should match config + + // convenient mapping to access the nodes by name + nodes := map[string]nodeContext{ + "node1": { + mockBackend: node1, + backend: bg.Backends[0], + handler: &h1, + }, + "node2": { + mockBackend: node2, + backend: bg.Backends[1], + handler: &h2, + }, + } + + return nodes, bg, client, shutdown +} + +func TestConsensus(t *testing.T) { + nodes, bg, client, shutdown := setup(t) + defer nodes["node1"].mockBackend.Close() + defer nodes["node2"].mockBackend.Close() + defer shutdown() + + ctx := context.Background() + + // poll for updated consensus + update := func() { + for _, be := range bg.Backends { + bg.Consensus.UpdateBackend(ctx, be) + } + bg.Consensus.UpdateBackendGroupConsensus(ctx) + } + + // convenient methods to manipulate state and mock responses + reset := func() { + for _, node := range nodes { + node.handler.ResetOverrides() + node.mockBackend.Reset() + } + bg.Consensus.ClearListeners() + bg.Consensus.Reset() + } + + override := func(node string, method string, block string, response string) { + nodes[node].handler.AddOverride(&ms.MethodTemplate{ + Method: method, + Block: block, + Response: response, + }) + } + + overrideBlock := func(node string, blockRequest string, blockResponse string) { + override(node, + "eth_getBlockByNumber", + blockRequest, + buildResponse(map[string]string{ + "number": blockResponse, + "hash": "hash_" + blockResponse, + })) + } + + overrideBlockHash := func(node string, blockRequest string, number string, hash string) { + override(node, + "eth_getBlockByNumber", + blockRequest, + buildResponse(map[string]string{ + "number": number, + "hash": hash, + })) + } + + overridePeerCount := func(node string, count int) { + override(node, "net_peerCount", "", buildResponse(hexutil.Uint64(count).String())) + } + + overrideNotInSync := func(node string) { + override(node, "eth_syncing", "", buildResponse(map[string]string{ + "startingblock": "0x0", + "currentblock": "0x0", + "highestblock": "0x100", + })) + } + + // force ban node2 and make sure node1 is the only one in consensus + useOnlyNode1 := func() { + overridePeerCount("node2", 0) + update() + + consensusGroup := bg.Consensus.GetConsensusGroup() + require.Equal(t, 1, len(consensusGroup)) + require.Contains(t, consensusGroup, nodes["node1"].backend) + nodes["node1"].mockBackend.Reset() + } + + t.Run("initial consensus", func(t *testing.T) { + reset() + + // unknown consensus at init + require.Equal(t, "0x0", bg.Consensus.GetLatestBlockNumber().String()) + + // first poll + update() + + // as a default we use: + // - latest at 0x101 [257] + // - safe at 0xe1 [225] + // - finalized at 0xc1 [193] + + // consensus at block 0x101 + require.Equal(t, "0x101", bg.Consensus.GetLatestBlockNumber().String()) + require.Equal(t, "0xe1", bg.Consensus.GetSafeBlockNumber().String()) + require.Equal(t, "0xc1", bg.Consensus.GetFinalizedBlockNumber().String()) + }) + + t.Run("prevent using a backend with low peer count", func(t *testing.T) { + reset() + overridePeerCount("node1", 0) + update() + + consensusGroup := bg.Consensus.GetConsensusGroup() + require.NotContains(t, consensusGroup, nodes["node1"].backend) + require.False(t, bg.Consensus.IsBanned(nodes["node1"].backend)) + require.Equal(t, 1, len(consensusGroup)) + }) + + t.Run("prevent using a backend lagging behind", func(t *testing.T) { + reset() + // node2 is 8+1 blocks ahead of node1 (0x101 + 8+1 = 0x10a) + overrideBlock("node2", "latest", "0x10a") + update() + + // since we ignored node1, the consensus should be at 0x10a + require.Equal(t, "0x10a", bg.Consensus.GetLatestBlockNumber().String()) + require.Equal(t, "0xe1", bg.Consensus.GetSafeBlockNumber().String()) + require.Equal(t, "0xc1", bg.Consensus.GetFinalizedBlockNumber().String()) + + consensusGroup := bg.Consensus.GetConsensusGroup() + require.NotContains(t, consensusGroup, nodes["node1"].backend) + require.False(t, bg.Consensus.IsBanned(nodes["node1"].backend)) + require.Equal(t, 1, len(consensusGroup)) + }) + + t.Run("prevent using a backend lagging behind - one before limit", func(t *testing.T) { + reset() + // node2 is 8 blocks ahead of node1 (0x101 + 8 = 0x109) + overrideBlock("node2", "latest", "0x109") + update() + + // both nodes are in consensus with the lowest block + require.Equal(t, "0x101", bg.Consensus.GetLatestBlockNumber().String()) + require.Equal(t, "0xe1", bg.Consensus.GetSafeBlockNumber().String()) + require.Equal(t, "0xc1", bg.Consensus.GetFinalizedBlockNumber().String()) + require.Equal(t, 2, len(bg.Consensus.GetConsensusGroup())) + }) + + t.Run("prevent using a backend not in sync", func(t *testing.T) { + reset() + // make node1 not in sync + overrideNotInSync("node1") + update() + + consensusGroup := bg.Consensus.GetConsensusGroup() + require.NotContains(t, consensusGroup, nodes["node1"].backend) + require.False(t, bg.Consensus.IsBanned(nodes["node1"].backend)) + require.Equal(t, 1, len(consensusGroup)) + }) + + t.Run("advance consensus", func(t *testing.T) { + reset() + + // as a default we use: + // - latest at 0x101 [257] + // - safe at 0xe1 [225] + // - finalized at 0xc1 [193] + + update() + + // all nodes start at block 0x101 + require.Equal(t, "0x101", bg.Consensus.GetLatestBlockNumber().String()) + + // advance latest on node2 to 0x102 + overrideBlock("node2", "latest", "0x102") + + update() + + // consensus should stick to 0x101, since node1 is still lagging there + bg.Consensus.UpdateBackendGroupConsensus(ctx) + require.Equal(t, "0x101", bg.Consensus.GetLatestBlockNumber().String()) + + // advance latest on node1 to 0x102 + overrideBlock("node1", "latest", "0x102") + + update() + + // all nodes now at 0x102 + require.Equal(t, "0x102", bg.Consensus.GetLatestBlockNumber().String()) + }) + + t.Run("should use lowest safe and finalized", func(t *testing.T) { + reset() + overrideBlock("node2", "finalized", "0xc2") + overrideBlock("node2", "safe", "0xe2") + update() + + require.Equal(t, "0xe1", bg.Consensus.GetSafeBlockNumber().String()) + require.Equal(t, "0xc1", bg.Consensus.GetFinalizedBlockNumber().String()) + }) + + t.Run("advance safe and finalized", func(t *testing.T) { + reset() + overrideBlock("node1", "finalized", "0xc2") + overrideBlock("node1", "safe", "0xe2") + overrideBlock("node2", "finalized", "0xc2") + overrideBlock("node2", "safe", "0xe2") + update() + + require.Equal(t, "0xe2", bg.Consensus.GetSafeBlockNumber().String()) + require.Equal(t, "0xc2", bg.Consensus.GetFinalizedBlockNumber().String()) + }) + + t.Run("ban backend if error rate is too high", func(t *testing.T) { + reset() + useOnlyNode1() + + // replace node1 handler with one that always returns 500 + oldHandler := nodes["node1"].mockBackend.handler + defer func() { nodes["node1"].mockBackend.handler = oldHandler }() + + nodes["node1"].mockBackend.SetHandler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(503) + })) + + numberReqs := 10 + for numberReqs > 0 { + _, statusCode, err := client.SendRPC("eth_getBlockByNumber", []interface{}{"0x101", false}) + require.NoError(t, err) + require.Equal(t, 503, statusCode) + numberReqs-- + } + + update() + + consensusGroup := bg.Consensus.GetConsensusGroup() + require.NotContains(t, consensusGroup, nodes["node1"].backend) + require.True(t, bg.Consensus.IsBanned(nodes["node1"].backend)) + require.Equal(t, 0, len(consensusGroup)) + }) + + t.Run("ban backend if tags are messed - safe < finalized", func(t *testing.T) { + reset() + overrideBlock("node1", "finalized", "0xb1") + overrideBlock("node1", "safe", "0xa1") + update() + + require.Equal(t, "0xe1", bg.Consensus.GetSafeBlockNumber().String()) + require.Equal(t, "0xc1", bg.Consensus.GetFinalizedBlockNumber().String()) + + consensusGroup := bg.Consensus.GetConsensusGroup() + require.NotContains(t, consensusGroup, nodes["node1"].backend) + require.True(t, bg.Consensus.IsBanned(nodes["node1"].backend)) + require.Equal(t, 1, len(consensusGroup)) + }) + + t.Run("ban backend if tags are messed - latest < safe", func(t *testing.T) { + reset() + overrideBlock("node1", "safe", "0xb1") + overrideBlock("node1", "latest", "0xa1") + update() + + require.Equal(t, "0x101", bg.Consensus.GetLatestBlockNumber().String()) + require.Equal(t, "0xc1", bg.Consensus.GetFinalizedBlockNumber().String()) + require.Equal(t, "0xe1", bg.Consensus.GetSafeBlockNumber().String()) + + consensusGroup := bg.Consensus.GetConsensusGroup() + require.NotContains(t, consensusGroup, nodes["node1"].backend) + require.True(t, bg.Consensus.IsBanned(nodes["node1"].backend)) + require.Equal(t, 1, len(consensusGroup)) + }) + + t.Run("ban backend if tags are messed - safe dropped", func(t *testing.T) { + reset() + update() + overrideBlock("node1", "safe", "0xb1") + update() + + require.Equal(t, "0x101", bg.Consensus.GetLatestBlockNumber().String()) + require.Equal(t, "0xe1", bg.Consensus.GetSafeBlockNumber().String()) + require.Equal(t, "0xc1", bg.Consensus.GetFinalizedBlockNumber().String()) + + consensusGroup := bg.Consensus.GetConsensusGroup() + require.NotContains(t, consensusGroup, nodes["node1"].backend) + require.True(t, bg.Consensus.IsBanned(nodes["node1"].backend)) + require.Equal(t, 1, len(consensusGroup)) + }) + + t.Run("ban backend if tags are messed - finalized dropped", func(t *testing.T) { + reset() + update() + overrideBlock("node1", "finalized", "0xa1") + update() + + require.Equal(t, "0x101", bg.Consensus.GetLatestBlockNumber().String()) + require.Equal(t, "0xe1", bg.Consensus.GetSafeBlockNumber().String()) + require.Equal(t, "0xc1", bg.Consensus.GetFinalizedBlockNumber().String()) + + consensusGroup := bg.Consensus.GetConsensusGroup() + require.NotContains(t, consensusGroup, nodes["node1"].backend) + require.True(t, bg.Consensus.IsBanned(nodes["node1"].backend)) + require.Equal(t, 1, len(consensusGroup)) + }) + + t.Run("recover after safe and finalized dropped", func(t *testing.T) { + reset() + useOnlyNode1() + overrideBlock("node1", "latest", "0xd1") + overrideBlock("node1", "safe", "0xb1") + overrideBlock("node1", "finalized", "0x91") + update() + + consensusGroup := bg.Consensus.GetConsensusGroup() + require.NotContains(t, consensusGroup, nodes["node1"].backend) + require.True(t, bg.Consensus.IsBanned(nodes["node1"].backend)) + require.Equal(t, 0, len(consensusGroup)) + + // unban and see if it recovers + bg.Consensus.Unban(nodes["node1"].backend) + update() + + consensusGroup = bg.Consensus.GetConsensusGroup() + require.Contains(t, consensusGroup, nodes["node1"].backend) + require.False(t, bg.Consensus.IsBanned(nodes["node1"].backend)) + require.Equal(t, 1, len(consensusGroup)) + + require.Equal(t, "0xd1", bg.Consensus.GetLatestBlockNumber().String()) + require.Equal(t, "0xb1", bg.Consensus.GetSafeBlockNumber().String()) + require.Equal(t, "0x91", bg.Consensus.GetFinalizedBlockNumber().String()) + }) + + t.Run("latest dropped below safe, then recovered", func(t *testing.T) { + reset() + useOnlyNode1() + overrideBlock("node1", "latest", "0xd1") + update() + + consensusGroup := bg.Consensus.GetConsensusGroup() + require.NotContains(t, consensusGroup, nodes["node1"].backend) + require.True(t, bg.Consensus.IsBanned(nodes["node1"].backend)) + require.Equal(t, 0, len(consensusGroup)) + + // unban and see if it recovers + bg.Consensus.Unban(nodes["node1"].backend) + overrideBlock("node1", "safe", "0xb1") + overrideBlock("node1", "finalized", "0x91") + update() + + consensusGroup = bg.Consensus.GetConsensusGroup() + require.Contains(t, consensusGroup, nodes["node1"].backend) + require.False(t, bg.Consensus.IsBanned(nodes["node1"].backend)) + require.Equal(t, 1, len(consensusGroup)) + + require.Equal(t, "0xd1", bg.Consensus.GetLatestBlockNumber().String()) + require.Equal(t, "0xb1", bg.Consensus.GetSafeBlockNumber().String()) + require.Equal(t, "0x91", bg.Consensus.GetFinalizedBlockNumber().String()) + }) + + t.Run("latest dropped below safe, and stayed inconsistent", func(t *testing.T) { + reset() + useOnlyNode1() + overrideBlock("node1", "latest", "0xd1") + update() + + consensusGroup := bg.Consensus.GetConsensusGroup() + require.NotContains(t, consensusGroup, nodes["node1"].backend) + require.True(t, bg.Consensus.IsBanned(nodes["node1"].backend)) + require.Equal(t, 0, len(consensusGroup)) + + // unban and see if it recovers - it should not since the blocks stays the same + bg.Consensus.Unban(nodes["node1"].backend) + update() + + // should be banned again + consensusGroup = bg.Consensus.GetConsensusGroup() + require.NotContains(t, consensusGroup, nodes["node1"].backend) + require.True(t, bg.Consensus.IsBanned(nodes["node1"].backend)) + require.Equal(t, 0, len(consensusGroup)) + }) + + t.Run("broken consensus", func(t *testing.T) { + reset() + listenerCalled := false + bg.Consensus.AddListener(func() { + listenerCalled = true + }) + update() + + // all nodes start at block 0x101 + require.Equal(t, "0x101", bg.Consensus.GetLatestBlockNumber().String()) + + // advance latest on both nodes to 0x102 + overrideBlock("node1", "latest", "0x102") + overrideBlock("node2", "latest", "0x102") + + update() + + // at 0x102 + require.Equal(t, "0x102", bg.Consensus.GetLatestBlockNumber().String()) + + // make node2 diverge on hash + overrideBlockHash("node2", "0x102", "0x102", "wrong_hash") + + update() + + // should resolve to 0x101, since 0x102 is out of consensus at the moment + require.Equal(t, "0x101", bg.Consensus.GetLatestBlockNumber().String()) + + // everybody serving traffic + consensusGroup := bg.Consensus.GetConsensusGroup() + require.Equal(t, 2, len(consensusGroup)) + require.False(t, bg.Consensus.IsBanned(nodes["node1"].backend)) + require.False(t, bg.Consensus.IsBanned(nodes["node2"].backend)) + + // onConsensusBroken listener was called + require.True(t, listenerCalled) + }) + + t.Run("broken consensus with depth 2", func(t *testing.T) { + reset() + listenerCalled := false + bg.Consensus.AddListener(func() { + listenerCalled = true + }) + update() + + // all nodes start at block 0x101 + require.Equal(t, "0x101", bg.Consensus.GetLatestBlockNumber().String()) + + // advance latest on both nodes to 0x102 + overrideBlock("node1", "latest", "0x102") + overrideBlock("node2", "latest", "0x102") + + update() + + // at 0x102 + require.Equal(t, "0x102", bg.Consensus.GetLatestBlockNumber().String()) + + // advance latest on both nodes to 0x3 + overrideBlock("node1", "latest", "0x103") + overrideBlock("node2", "latest", "0x103") + + update() + + // at 0x103 + require.Equal(t, "0x103", bg.Consensus.GetLatestBlockNumber().String()) + + // make node2 diverge on hash for blocks 0x102 and 0x103 + overrideBlockHash("node2", "0x102", "0x102", "wrong_hash_0x102") + overrideBlockHash("node2", "0x103", "0x103", "wrong_hash_0x103") + + update() + + // should resolve to 0x101 + require.Equal(t, "0x101", bg.Consensus.GetLatestBlockNumber().String()) + + // everybody serving traffic + consensusGroup := bg.Consensus.GetConsensusGroup() + require.Equal(t, 2, len(consensusGroup)) + require.False(t, bg.Consensus.IsBanned(nodes["node1"].backend)) + require.False(t, bg.Consensus.IsBanned(nodes["node2"].backend)) + + // onConsensusBroken listener was called + require.True(t, listenerCalled) + }) + + t.Run("fork in advanced block", func(t *testing.T) { + reset() + listenerCalled := false + bg.Consensus.AddListener(func() { + listenerCalled = true + }) + update() + + // all nodes start at block 0x101 + require.Equal(t, "0x101", bg.Consensus.GetLatestBlockNumber().String()) + + // make nodes 1 and 2 advance in forks, i.e. they have same block number with different hashes + overrideBlockHash("node1", "0x102", "0x102", "node1_0x102") + overrideBlockHash("node2", "0x102", "0x102", "node2_0x102") + overrideBlockHash("node1", "0x103", "0x103", "node1_0x103") + overrideBlockHash("node2", "0x103", "0x103", "node2_0x103") + overrideBlockHash("node1", "latest", "0x103", "node1_0x103") + overrideBlockHash("node2", "latest", "0x103", "node2_0x103") + + update() + + // should resolve to 0x101, the highest common ancestor + require.Equal(t, "0x101", bg.Consensus.GetLatestBlockNumber().String()) + + // everybody serving traffic + consensusGroup := bg.Consensus.GetConsensusGroup() + require.Equal(t, 2, len(consensusGroup)) + require.False(t, bg.Consensus.IsBanned(nodes["node1"].backend)) + require.False(t, bg.Consensus.IsBanned(nodes["node2"].backend)) + + // onConsensusBroken listener should not be called + require.False(t, listenerCalled) + }) + + t.Run("load balancing should hit both backends", func(t *testing.T) { + reset() + update() + + require.Equal(t, 2, len(bg.Consensus.GetConsensusGroup())) + + // reset request counts + nodes["node1"].mockBackend.Reset() + nodes["node2"].mockBackend.Reset() + + require.Equal(t, 0, len(nodes["node1"].mockBackend.Requests())) + require.Equal(t, 0, len(nodes["node2"].mockBackend.Requests())) + + // there is a random component to this test, + // since our round-robin implementation shuffles the ordering + // to achieve uniform distribution + + // so we just make 100 requests per backend and expect the number of requests to be somewhat balanced + // i.e. each backend should be hit minimally by at least 50% of the requests + consensusGroup := bg.Consensus.GetConsensusGroup() + + numberReqs := len(consensusGroup) * 100 + for numberReqs > 0 { + _, statusCode, err := client.SendRPC("eth_getBlockByNumber", []interface{}{"0x101", false}) + require.NoError(t, err) + require.Equal(t, 200, statusCode) + numberReqs-- + } + + msg := fmt.Sprintf("n1 %d, n2 %d", + len(nodes["node1"].mockBackend.Requests()), len(nodes["node2"].mockBackend.Requests())) + require.GreaterOrEqual(t, len(nodes["node1"].mockBackend.Requests()), 50, msg) + require.GreaterOrEqual(t, len(nodes["node2"].mockBackend.Requests()), 50, msg) + }) + + t.Run("load balancing should not hit if node is not healthy", func(t *testing.T) { + reset() + useOnlyNode1() + + // reset request counts + nodes["node1"].mockBackend.Reset() + nodes["node2"].mockBackend.Reset() + + require.Equal(t, 0, len(nodes["node1"].mockBackend.Requests())) + require.Equal(t, 0, len(nodes["node1"].mockBackend.Requests())) + + numberReqs := 10 + for numberReqs > 0 { + _, statusCode, err := client.SendRPC("eth_getBlockByNumber", []interface{}{"0x101", false}) + require.NoError(t, err) + require.Equal(t, 200, statusCode) + numberReqs-- + } + + msg := fmt.Sprintf("n1 %d, n2 %d", + len(nodes["node1"].mockBackend.Requests()), len(nodes["node2"].mockBackend.Requests())) + require.Equal(t, len(nodes["node1"].mockBackend.Requests()), 10, msg) + require.Equal(t, len(nodes["node2"].mockBackend.Requests()), 0, msg) + }) + + t.Run("load balancing should not hit if node is degraded", func(t *testing.T) { + reset() + useOnlyNode1() + + // replace node1 handler with one that adds a 500ms delay + oldHandler := nodes["node1"].mockBackend.handler + defer func() { nodes["node1"].mockBackend.handler = oldHandler }() + + nodes["node1"].mockBackend.SetHandler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + time.Sleep(500 * time.Millisecond) + oldHandler.ServeHTTP(w, r) + })) + + update() + + // send 10 requests to make node1 degraded + numberReqs := 10 + for numberReqs > 0 { + _, statusCode, err := client.SendRPC("eth_getBlockByNumber", []interface{}{"0x101", false}) + require.NoError(t, err) + require.Equal(t, 200, statusCode) + numberReqs-- + } + + // bring back node2 + nodes["node2"].handler.ResetOverrides() + update() + + // reset request counts + nodes["node1"].mockBackend.Reset() + nodes["node2"].mockBackend.Reset() + + require.Equal(t, 0, len(nodes["node1"].mockBackend.Requests())) + require.Equal(t, 0, len(nodes["node2"].mockBackend.Requests())) + + numberReqs = 10 + for numberReqs > 0 { + _, statusCode, err := client.SendRPC("eth_getBlockByNumber", []interface{}{"0x101", false}) + require.NoError(t, err) + require.Equal(t, 200, statusCode) + numberReqs-- + } + + msg := fmt.Sprintf("n1 %d, n2 %d", + len(nodes["node1"].mockBackend.Requests()), len(nodes["node2"].mockBackend.Requests())) + require.Equal(t, 0, len(nodes["node1"].mockBackend.Requests()), msg) + require.Equal(t, 10, len(nodes["node2"].mockBackend.Requests()), msg) + }) + + t.Run("rewrite response of eth_blockNumber", func(t *testing.T) { + reset() + update() + + totalRequests := len(nodes["node1"].mockBackend.Requests()) + len(nodes["node2"].mockBackend.Requests()) + require.Equal(t, 2, len(bg.Consensus.GetConsensusGroup())) + + resRaw, statusCode, err := client.SendRPC("eth_blockNumber", nil) + require.NoError(t, err) + require.Equal(t, 200, statusCode) + + var jsonMap map[string]interface{} + err = json.Unmarshal(resRaw, &jsonMap) + require.NoError(t, err) + require.Equal(t, "0x101", jsonMap["result"]) + + // no extra request hit the backends + require.Equal(t, totalRequests, + len(nodes["node1"].mockBackend.Requests())+len(nodes["node2"].mockBackend.Requests())) + }) + + t.Run("rewrite request of eth_getBlockByNumber for latest", func(t *testing.T) { + reset() + useOnlyNode1() + + _, statusCode, err := client.SendRPC("eth_getBlockByNumber", []interface{}{"latest"}) + require.NoError(t, err) + require.Equal(t, 200, statusCode) + + var jsonMap map[string]interface{} + err = json.Unmarshal(nodes["node1"].mockBackend.Requests()[0].Body, &jsonMap) + require.NoError(t, err) + require.Equal(t, "0x101", jsonMap["params"].([]interface{})[0]) + }) + + t.Run("rewrite request of eth_getBlockByNumber for finalized", func(t *testing.T) { + reset() + useOnlyNode1() + + _, statusCode, err := client.SendRPC("eth_getBlockByNumber", []interface{}{"finalized"}) + require.NoError(t, err) + require.Equal(t, 200, statusCode) + + var jsonMap map[string]interface{} + err = json.Unmarshal(nodes["node1"].mockBackend.Requests()[0].Body, &jsonMap) + require.NoError(t, err) + require.Equal(t, "0xc1", jsonMap["params"].([]interface{})[0]) + }) + + t.Run("rewrite request of eth_getBlockByNumber for safe", func(t *testing.T) { + reset() + useOnlyNode1() + + _, statusCode, err := client.SendRPC("eth_getBlockByNumber", []interface{}{"safe"}) + require.NoError(t, err) + require.Equal(t, 200, statusCode) + + var jsonMap map[string]interface{} + err = json.Unmarshal(nodes["node1"].mockBackend.Requests()[0].Body, &jsonMap) + require.NoError(t, err) + require.Equal(t, "0xe1", jsonMap["params"].([]interface{})[0]) + }) + + t.Run("rewrite request of eth_getBlockByNumber - out of range", func(t *testing.T) { + reset() + useOnlyNode1() + + resRaw, statusCode, err := client.SendRPC("eth_getBlockByNumber", []interface{}{"0x300"}) + require.NoError(t, err) + require.Equal(t, 400, statusCode) + + var jsonMap map[string]interface{} + err = json.Unmarshal(resRaw, &jsonMap) + require.NoError(t, err) + require.Equal(t, -32019, int(jsonMap["error"].(map[string]interface{})["code"].(float64))) + require.Equal(t, "block is out of range", jsonMap["error"].(map[string]interface{})["message"]) + }) + + t.Run("batched rewrite", func(t *testing.T) { + reset() + useOnlyNode1() + + resRaw, statusCode, err := client.SendBatchRPC( + NewRPCReq("1", "eth_getBlockByNumber", []interface{}{"latest"}), + NewRPCReq("2", "eth_getBlockByNumber", []interface{}{"0x102"}), + NewRPCReq("3", "eth_getBlockByNumber", []interface{}{"0xe1"})) + require.NoError(t, err) + require.Equal(t, 200, statusCode) + + var jsonMap []map[string]interface{} + err = json.Unmarshal(resRaw, &jsonMap) + require.NoError(t, err) + require.Equal(t, 3, len(jsonMap)) + + // rewrite latest to 0x101 + require.Equal(t, "0x101", jsonMap[0]["result"].(map[string]interface{})["number"]) + + // out of bounds for block 0x102 + require.Equal(t, -32019, int(jsonMap[1]["error"].(map[string]interface{})["code"].(float64))) + require.Equal(t, "block is out of range", jsonMap[1]["error"].(map[string]interface{})["message"]) + + // dont rewrite for 0xe1 + require.Equal(t, "0xe1", jsonMap[2]["result"].(map[string]interface{})["number"]) + }) + + t.Run("translate consensus_getReceipts to debug_getRawReceipts", func(t *testing.T) { + reset() + useOnlyNode1() + update() + + // reset request counts + nodes["node1"].mockBackend.Reset() + + resRaw, statusCode, err := client.SendRPC("consensus_getReceipts", + []interface{}{"0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b"}) + require.NoError(t, err) + require.Equal(t, 200, statusCode) + + var jsonMap map[string]interface{} + err = json.Unmarshal(nodes["node1"].mockBackend.Requests()[0].Body, &jsonMap) + require.NoError(t, err) + require.Equal(t, "debug_getRawReceipts", jsonMap["method"]) + require.Equal(t, "0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", jsonMap["params"].([]interface{})[0]) + + var resJsonMap map[string]interface{} + err = json.Unmarshal(resRaw, &resJsonMap) + require.NoError(t, err) + + require.Equal(t, "debug_getRawReceipts", resJsonMap["result"].(map[string]interface{})["method"].(string)) + require.Equal(t, "debug_getRawReceipts", resJsonMap["result"].(map[string]interface{})["result"].(map[string]interface{})["_"]) + }) + + t.Run("translate consensus_getReceipts to debug_getRawReceipts with latest block tag", func(t *testing.T) { + reset() + useOnlyNode1() + update() + + // reset request counts + nodes["node1"].mockBackend.Reset() + + resRaw, statusCode, err := client.SendRPC("consensus_getReceipts", + []interface{}{"latest"}) + + require.NoError(t, err) + require.Equal(t, 200, statusCode) + + var jsonMap map[string]interface{} + err = json.Unmarshal(nodes["node1"].mockBackend.Requests()[0].Body, &jsonMap) + require.NoError(t, err) + require.Equal(t, "debug_getRawReceipts", jsonMap["method"]) + require.Equal(t, "0x101", jsonMap["params"].([]interface{})[0]) + + var resJsonMap map[string]interface{} + err = json.Unmarshal(resRaw, &resJsonMap) + require.NoError(t, err) + + require.Equal(t, "debug_getRawReceipts", resJsonMap["result"].(map[string]interface{})["method"].(string)) + require.Equal(t, "debug_getRawReceipts", resJsonMap["result"].(map[string]interface{})["result"].(map[string]interface{})["_"]) + }) + + t.Run("translate consensus_getReceipts to debug_getRawReceipts with block number", func(t *testing.T) { + reset() + useOnlyNode1() + update() + + // reset request counts + nodes["node1"].mockBackend.Reset() + + resRaw, statusCode, err := client.SendRPC("consensus_getReceipts", + []interface{}{"0x55"}) + + require.NoError(t, err) + require.Equal(t, 200, statusCode) + + var jsonMap map[string]interface{} + err = json.Unmarshal(nodes["node1"].mockBackend.Requests()[0].Body, &jsonMap) + require.NoError(t, err) + require.Equal(t, "debug_getRawReceipts", jsonMap["method"]) + require.Equal(t, "0x55", jsonMap["params"].([]interface{})[0]) + + var resJsonMap map[string]interface{} + err = json.Unmarshal(resRaw, &resJsonMap) + require.NoError(t, err) + + require.Equal(t, "debug_getRawReceipts", resJsonMap["result"].(map[string]interface{})["method"].(string)) + require.Equal(t, "debug_getRawReceipts", resJsonMap["result"].(map[string]interface{})["result"].(map[string]interface{})["_"]) + }) + + t.Run("translate consensus_getReceipts to alchemy_getTransactionReceipts with block hash", func(t *testing.T) { + reset() + useOnlyNode1() + update() + + // reset request counts + nodes["node1"].mockBackend.Reset() + + nodes["node1"].backend.Override(proxyd.WithConsensusReceiptTarget("alchemy_getTransactionReceipts")) + defer nodes["node1"].backend.Override(proxyd.WithConsensusReceiptTarget("debug_getRawReceipts")) + + resRaw, statusCode, err := client.SendRPC("consensus_getReceipts", + []interface{}{"0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b"}) + + require.NoError(t, err) + require.Equal(t, 200, statusCode) + + var reqJsonMap map[string]interface{} + err = json.Unmarshal(nodes["node1"].mockBackend.Requests()[0].Body, &reqJsonMap) + + require.NoError(t, err) + require.Equal(t, "alchemy_getTransactionReceipts", reqJsonMap["method"]) + require.Equal(t, "0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", reqJsonMap["params"].([]interface{})[0].(map[string]interface{})["blockHash"]) + + var resJsonMap map[string]interface{} + err = json.Unmarshal(resRaw, &resJsonMap) + require.NoError(t, err) + + require.Equal(t, "alchemy_getTransactionReceipts", resJsonMap["result"].(map[string]interface{})["method"].(string)) + require.Equal(t, "alchemy_getTransactionReceipts", resJsonMap["result"].(map[string]interface{})["result"].(map[string]interface{})["_"]) + }) + + t.Run("translate consensus_getReceipts to alchemy_getTransactionReceipts with block number", func(t *testing.T) { + reset() + useOnlyNode1() + update() + + // reset request counts + nodes["node1"].mockBackend.Reset() + + nodes["node1"].backend.Override(proxyd.WithConsensusReceiptTarget("alchemy_getTransactionReceipts")) + defer nodes["node1"].backend.Override(proxyd.WithConsensusReceiptTarget("debug_getRawReceipts")) + + resRaw, statusCode, err := client.SendRPC("consensus_getReceipts", + []interface{}{"0x55"}) + + require.NoError(t, err) + require.Equal(t, 200, statusCode) + + var reqJsonMap map[string]interface{} + err = json.Unmarshal(nodes["node1"].mockBackend.Requests()[0].Body, &reqJsonMap) + + require.NoError(t, err) + require.Equal(t, "alchemy_getTransactionReceipts", reqJsonMap["method"]) + require.Equal(t, "0x55", reqJsonMap["params"].([]interface{})[0].(map[string]interface{})["blockNumber"]) + + var resJsonMap map[string]interface{} + err = json.Unmarshal(resRaw, &resJsonMap) + require.NoError(t, err) + + require.Equal(t, "alchemy_getTransactionReceipts", resJsonMap["result"].(map[string]interface{})["method"].(string)) + require.Equal(t, "alchemy_getTransactionReceipts", resJsonMap["result"].(map[string]interface{})["result"].(map[string]interface{})["_"]) + }) + + t.Run("translate consensus_getReceipts to alchemy_getTransactionReceipts with latest block tag", func(t *testing.T) { + reset() + useOnlyNode1() + update() + + // reset request counts + nodes["node1"].mockBackend.Reset() + + nodes["node1"].backend.Override(proxyd.WithConsensusReceiptTarget("alchemy_getTransactionReceipts")) + defer nodes["node1"].backend.Override(proxyd.WithConsensusReceiptTarget("debug_getRawReceipts")) + + resRaw, statusCode, err := client.SendRPC("consensus_getReceipts", + []interface{}{"latest"}) + + require.NoError(t, err) + require.Equal(t, 200, statusCode) + + var reqJsonMap map[string]interface{} + err = json.Unmarshal(nodes["node1"].mockBackend.Requests()[0].Body, &reqJsonMap) + + require.NoError(t, err) + require.Equal(t, "alchemy_getTransactionReceipts", reqJsonMap["method"]) + require.Equal(t, "0x101", reqJsonMap["params"].([]interface{})[0].(map[string]interface{})["blockNumber"]) + + var resJsonMap map[string]interface{} + err = json.Unmarshal(resRaw, &resJsonMap) + require.NoError(t, err) + + require.Equal(t, "alchemy_getTransactionReceipts", resJsonMap["result"].(map[string]interface{})["method"].(string)) + require.Equal(t, "alchemy_getTransactionReceipts", resJsonMap["result"].(map[string]interface{})["result"].(map[string]interface{})["_"]) + }) + + t.Run("translate consensus_getReceipts to unsupported consensus_receipts_target", func(t *testing.T) { + reset() + useOnlyNode1() + + nodes["node1"].backend.Override(proxyd.WithConsensusReceiptTarget("unsupported_consensus_receipts_target")) + defer nodes["node1"].backend.Override(proxyd.WithConsensusReceiptTarget("debug_getRawReceipts")) + + _, statusCode, err := client.SendRPC("consensus_getReceipts", + []interface{}{"latest"}) + + require.NoError(t, err) + require.Equal(t, 400, statusCode) + }) + + t.Run("consensus_getReceipts should not be used in a batch", func(t *testing.T) { + reset() + useOnlyNode1() + + _, statusCode, err := client.SendBatchRPC( + NewRPCReq("1", "eth_getBlockByNumber", []interface{}{"latest"}), + NewRPCReq("2", "consensus_getReceipts", []interface{}{"0x55"}), + NewRPCReq("3", "eth_getBlockByNumber", []interface{}{"0xe1"})) + require.NoError(t, err) + require.Equal(t, 400, statusCode) + }) +} + +func buildResponse(result interface{}) string { + res, err := json.Marshal(proxyd.RPCRes{ + Result: result, + }) + if err != nil { + panic(err) + } + return string(res) +} diff --git a/go/proxyd/integration_tests/failover_test.go b/go/proxyd/integration_tests/failover_test.go index 47c9e2667b..501542a1ef 100644 --- a/go/proxyd/integration_tests/failover_test.go +++ b/go/proxyd/integration_tests/failover_test.go @@ -30,7 +30,7 @@ func TestFailover(t *testing.T) { config := ReadConfig("failover") client := NewProxydClient("http://127.0.0.1:8545") - shutdown, err := proxyd.Start(config) + _, shutdown, err := proxyd.Start(config) require.NoError(t, err) defer shutdown() @@ -128,7 +128,7 @@ func TestRetries(t *testing.T) { require.NoError(t, os.Setenv("GOOD_BACKEND_RPC_URL", backend.URL())) config := ReadConfig("retries") client := NewProxydClient("http://127.0.0.1:8545") - shutdown, err := proxyd.Start(config) + _, shutdown, err := proxyd.Start(config) require.NoError(t, err) defer shutdown() @@ -171,7 +171,7 @@ func TestOutOfServiceInterval(t *testing.T) { config := ReadConfig("out_of_service_interval") client := NewProxydClient("http://127.0.0.1:8545") - shutdown, err := proxyd.Start(config) + _, shutdown, err := proxyd.Start(config) require.NoError(t, err) defer shutdown() @@ -190,7 +190,7 @@ func TestOutOfServiceInterval(t *testing.T) { require.NoError(t, err) require.Equal(t, 200, statusCode) RequireEqualJSON(t, []byte(goodResponse), res) - require.Equal(t, 2, len(badBackend.Requests())) + require.Equal(t, 4, len(badBackend.Requests())) require.Equal(t, 2, len(goodBackend.Requests())) _, statusCode, err = client.SendBatchRPC( @@ -199,7 +199,7 @@ func TestOutOfServiceInterval(t *testing.T) { ) require.NoError(t, err) require.Equal(t, 200, statusCode) - require.Equal(t, 2, len(badBackend.Requests())) + require.Equal(t, 8, len(badBackend.Requests())) require.Equal(t, 4, len(goodBackend.Requests())) time.Sleep(time.Second) @@ -209,7 +209,7 @@ func TestOutOfServiceInterval(t *testing.T) { require.NoError(t, err) require.Equal(t, 200, statusCode) RequireEqualJSON(t, []byte(goodResponse), res) - require.Equal(t, 3, len(badBackend.Requests())) + require.Equal(t, 9, len(badBackend.Requests())) require.Equal(t, 4, len(goodBackend.Requests())) } @@ -226,7 +226,7 @@ func TestBatchWithPartialFailover(t *testing.T) { require.NoError(t, os.Setenv("BAD_BACKEND_RPC_URL", badBackend.URL())) client := NewProxydClient("http://127.0.0.1:8545") - shutdown, err := proxyd.Start(config) + _, shutdown, err := proxyd.Start(config) require.NoError(t, err) defer shutdown() @@ -261,7 +261,6 @@ func TestInfuraFailoverOnUnexpectedResponse(t *testing.T) { config.BackendOptions.MaxRetries = 2 // Setup redis to detect offline backends config.Redis.URL = fmt.Sprintf("redis://127.0.0.1:%s", redis.Port()) - redisClient, err := proxyd.NewRedisClient(config.Redis.URL) require.NoError(t, err) goodBackend := NewMockBackend(BatchedResponseHandler(200, goodResponse, goodResponse)) @@ -273,7 +272,7 @@ func TestInfuraFailoverOnUnexpectedResponse(t *testing.T) { require.NoError(t, os.Setenv("BAD_BACKEND_RPC_URL", badBackend.URL())) client := NewProxydClient("http://127.0.0.1:8545") - shutdown, err := proxyd.Start(config) + _, shutdown, err := proxyd.Start(config) require.NoError(t, err) defer shutdown() @@ -286,10 +285,4 @@ func TestInfuraFailoverOnUnexpectedResponse(t *testing.T) { RequireEqualJSON(t, []byte(asArray(goodResponse, goodResponse)), res) require.Equal(t, 1, len(badBackend.Requests())) require.Equal(t, 1, len(goodBackend.Requests())) - - rr := proxyd.NewRedisRateLimiter(redisClient) - require.NoError(t, err) - online, err := rr.IsBackendOnline("bad") - require.NoError(t, err) - require.Equal(t, true, online) } diff --git a/go/proxyd/integration_tests/max_rpc_conns_test.go b/go/proxyd/integration_tests/max_rpc_conns_test.go index 1ee1febe1c..5e2336443b 100644 --- a/go/proxyd/integration_tests/max_rpc_conns_test.go +++ b/go/proxyd/integration_tests/max_rpc_conns_test.go @@ -41,7 +41,7 @@ func TestMaxConcurrentRPCs(t *testing.T) { config := ReadConfig("max_rpc_conns") client := NewProxydClient("http://127.0.0.1:8545") - shutdown, err := proxyd.Start(config) + _, shutdown, err := proxyd.Start(config) require.NoError(t, err) defer shutdown() diff --git a/go/proxyd/integration_tests/mock_backend_test.go b/go/proxyd/integration_tests/mock_backend_test.go index ade879c6ee..bf45d03f1c 100644 --- a/go/proxyd/integration_tests/mock_backend_test.go +++ b/go/proxyd/integration_tests/mock_backend_test.go @@ -77,6 +77,7 @@ func (h *BatchRPCResponseRouter) SetRoute(method string, id string, result inter switch result.(type) { case string: + case []string: case nil: break default: diff --git a/go/proxyd/integration_tests/rate_limit_test.go b/go/proxyd/integration_tests/rate_limit_test.go index 7a70deacf2..4e17f625c1 100644 --- a/go/proxyd/integration_tests/rate_limit_test.go +++ b/go/proxyd/integration_tests/rate_limit_test.go @@ -21,23 +21,6 @@ const frontendOverLimitResponseWithID = `{"error":{"code":-32016,"message":"over var ethChainID = "eth_chainId" -func TestBackendMaxRPSLimit(t *testing.T) { - goodBackend := NewMockBackend(BatchedResponseHandler(200, goodResponse)) - defer goodBackend.Close() - - require.NoError(t, os.Setenv("GOOD_BACKEND_RPC_URL", goodBackend.URL())) - - config := ReadConfig("backend_rate_limit") - client := NewProxydClient("http://127.0.0.1:8545") - shutdown, err := proxyd.Start(config) - require.NoError(t, err) - defer shutdown() - limitedRes, codes := spamReqs(t, client, ethChainID, 503, 3) - require.Equal(t, 2, codes[200]) - require.Equal(t, 1, codes[503]) - RequireEqualJSON(t, []byte(noBackendsResponse), limitedRes) -} - func TestFrontendMaxRPSLimit(t *testing.T) { goodBackend := NewMockBackend(BatchedResponseHandler(200, goodResponse)) defer goodBackend.Close() @@ -45,7 +28,7 @@ func TestFrontendMaxRPSLimit(t *testing.T) { require.NoError(t, os.Setenv("GOOD_BACKEND_RPC_URL", goodBackend.URL())) config := ReadConfig("frontend_rate_limit") - shutdown, err := proxyd.Start(config) + _, shutdown, err := proxyd.Start(config) require.NoError(t, err) defer shutdown() diff --git a/go/proxyd/integration_tests/sender_rate_limit_test.go b/go/proxyd/integration_tests/sender_rate_limit_test.go index b8a77307f1..20c5f0a7cd 100644 --- a/go/proxyd/integration_tests/sender_rate_limit_test.go +++ b/go/proxyd/integration_tests/sender_rate_limit_test.go @@ -20,12 +20,10 @@ const txHex1 = "0x02f8b28201a406849502f931849502f931830147f9948f3ddd0fbf3e78ca1d "1145d2f3e759d49209fe96011ac012884ec5b017a0763b58f6fa6096e6ba28ee" + "08bfac58f58fb3b8bcef5af98578bdeaddf40bde42" -const txHex2 = "0xf8aa82afd2830f4240830493e094464959ad46e64046b891f562cff202a465d5" + - "22f380b844d5bade070000000000000000000000004200000000000000000000" + - "0000000000000000060000000000000000000000000000000000000000000000" + - "0000000025ef43fc0038a05d8ea9837ea81469bda4dadbe852fdd37fcfbcd666" + - "5641a35e4726fbc04364e7a0107e20bb34aea53c695a551204a11d42fe465055" + - "510ee240e8f884fb70289be6" +const txHex2 = "0x02f8758201a48217fd84773594008504a817c80082520894be53e587975603" + + "a13d0923d0aa6d37c5233dd750865af3107a400080c080a04aefbd5819c35729" + + "138fe26b6ae1783ebf08d249b356c2f920345db97877f3f7a008d5ae92560a3c" + + "65f723439887205713af7ce7d7f6b24fba198f2afa03435867" const dummyRes = `{"id": 123, "jsonrpc": "2.0", "result": "dummy"}` @@ -43,7 +41,7 @@ func TestSenderRateLimitValidation(t *testing.T) { // validation. config.SenderRateLimit.Limit = math.MaxInt client := NewProxydClient("http://127.0.0.1:8545") - shutdown, err := proxyd.Start(config) + _, shutdown, err := proxyd.Start(config) require.NoError(t, err) defer shutdown() @@ -73,7 +71,7 @@ func TestSenderRateLimitLimiting(t *testing.T) { config := ReadConfig("sender_rate_limit") client := NewProxydClient("http://127.0.0.1:8545") - shutdown, err := proxyd.Start(config) + _, shutdown, err := proxyd.Start(config) require.NoError(t, err) defer shutdown() @@ -81,10 +79,10 @@ func TestSenderRateLimitLimiting(t *testing.T) { // should be rate limited. res1, code1, err := client.SendRequest(makeSendRawTransaction(txHex1)) require.NoError(t, err) - res2, code2, err := client.SendRequest(makeSendRawTransaction(txHex1)) - require.NoError(t, err) RequireEqualJSON(t, []byte(dummyRes), res1) require.Equal(t, 200, code1) + res2, code2, err := client.SendRequest(makeSendRawTransaction(txHex1)) + require.NoError(t, err) RequireEqualJSON(t, []byte(limRes), res2) require.Equal(t, 429, code2) diff --git a/go/proxyd/integration_tests/testdata/caching.toml b/go/proxyd/integration_tests/testdata/caching.toml index cd14ff3ab4..41bc65b9a7 100644 --- a/go/proxyd/integration_tests/testdata/caching.toml +++ b/go/proxyd/integration_tests/testdata/caching.toml @@ -6,11 +6,10 @@ response_timeout_seconds = 1 [redis] url = "$REDIS_URL" +namespace = "proxyd" [cache] enabled = true -block_sync_rpc_url = "$GOOD_BACKEND_RPC_URL" - [backends] [backends.good] @@ -27,3 +26,11 @@ net_version = "main" eth_getBlockByNumber = "main" eth_blockNumber = "main" eth_call = "main" +eth_getBlockTransactionCountByHash = "main" +eth_getUncleCountByBlockHash = "main" +eth_getBlockByHash = "main" +eth_getTransactionByHash = "main" +eth_getTransactionByBlockHashAndIndex = "main" +eth_getUncleByBlockHashAndIndex = "main" +eth_getTransactionReceipt = "main" +debug_getRawReceipts = "main" diff --git a/go/proxyd/integration_tests/testdata/consensus.toml b/go/proxyd/integration_tests/testdata/consensus.toml new file mode 100644 index 0000000000..bb130368ea --- /dev/null +++ b/go/proxyd/integration_tests/testdata/consensus.toml @@ -0,0 +1,30 @@ +[server] +rpc_port = 8545 + +[backend] +response_timeout_seconds = 1 +max_degraded_latency_threshold = "30ms" + +[backends] +[backends.node1] +rpc_url = "$NODE1_URL" + +[backends.node2] +rpc_url = "$NODE2_URL" + +[backend_groups] +[backend_groups.node] +backends = ["node1", "node2"] +consensus_aware = true +consensus_handler = "noop" # allow more control over the consensus poller for tests +consensus_ban_period = "1m" +consensus_max_update_threshold = "2m" +consensus_max_block_lag = 8 +consensus_min_peer_count = 4 + +[rpc_method_mappings] +eth_call = "node" +eth_chainId = "node" +eth_blockNumber = "node" +eth_getBlockByNumber = "node" +consensus_getReceipts = "node" diff --git a/go/proxyd/integration_tests/testdata/consensus_responses.yml b/go/proxyd/integration_tests/testdata/consensus_responses.yml new file mode 100644 index 0000000000..642c3340f0 --- /dev/null +++ b/go/proxyd/integration_tests/testdata/consensus_responses.yml @@ -0,0 +1,234 @@ +- method: eth_chainId + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": "hello", + } +- method: net_peerCount + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": "0x10" + } +- method: eth_syncing + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": false + } +- method: eth_getBlockByNumber + block: latest + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash_0x101", + "number": "0x101" + } + } +- method: eth_getBlockByNumber + block: 0x101 + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash_0x101", + "number": "0x101" + } + } +- method: eth_getBlockByNumber + block: 0x102 + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash_0x102", + "number": "0x102" + } + } +- method: eth_getBlockByNumber + block: 0x103 + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash_0x103", + "number": "0x103" + } + } +- method: eth_getBlockByNumber + block: 0x10a + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash_0x10a", + "number": "0x10a" + } + } +- method: eth_getBlockByNumber + block: 0x132 + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash_0x132", + "number": "0x132" + } + } +- method: eth_getBlockByNumber + block: 0x133 + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash_0x133", + "number": "0x133" + } + } +- method: eth_getBlockByNumber + block: 0x134 + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash_0x134", + "number": "0x134" + } + } +- method: eth_getBlockByNumber + block: 0x200 + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash_0x200", + "number": "0x200" + } + } +- method: eth_getBlockByNumber + block: 0x91 + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash_0x91", + "number": "0x91" + } + } +- method: eth_getBlockByNumber + block: safe + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash_0xe1", + "number": "0xe1" + } + } +- method: eth_getBlockByNumber + block: 0xe1 + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash_0xe1", + "number": "0xe1" + } + } +- method: eth_getBlockByNumber + block: finalized + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash_0xc1", + "number": "0xc1" + } + } +- method: eth_getBlockByNumber + block: 0xc1 + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash_0xc1", + "number": "0xc1" + } + } +- method: eth_getBlockByNumber + block: 0xd1 + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash_0xd1", + "number": "0xd1" + } + } +- method: debug_getRawReceipts + block: 0x55 + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "_": "debug_getRawReceipts" + } + } +- method: debug_getRawReceipts + block: 0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "_": "debug_getRawReceipts" + } + } +- method: debug_getRawReceipts + block: 0x101 + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "_": "debug_getRawReceipts" + } + } +- method: eth_getTransactionReceipt + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "_": "eth_getTransactionReceipt" + } + } +- method: alchemy_getTransactionReceipts + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "_": "alchemy_getTransactionReceipts" + } + } diff --git a/go/proxyd/integration_tests/testdata/out_of_service_interval.toml b/go/proxyd/integration_tests/testdata/out_of_service_interval.toml index 46112510a8..157fa06c18 100644 --- a/go/proxyd/integration_tests/testdata/out_of_service_interval.toml +++ b/go/proxyd/integration_tests/testdata/out_of_service_interval.toml @@ -20,6 +20,3 @@ backends = ["bad", "good"] [rpc_method_mappings] eth_chainId = "main" - -[rate_limit] -enable_backend_rate_limiter = true \ No newline at end of file diff --git a/go/proxyd/integration_tests/testdata/sender_rate_limit.toml b/go/proxyd/integration_tests/testdata/sender_rate_limit.toml index 840c295f61..024858a1e7 100644 --- a/go/proxyd/integration_tests/testdata/sender_rate_limit.toml +++ b/go/proxyd/integration_tests/testdata/sender_rate_limit.toml @@ -20,4 +20,5 @@ eth_sendRawTransaction = "main" [sender_rate_limit] enabled = true interval = "1s" -limit = 1 \ No newline at end of file +limit = 1 +allowed_chain_ids = [420] diff --git a/go/proxyd/integration_tests/testdata/backend_rate_limit.toml b/go/proxyd/integration_tests/testdata/size_limits.toml similarity index 61% rename from go/proxyd/integration_tests/testdata/backend_rate_limit.toml rename to go/proxyd/integration_tests/testdata/size_limits.toml index 17500f3332..bd4afab534 100644 --- a/go/proxyd/integration_tests/testdata/backend_rate_limit.toml +++ b/go/proxyd/integration_tests/testdata/size_limits.toml @@ -1,21 +1,21 @@ +whitelist_error_message = "rpc method is not whitelisted custom message" + [server] rpc_port = 8545 +max_request_body_size_bytes = 150 [backend] response_timeout_seconds = 1 +max_response_size_bytes = 1 [backends] [backends.good] rpc_url = "$GOOD_BACKEND_RPC_URL" ws_url = "$GOOD_BACKEND_RPC_URL" -max_rps = 2 [backend_groups] [backend_groups.main] backends = ["good"] [rpc_method_mappings] -eth_chainId = "main" - -[rate_limit] -enable_backend_rate_limiter = true \ No newline at end of file +eth_chainId = "main" \ No newline at end of file diff --git a/go/proxyd/integration_tests/testdata/testdata.txt b/go/proxyd/integration_tests/testdata/testdata.txt index 49d0a874d7..7e31927baa 100644 --- a/go/proxyd/integration_tests/testdata/testdata.txt +++ b/go/proxyd/integration_tests/testdata/testdata.txt @@ -8,4 +8,6 @@ invalid transaction data|{"jsonrpc":"2.0","method":"eth_sendRawTransaction","par invalid transaction data|{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0x1234"],"id":1}|{"jsonrpc":"2.0","error":{"code":-32602,"message":"transaction type not supported"},"id":1} valid transaction data - simple send|{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0x02f8748201a415843b9aca31843b9aca3182520894f80267194936da1e98db10bce06f3147d580a62e880de0b6b3a764000080c001a0b50ee053102360ff5fedf0933b912b7e140c90fe57fa07a0cebe70dbd72339dda072974cb7bfe5c3dc54dde110e2b049408ccab8a879949c3b4d42a3a7555a618b"],"id":1}|{"id": 123, "jsonrpc": "2.0", "result": "dummy"} valid transaction data - contract call|{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0x02f8b28201a406849502f931849502f931830147f9948f3ddd0fbf3e78ca1d6cd17379ed88e261249b5280b84447e7ef2400000000000000000000000089c8b1b2774201bac50f627403eac1b732459cf70000000000000000000000000000000000000000000000056bc75e2d63100000c080a0473c95566026c312c9664cd61145d2f3e759d49209fe96011ac012884ec5b017a0763b58f6fa6096e6ba28ee08bfac58f58fb3b8bcef5af98578bdeaddf40bde42"],"id":1}|{"id": 123, "jsonrpc": "2.0", "result": "dummy"} -batch with mixed results|[{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0x02f8748201a415843b9aca31843b9aca3182520894f80267194936da1e98db10bce06f3147d580a62e880de0b6b3a764000080c001a0b50ee053102360ff5fedf0933b912b7e140c90fe57fa07a0cebe70dbd72339dda072974cb7bfe5c3dc54dde110e2b049408ccab8a879949c3b4d42a3a7555a618b"],"id":1},{"bad":"json"},{"jsonrpc":"2.0","method":"eth_fooTheBar","params":[],"id":123}]|[{"id": 123, "jsonrpc": "2.0", "result": "dummy"},{"jsonrpc":"2.0","error":{"code":-32600,"message":"invalid JSON-RPC version"},"id":null},{"jsonrpc":"2.0","error":{"code":-32001,"message":"rpc method is not whitelisted"},"id":123}] \ No newline at end of file +valid chain id - simple send|{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0x02f8748201a415843b9aca31843b9aca3182520894f80267194936da1e98db10bce06f3147d580a62e880de0b6b3a764000080c001a0b50ee053102360ff5fedf0933b912b7e140c90fe57fa07a0cebe70dbd72339dda072974cb7bfe5c3dc54dde110e2b049408ccab8a879949c3b4d42a3a7555a618b"],"id":1}|{"id": 123, "jsonrpc": "2.0", "result": "dummy"} +invalid chain id - simple send|{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0x02f87683ab41308217af84773594008504a817c80082520894be53e587975603a13d0923d0aa6d37c5233dd750865af3107a400080c001a04ae265f17e882b922d39f0f0cb058a6378df1dc89da8b8165ab6bc53851b426aa0682079486be2aa23bc7514477473362cc7d63afa12c99f7d8fb15e68d69d9a48"],"id":1}|{"jsonrpc":"2.0","error":{"code":-32000,"message":"invalid sender"},"id":1} +batch with mixed results|[{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0x02f87683ab41308217af84773594008504a817c80082520894be53e587975603a13d0923d0aa6d37c5233dd750865af3107a400080c001a04ae265f17e882b922d39f0f0cb058a6378df1dc89da8b8165ab6bc53851b426aa0682079486be2aa23bc7514477473362cc7d63afa12c99f7d8fb15e68d69d9a48"],"id":1},{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0x02f8748201a415843b9aca31843b9aca3182520894f80267194936da1e98db10bce06f3147d580a62e880de0b6b3a764000080c001a0b50ee053102360ff5fedf0933b912b7e140c90fe57fa07a0cebe70dbd72339dda072974cb7bfe5c3dc54dde110e2b049408ccab8a879949c3b4d42a3a7555a618b"],"id":1},{"bad":"json"},{"jsonrpc":"2.0","method":"eth_fooTheBar","params":[],"id":123}]|[{"jsonrpc":"2.0","error":{"code":-32000,"message":"invalid sender"},"id":1},{"id": 123, "jsonrpc": "2.0", "result": "dummy"},{"jsonrpc":"2.0","error":{"code":-32600,"message":"invalid JSON-RPC version"},"id":null},{"jsonrpc":"2.0","error":{"code":-32001,"message":"rpc method is not whitelisted"},"id":123}] diff --git a/go/proxyd/integration_tests/testdata/ws.toml b/go/proxyd/integration_tests/testdata/ws.toml index 17ecce48c5..4642e6bc0f 100644 --- a/go/proxyd/integration_tests/testdata/ws.toml +++ b/go/proxyd/integration_tests/testdata/ws.toml @@ -4,18 +4,15 @@ ws_backend_group = "main" ws_method_whitelist = [ "eth_subscribe", - "eth_accounts", - "eth_sendRawTransaction" + "eth_accounts" ] [server] rpc_port = 8545 ws_port = 8546 -max_body_size_bytes = 10000 [backend] response_timeout_seconds = 1 -max_response_size_bytes = 10000 [backends] [backends.good] @@ -29,11 +26,3 @@ backends = ["good"] [rpc_method_mappings] eth_chainId = "main" - -[rate_limit] -enable_backend_rate_limiter = true - -[sender_rate_limit] -enabled = true -limit = 10000 -interval = "1s" diff --git a/go/proxyd/integration_tests/testdata/ws_frontend_rate_limit.toml b/go/proxyd/integration_tests/testdata/ws_frontend_rate_limit.toml deleted file mode 100644 index 4f437a0cc1..0000000000 --- a/go/proxyd/integration_tests/testdata/ws_frontend_rate_limit.toml +++ /dev/null @@ -1,35 +0,0 @@ -whitelist_error_message = "rpc method is not whitelisted" - -ws_backend_group = "main" - -ws_method_whitelist = [ - "eth_subscribe", - "eth_accounts" -] - -[server] -rpc_port = 8545 -ws_port = 8546 - -[backend] -response_timeout_seconds = 1 - -[backends] -[backends.good] -rpc_url = "$GOOD_BACKEND_RPC_URL" -ws_url = "$GOOD_BACKEND_RPC_URL" - -[backend_groups] -[backend_groups.main] -backends = ["good"] - -[rpc_method_mappings] -eth_chainId = "main" - -[rate_limit] -enable_backend_rate_limiter = true -base_rate = 1 -base_interval = "1s" -exempt_origins = ["wss://127.0.0.1:8546"] -exempt_user_agents = ["exempt_agent"] -error_message = "over rate limit with special message" diff --git a/go/proxyd/integration_tests/testdata/ws_sender_rate_limit.toml b/go/proxyd/integration_tests/testdata/ws_sender_rate_limit.toml deleted file mode 100644 index 1d9c15db2a..0000000000 --- a/go/proxyd/integration_tests/testdata/ws_sender_rate_limit.toml +++ /dev/null @@ -1,34 +0,0 @@ -whitelist_error_message = "rpc method is not whitelisted" - -ws_backend_group = "main" - -ws_method_whitelist = [ - "eth_subscribe", - "eth_accounts", - "eth_sendRawTransaction" -] - -[server] -rpc_port = 8545 -ws_port = 8546 - -[backend] -response_timeout_seconds = 1 - -[backends] -[backends.good] -rpc_url = "$GOOD_BACKEND_RPC_URL" -ws_url = "$GOOD_BACKEND_RPC_URL" - -[backend_groups] -[backend_groups.main] -backends = ["good"] - -[rpc_method_mappings] -eth_chainId = "main" -eth_sendRawTransaction = "main" - -[sender_rate_limit] -enabled = true -interval = "1s" -limit = 1 diff --git a/go/proxyd/integration_tests/testdata/ws_testdata.txt b/go/proxyd/integration_tests/testdata/ws_testdata.txt deleted file mode 100644 index 1be686fa7f..0000000000 --- a/go/proxyd/integration_tests/testdata/ws_testdata.txt +++ /dev/null @@ -1,13 +0,0 @@ -name|body|responseBody -not json|not json|{"jsonrpc":"2.0","error":{"code":-32700,"message":"parse error"},"id":null}| -not json-rpc|{"foo":"bar"}|{"jsonrpc":"2.0","error":{"code":-32600,"message":"invalid JSON-RPC version"},"id":null}| -missing fields json-rpc|{"jsonrpc":"2.0"}|{"jsonrpc":"2.0","error":{"code":-32600,"message":"no method specified"},"id":null}| -bad method json-rpc|{"jsonrpc":"2.0","method":"eth_notSendRawTransaction","id":1}|{"jsonrpc":"2.0","error":{"code":-32001,"message":"rpc method is not whitelisted"},"id":1}| -no transaction data|{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":[],"id":1}|{"jsonrpc":"2.0","error":{"code":-32602,"message":"missing value for required argument 0"},"id":1}| -invalid transaction data|{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0xf6806872fcc650ad4e77e0629206426cd183d751e9ddcc8d5e77"],"id":1}|{"jsonrpc":"2.0","error":{"code":-32602,"message":"rlp: value size exceeds available input length"},"id":1}| -invalid transaction data|{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0x1234"],"id":1}|{"jsonrpc":"2.0","error":{"code":-32602,"message":"transaction type not supported"},"id":1}| -valid transaction data - simple send|{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0x02f8748201a415843b9aca31843b9aca3182520894f80267194936da1e98db10bce06f3147d580a62e880de0b6b3a764000080c001a0b50ee053102360ff5fedf0933b912b7e140c90fe57fa07a0cebe70dbd72339dda072974cb7bfe5c3dc54dde110e2b049408ccab8a879949c3b4d42a3a7555a618b"],"id":1}|{"id": 123, "jsonrpc": "2.0", "result": "dummy"}| -valid transaction data - contract call|{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0x02f8b28201a406849502f931849502f931830147f9948f3ddd0fbf3e78ca1d6cd17379ed88e261249b5280b84447e7ef2400000000000000000000000089c8b1b2774201bac50f627403eac1b732459cf70000000000000000000000000000000000000000000000056bc75e2d63100000c080a0473c95566026c312c9664cd61145d2f3e759d49209fe96011ac012884ec5b017a0763b58f6fa6096e6ba28ee08bfac58f58fb3b8bcef5af98578bdeaddf40bde42"],"id":1}|{"id": 123, "jsonrpc": "2.0", "result": "dummy"}| -batch with mixed results|[{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0x02f8748201a415843b9aca31843b9aca3182520894f80267194936da1e98db10bce06f3147d580a62e880de0b6b3a764000080c001a0b50ee053102360ff5fedf0933b912b7e140c90fe57fa07a0cebe70dbd72339dda072974cb7bfe5c3dc54dde110e2b049408ccab8a879949c3b4d42a3a7555a618b"],"id":1},{"bad":"json"},{"jsonrpc":"2.0","method":"eth_fooTheBar","params":[],"id":123}]|{"jsonrpc":"2.0","error":{"code":-32700,"message":"parse error"},"id":null}| -input too long|{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0xf950d882012e843b9aca008359d6b38080b95082608060405234801561001057600080fd5b50600080546001600160a01b0319169055615052806100306000396000f3fe6080604052600436106102a05760003560e01c80636854e22b1161016e57806398fabd3a116100cb578063c58827ea1161007f578063ecb12db011610064578063ecb12db0146107fa578063f2fde38b1461081a578063f48712681461083a57600080fd5b8063c58827ea146107c7578063c95f9d0e146107e757600080fd5b80639a7b5f11116100b05780639a7b5f11146106d6578063b4eeb98814610787578063bd2d1cab146107a757600080fd5b806398fabd3a14610693578063997d73df146106bb57600080fd5b8063744a5aa21161012257806381e6bdac1161010757806381e6bdac1461063e5780638456cb591461065e5780638da5cb5b1461067357600080fd5b8063744a5aa21461061257806377b594a21461062857600080fd5b80636af9f1c2116101535780636af9f1c2146105bc57806370ac3180146105dc5780637286e5e5146105f257600080fd5b80636854e22b1461056a57806368be42ca1461059c57600080fd5b80633cb747bf1161021c578063485cc955116101d0578063531645cb116101b5578063531645cb146105125780635c975abb14610532578063650a767b1461054a57600080fd5b8063485cc955146104d257806349561dc4146104f257600080fd5b80633f4ba83a116102015780633f4ba83a1461047d5780633f89e9521461049257806341132e4c146104b257600080fd5b80633cb747bf1461043d5780633d93941b1461045d57600080fd5b80631786e46d116102735780631f0bfb8c116102585780631f0bfb8c146103b957806334636648146103f9578063358fc07e1461041957600080fd5b80631786e46d146103865780631d00a771146103a657600080fd5b8063067b2dcb146102a55780630f208beb146102c757806312f54c1a1461032e57806316a8dda71461034e575b600080fd5b3480156102b157600080fd5b506102c56102c0366004614b85565b61085a565b005b3480156102d357600080fd5b5061030e6102e2366004614b85565b609860209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b34801561033a57600080fd5b506102c5610349366004614bbe565b610994565b34801561035a57600080fd5b50609a5461036e906001600160a01b031681565b6040516001600160a01b039091168152602001610325565b34801561039257600080fd5b5060a15461036e906001600160a01b031681565b6102c56103b4366004614bdb565b610a2a565b3480156103c557600080fd5b506103e96103d4366004614bbe565b60a26020526000908152604090205460ff1681565b6040519015158152602001610325565b34801561040557600080fd5b506102c5610414366004614c00565b610f0c565b34801561042557600080fd5b5061042f609c5481565b604051908152602001610325565b34801561044957600080fd5b5060005461036e906001600160a01b031681565b34801561046957600080fd5b506102c5610478366004614bbe565b61102f565b34801561048957600080fd5b506102c5611153565b34801561049e57600080fd5b506102c56104ad366004614bdb565b6111cb565b3480156104be57600080fd5b506102c56104cd366004614c26565b6116f3565b3480156104de57600080fd5b506102c56104ed366004614b85565b611908565b3480156104fe57600080fd5b506102c561050d366004614c52565b611c49565b34801561051e57600080fd5b5060a05461036e906001600160a01b031681565b34801561053e57600080fd5b5060655460ff166103e9565b34801561055657600080fd5b506102c5610565366004614c94565b611f45565b34801561057657600080fd5b50609d546105879063ffffffff1681565b60405163ffffffff9091168152602001610325565b3480156105a857600080fd5b506102c56105b7366004614c52565b6123af565b3480156105c857600080fd5b5060a35461036e906001600160a01b031681565b3480156105e857600080fd5b5061042f609e5481565b3480156105fe57600080fd5b506102c561060d366004614b85565b6126ce565b34801561061e57600080fd5b5061042f609f5481565b34801561063457600080fd5b5061042f609b5481565b34801561064a57600080fd5b506102c5610659366004614c52565b612979565b34801561066a57600080fd5b506102c5612bf0565b34801561067f57600080fd5b5060995461036e906001600160a01b031681565b34801561069f57600080fd5b50609d5461036e9064010000000090046001600160a01b031681565b3480156106c757600080fd5b50609d5463ffffffff16610587565b3480156106e257600080fd5b506107416106f1366004614bbe565b609760205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701546001600160a01b03968716979590961695939492939192909188565b604080516001600160a01b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e082015261010001610325565b34801561079357600080fd5b506102c56107a2366004614ccb565b612c66565b3480156107b357600080fd5b506102c56107c2366004614c94565b612f44565b3480156107d357600080fd5b506102c56107e2366004614c26565b6131cc565b6102c56107f5366004614bdb565b613356565b34801561080657600080fd5b5061042f610815366004614bbe565b61373a565b34801561082657600080fd5b506102c5610835366004614bbe565b6138fe565b34801561084657600080fd5b506102c5610855366004614bbe565b613a54565b6099546001600160a01b031633148061087c57506099546001600160a01b0316155b6108cd5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064015b60405180910390fd5b60a1546001600160a01b03161580156108ee57506001600160a01b03821615155b801561090257506001600160a01b03811615155b61094e5760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420424f4241206164647265737300000000000000000000000060448201526064016108c4565b60a180546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560a08054929093169116179055565b6001600160a01b0381166000908152609760205260409020600481015460038201541015610a265760006109d982600301548360040154613ba290919063ffffffff16565b90508160020154600014610a1a576002820154610a1490610a0990610a038464e8d4a51000613bb5565b90613bc1565b600584015490613bcd565b60058301555b50600481015460038201555b5050565b60655460ff1615610a7d5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016108c4565b60a3546001600160a01b0316610afb5760405162461bcd60e51b815260206004820152602360248201527f42696c6c696e6720636f6e74726163742061646472657373206973206e6f742060448201527f736574000000000000000000000000000000000000000000000000000000000060648201526084016108c4565b60a354604080517f6284ae4100000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921691610c1d91339184918291636284ae4191600480820192602092909190829003018186803b158015610b6357600080fd5b505afa158015610b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9b9190614d40565b846001600160a01b031663b8df0dea6040518163ffffffff1660e01b815260040160206040518083038186803b158015610bd457600080fd5b505afa158015610be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0c9190614d59565b6001600160a01b0316929190613bd9565b34151580610c4857506001600160a01b03821673420000000000000000000000000000000000000614155b610cba5760405162461bcd60e51b815260206004820152603260248201527f45697468657220416d6f756e7420496e636f7272656374206f7220546f6b656e60448201527f204164647265737320496e636f7272656374000000000000000000000000000060648201526084016108c4565b3415801590610ce657506001600160a01b03821673420000000000000000000000000000000000000614155b15610d595760405162461bcd60e51b815260206004820152603260248201527f45697468657220416d6f756e7420496e636f7272656374206f7220546f6b656e60448201527f204164647265737320496e636f7272656374000000000000000000000000000060648201526084016108c4565b3415610d7a5734925073420000000000000000000000000000000000000691505b6001600160a01b0380831660009081526097602052604090206001810154909116610de75760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f7420526567697374657265640000000060448201526064016108c4565b60408051338152602081018690526001600160a01b0385168183015290517fe57500de6b6dcf76b201fef514aca6501809e3b700c9fbd5e803567c66edf54c9181900360600190a16001600160a01b03831673420000000000000000000000000000000000000614610e6857610e686001600160a01b038416333087613bd9565b805460408051336024820152604481018790526001600160a01b039283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcf26fb1b00000000000000000000000000000000000000000000000000000000179052609a54609d549192610f059291169063ffffffff165b83613ca8565b5050505050565b6099546001600160a01b0316331480610f2e57506099546001600160a01b0316155b610f7a5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016108c4565b609a546001600160a01b0316610ff85760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084016108c4565b609d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b6099546001600160a01b031633148061105157506099546001600160a01b0316155b61109d5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016108c4565b6001600160a01b0381166111195760405162461bcd60e51b815260206004820152602760248201527f42696c6c696e6720636f6e747261637420616464726573732063616e6e6f742060448201527f6265207a65726f0000000000000000000000000000000000000000000000000060648201526084016108c4565b60a380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6099546001600160a01b031633148061117557506099546001600160a01b0316155b6111c15760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016108c4565b6111c9613d23565b565b6099546001600160a01b03163314806111ed57506099546001600160a01b0316155b6112395760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016108c4565b60655460ff161561128c5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016108c4565b816112d95760405162461bcd60e51b815260206004820152601260248201527f416d6f756e742063616e6e6f742062652030000000000000000000000000000060448201526064016108c4565b6001600160a01b038082166000908152609760205260409020609a549091166113445760405162461bcd60e51b815260206004820181905260248201527f4c31204c697175696469747920506f6f6c204e6f74205265676973746572656460448201526064016108c4565b60018101546001600160a01b031661139e5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f7420526567697374657265640000000060448201526064016108c4565b6001600160a01b03821673420000000000000000000000000000000000000614156114f357478311156114395760405162461bcd60e51b815260206004820152602260248201527f52657175657374656420455448206578636565647320706f6f6c2062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016108c4565b609a54609d546040517fa3a795480000000000000000000000000000000000000000000000000000000081526001600160a01b03808616600483015290921660248301526044820185905263ffffffff16606482015260a06084820152600060a48201527342000000000000000000000000000000000000109063a3a795489060c401600060405180830381600087803b1580156114d657600080fd5b505af11580156114ea573d6000803e3d6000fd5b505050506116ad565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038316906370a082319060240160206040518083038186803b15801561154b57600080fd5b505afa15801561155f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115839190614d40565b8311156115f75760405162461bcd60e51b8152602060048201526024808201527f526571756573746564204552433230206578636565647320706f6f6c2062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016108c4565b609a54609d546040517fa3a795480000000000000000000000000000000000000000000000000000000081526001600160a01b03808616600483015290921660248301526044820185905263ffffffff16606482015260a06084820152600060a48201527342000000000000000000000000000000000000109063a3a795489060c401600060405180830381600087803b15801561169457600080fd5b505af11580156116a8573d6000803e3d6000fd5b505050505b604080518481526001600160a01b03841660208201527f40637a7e139eeb28b936b8decebe78604164b2ade81ce7f4c70deb132e7614c2910160405180910390a1505050565b609d5464010000000090046001600160a01b031633146117555760405162461bcd60e51b815260206004820152601560248201527f43616c6c6572206973206e6f74207468652044414f000000000000000000000060448201526064016108c4565b609a546001600160a01b03166117d35760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084016108c4565b8183111580156117e35750600083115b80156117f0575060328211155b80156117fd575060328111155b61186f5760405162461bcd60e51b815260206004820152603c60248201527f7573657220616e64206f776e6572206665652072617465732073686f756c642060448201527f6265206c6f776572207468616e20352070657263656e7420656163680000000060648201526084016108c4565b60408051602481018590526044810184905260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc58827ea00000000000000000000000000000000000000000000000000000000179052609a54609d54611902916001600160a01b03169063ffffffff16610eff565b50505050565b6099546001600160a01b031633148061192a57506099546001600160a01b0316155b6119765760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016108c4565b609a546001600160a01b0316156119cf5760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420686173206265656e20696e697469616c697a656400000060448201526064016108c4565b6000547501000000000000000000000000000000000000000000900460ff1680611a14575060005474010000000000000000000000000000000000000000900460ff16155b611a865760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108c4565b6000547501000000000000000000000000000000000000000000900460ff16158015611aed57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6001600160a01b03831615801590611b0d57506001600160a01b03821615155b611b595760405162461bcd60e51b815260206004820152601860248201527f7a65726f2061646472657373206e6f7420616c6c6f776564000000000000000060448201526064016108c4565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b0386811691909117909255609a80548216928516929092179091556099805433921682179055609d80547fffffffffffffffff0000000000000000000000000000000000000000ffffffff16640100000000909202919091179055611bf16001600a600f6131cc565b611bfd620186a0610f0c565b611c05613ddd565b611c0d613f2d565b611c156140a4565b8015611c4457600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b505050565b60655460ff1615611c9c5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016108c4565b6001600160a01b0380831660009081526097602090815260408083206098835281842033855290925290912060018201549192909116611d1e5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f7420526567697374657265640000000060448201526064016108c4565b6000611d60611d558360010154611d4f64e8d4a51000610a0388600501548860000154613bb590919063ffffffff16565b90613ba2565b600284015490613bcd565b905085811015611dd85760405162461bcd60e51b815260206004820152602660248201527f52657175657374656420616d6f756e7420657863656564732070656e64696e6760448201527f526577617264000000000000000000000000000000000000000000000000000060648201526084016108c4565b611de28187613ba2565b600283015560058301548254611e029164e8d4a5100091610a0391613bb5565b6001830155604080513381526001600160a01b0386811660208301528183018990528716606082015290517f3cb7cb475a33eda02ee6e719b6c2fc0c899157cfc6f098daf545354dbbce41ec9181900360800190a16001600160a01b03851673420000000000000000000000000000000000000614611e9457611e8f6001600160a01b03861685886141f7565b611f3d565b6000846001600160a01b03166108fc88604051600060405180830381858888f193505050503d8060008114611ee5576040519150601f19603f3d011682016040523d82523d6000602084013e611eea565b606091505b5050905080611f3b5760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f4574680000000000000000000060448201526064016108c4565b505b505050505050565b609a546001600160a01b0316611fc35760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084016108c4565b609a546001600160a01b0316611fe16000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316146120675760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084016108c4565b806001600160a01b03166120836000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156120bb57600080fd5b505afa1580156120cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f39190614d59565b6001600160a01b03161461216f5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016108c4565b60655460ff16156121c25760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016108c4565b6001600160a01b0382166000908152609760205260408120906121e48461373a565b905060006121f86103e8610a038885613bb5565b905060006122176103e8610a03609c548a613bb590919063ffffffff16565b905060006122258383613bcd565b905060006122338983613ba2565b60048701549091506122459085613bcd565b600487015560068601546122599084613bcd565b6006870155604080516001600160a01b038c811682526020820184905281830187905260608201869052608082018590528a1660a082015290517ff1068421680e00dfc2c4f3fc20c7f565bf1ec365420e7544365bae13d5cbc8c89181900360c00190a16001600160a01b038816734200000000000000000000000000000000000006146122fa576122f56001600160a01b0389168b836141f7565b6123a3565b60008a6001600160a01b03166108fc83604051600060405180830381858888f193505050503d806000811461234b576040519150601f19603f3d011682016040523d82523d6000602084013e612350565b606091505b50509050806123a15760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f4574680000000000000000000060448201526064016108c4565b505b50505050505050505050565b60655460ff16156124025760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016108c4565b6001600160a01b03808316600090815260976020908152604080832060988352818420338552909252909120600182015491929091166124845760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f7420526567697374657265640000000060448201526064016108c4565b80548511156124fb5760405162461bcd60e51b815260206004820152602660248201527f52657175657374656420616d6f756e74206578636565647320616d6f756e742060448201527f7374616b6564000000000000000000000000000000000000000000000000000060648201526084016108c4565b61250484614240565b61250d84610994565b61254761253c8260010154611d4f64e8d4a51000610a0387600501548760000154613bb590919063ffffffff16565b600283015490613bcd565b600282015580546125589086613ba2565b80825560058301546125759164e8d4a5100091610a039190613bb5565b600182015560028201546125899086613ba2565b6002830155604080513381526001600160a01b0385811660208301528183018890528616606082015290517ffa2e8fcf14fd6ea11b6ebe7caf7de210198b8fe1eaf0e06d19f8d87c73860c469181900360800190a16001600160a01b0384167342000000000000000000000000000000000000061461261b576126166001600160a01b03851684876141f7565b6126c4565b6000836001600160a01b03166108fc87604051600060405180830381858888f193505050503d806000811461266c576040519150601f19603f3d011682016040523d82523d6000602084013e612671565b606091505b50509050806126c25760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f4574680000000000000000000060448201526064016108c4565b505b610f05858561436f565b6099546001600160a01b03163314806126f057506099546001600160a01b0316155b61273c5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016108c4565b806001600160a01b0316826001600160a01b031614156127c45760405162461bcd60e51b815260206004820152602860248201527f6c3120616e64206c3220746f6b656e206164647265737365732063616e6e6f7460448201527f2062652073616d6500000000000000000000000000000000000000000000000060648201526084016108c4565b6001600160a01b0381166128405760405162461bcd60e51b815260206004820152602760248201527f6c3220746f6b656e20616464726573732063616e6e6f74206265207a65726f2060448201527f616464726573730000000000000000000000000000000000000000000000000060648201526084016108c4565b6001600160a01b0380821660009081526097602052604090206001810154909116156128ae5760405162461bcd60e51b815260206004820181905260248201527f546f6b656e204164647265737320416c7265616479205265676973746572656460448201526064016108c4565b5060408051610100810182526001600160a01b03938416815291831660208084018281526000858501818152606087018281526080880183815260a0890184815260c08a018581524260e08c0190815298865260979097529790932097518854908a167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178955935160018901805491909a16941693909317909755955160028601555160038501559351600484015590516005830155915160068201559051600790910155565b6099546001600160a01b031633148061299b57506099546001600160a01b0316155b6129e75760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016108c4565b6001600160a01b0380831660009081526097602052604090206001810154909116612a545760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f7420526567697374657265640000000060448201526064016108c4565b8381600601541015612aa85760405162461bcd60e51b815260206004820152601f60248201527f52657175657374656420616d6f756e742065786365656473207265776172640060448201526064016108c4565b6006810154612ab79085613ba2565b6006820155604080513381526001600160a01b0384811660208301528183018790528516606082015290517f3cb71b9a1fb601579f96812b9f86ab5e914fc3e54c98d5f84d95581b2b9884f39181900360800190a16001600160a01b03831673420000000000000000000000000000000000000614612b4957612b446001600160a01b03841683866141f7565b611902565b6000826001600160a01b03166108fc86604051600060405180830381858888f193505050503d8060008114612b9a576040519150601f19603f3d011682016040523d82523d6000602084013e612b9f565b606091505b5050905080610f055760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f4574680000000000000000000060448201526064016108c4565b6099546001600160a01b0316331480612c1257506099546001600160a01b0316155b612c5e5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016108c4565b6111c9614415565b609a546001600160a01b0316612ce45760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084016108c4565b609a546001600160a01b0316612d026000546001600160a01b031690565b6001600160a01b0316336001600160a01b031614612d885760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084016108c4565b806001600160a01b0316612da46000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015612ddc57600080fd5b505afa158015612df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e149190614d59565b6001600160a01b031614612e905760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016108c4565b60655460ff1615612ee35760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016108c4565b60005b82811015611902576000848483818110612f0257612f02614d76565b905060600201803603810190612f189190614da5565b9050612f318160000151826040015183602001516144bb565b5080612f3c81614e66565b915050612ee6565b609a546001600160a01b0316612fc25760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084016108c4565b609a546001600160a01b0316612fe06000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316146130665760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084016108c4565b806001600160a01b03166130826000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156130ba57600080fd5b505afa1580156130ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130f29190614d59565b6001600160a01b03161461316e5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016108c4565b60655460ff16156131c15760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016108c4565b6119028484846144bb565b609d5464010000000090046001600160a01b0316331461322e5760405162461bcd60e51b815260206004820152601560248201527f43616c6c6572206973206e6f74207468652044414f000000000000000000000060448201526064016108c4565b609a546001600160a01b03166132ac5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084016108c4565b8183111580156132bc5750600083115b80156132c9575060328211155b80156132d6575060328111155b6133485760405162461bcd60e51b815260206004820152603c60248201527f7573657220616e64206f776e6572206665652072617465732073686f756c642060448201527f6265206c6f776572207468616e20352070657263656e7420656163680000000060648201526084016108c4565b609b92909255609f55609c55565b600260015414156133a95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108c4565b600260015560655460ff16156134015760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016108c4565b3415158061342c57506001600160a01b03811673420000000000000000000000000000000000000614155b61349e5760405162461bcd60e51b815260206004820152603260248201527f45697468657220416d6f756e7420496e636f7272656374206f7220546f6b656e60448201527f204164647265737320496e636f7272656374000000000000000000000000000060648201526084016108c4565b34158015906134ca57506001600160a01b03811673420000000000000000000000000000000000000614155b1561353d5760405162461bcd60e51b815260206004820152603260248201527f45697468657220416d6f756e7420496e636f7272656374206f7220546f6b656e60448201527f204164647265737320496e636f7272656374000000000000000000000000000060648201526084016108c4565b341561355d57503490507342000000000000000000000000000000000000065b6001600160a01b03808216600090815260976020908152604080832060988352818420338552909252909120600182015491929091166135df5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f7420526567697374657265640000000060448201526064016108c4565b6135e883614240565b6135f183610994565b80541561365d5761362761253c8260010154611d4f64e8d4a51000610a0387600501548760000154613bb590919063ffffffff16565b6002820155600582015481546136539164e8d4a5100091610a03919061364d9089613bcd565b90613bb5565b6001820155613683565b61367d64e8d4a51000610a03846005015487613bb590919063ffffffff16565b60018201555b805461368f9085613bcd565b815560028201546136a09085613bcd565b600283015560408051338152602081018690526001600160a01b0385168183015290517f5852d1d46e583f7e92c2a572221de0e681d82ef71f489847e056b9445c0147369181900360600190a16001600160a01b03831673420000000000000000000000000000000000000614613726576137266001600160a01b038416333087613bd9565b6137308484614880565b5050600180555050565b609a546000906001600160a01b03166137bb5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084016108c4565b6001600160a01b03821660008181526097602052604081206002810154909290919073420000000000000000000000000000000000000614156137ff575047613892565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038616906370a082319060240160206040518083038186803b15801561385757600080fd5b505afa15801561386b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061388f9190614d40565b90505b806138a3575050609f549392505050565b60008183609b546138b49190614e9f565b6138be9190614edc565b905080609b5411156138d7575050609b54949350505050565b80609f5410156138ee575050609f54949350505050565b93506138f992505050565b919050565b6099546001600160a01b031633148061392057506099546001600160a01b0316155b61396c5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016108c4565b6001600160a01b0381166139e75760405162461bcd60e51b8152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016108c4565b609980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163906020015b60405180910390a150565b609d5464010000000090046001600160a01b03163314613ab65760405162461bcd60e51b815260206004820152601560248201527f43616c6c6572206973206e6f74207468652044414f000000000000000000000060448201526064016108c4565b6001600160a01b038116613b325760405162461bcd60e51b815260206004820152602a60248201527f4e65772044414f20616464726573732063616e6e6f7420626520746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016108c4565b609d80547fffffffffffffffff0000000000000000000000000000000000000000ffffffff166401000000006001600160a01b038416908102919091179091556040519081527fcbd426f7d93b6fa3ff268c099102ab716488e9831c27880216aea6c689da297d90602001613a49565b6000613bae8284614f17565b9392505050565b6000613bae8284614e9f565b6000613bae8284614edc565b6000613bae8284614f2e565b6040516001600160a01b03808516602483015283166044820152606481018290526119029085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526148fc565b6000546040517f3dbb202b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633dbb202b90613cf590869085908790600401614fbc565b600060405180830381600087803b158015613d0f57600080fd5b505af1158015611f3b573d6000803e3d6000fd5b60655460ff16613d755760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016108c4565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000547501000000000000000000000000000000000000000000900460ff1680613e22575060005474010000000000000000000000000000000000000000900460ff16155b613e945760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108c4565b6000547501000000000000000000000000000000000000000000900460ff16158015613efb57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b8015613f2a57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b50565b6000547501000000000000000000000000000000000000000000900460ff1680613f72575060005474010000000000000000000000000000000000000000900460ff16155b613fe45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108c4565b6000547501000000000000000000000000000000000000000000900460ff1615801561404b57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558015613f2a57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6000547501000000000000000000000000000000000000000000900460ff16806140e9575060005474010000000000000000000000000000000000000000900460ff16155b61415b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108c4565b6000547501000000000000000000000000000000000000000000900460ff161580156141c257600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b600180558015613f2a57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6040516001600160a01b038316602482015260448101829052611c449084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401613c26565b33600090815260a2602052604090205460ff1615801561426d575060a1546001600160a01b038281169116145b8015614283575060a1546001600160a01b031615155b15613f2a576001600160a01b038116600090815260986020908152604080832033845290915290208054156143335760a05481546040517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015260248101919091526001600160a01b03909116906340c10f1990604401600060405180830381600087803b15801561431a57600080fd5b505af115801561432e573d6000803e3d6000fd5b505050505b5033600090815260a26020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b60a1546001600160a01b038281169116148015614396575060a1546001600160a01b031615155b15610a265760a0546040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018490526001600160a01b0390911690639dc29fac906044015b600060405180830381600087803b15801561440157600080fd5b505af1158015611f3d573d6000803e3d6000fd5b60655460ff16156144685760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016108c4565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613dc03390565b6001600160a01b0380821660009081526097602052604081206001810154919290911661452a5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f7420526567697374657265640000000060448201526064016108c4565b60006145358461373a565b905060006145496103e8610a038885613bb5565b905060006145686103e8610a03609c548a613bb590919063ffffffff16565b905060006145768383613bcd565b905060006145848983613ba2565b90506001600160a01b0388167342000000000000000000000000000000000000061461468b576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038916906370a082319060240160206040518083038186803b15801561460257600080fd5b505afa158015614616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061463a9190614d40565b81111561464a576001965061476c565b60048601546146599085613bcd565b6004870155600686015461466d9084613bcd565b60068701556146866001600160a01b0389168b836141f7565b61476c565b4781111561469c576001965061476c565b60048601546146ab9085613bcd565b600487015560068601546146bf9084613bcd565b60068701556040516000906001600160a01b038c16906108fc90849084818181858888f193505050503d8060008114614714576040519150601f19603f3d011682016040523d82523d6000602084013e614719565b606091505b505090508061476a5760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f4574680000000000000000000060448201526064016108c4565b505b8615614815578554604080516001600160a01b038d81166024830152604482018d90529283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f53174cc100000000000000000000000000000000000000000000000000000000179052609a54609d54919261480f9291169063ffffffff16610eff565b506123a3565b604080516001600160a01b038c811682526020820184905281830187905260608201869052608082018590528a1660a082015290517fedb4d3b4b55168608412f15db11c00859915842963c31b1f08d910a38e1d6aa49181900360c00190a150505050505050505050565b60a1546001600160a01b0382811691161480156148a7575060a1546001600160a01b031615155b15610a265760a0546040517f40c10f19000000000000000000000000000000000000000000000000000000008152336004820152602481018490526001600160a01b03909116906340c10f19906044016143e7565b6000614951826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166149e19092919063ffffffff16565b805190915015611c44578080602001905181019061496f9190614ff4565b611c445760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016108c4565b60606149f084846000856149f8565b949350505050565b606082471015614a705760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016108c4565b843b614abe5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108c4565b600080866001600160a01b03168587604051614ada9190615016565b60006040518083038185875af1925050503d8060008114614b17576040519150601f19603f3d011682016040523d82523d6000602084013e614b1c565b606091505b5091509150614b2c828286614b37565b979650505050505050565b60608315614b46575081613bae565b825115614b565782518084602001fd5b8160405162461bcd60e51b81526004016108c49190615032565b6001600160a01b0381168114613f2a57600080fd5b60008060408385031215614b9857600080fd5b8235614ba381614b70565b91506020830135614bb381614b70565b809150509250929050565b600060208284031215614bd057600080fd5b8135613bae81614b70565b60008060408385031215614bee57600080fd5b823591506020830135614bb381614b70565b600060208284031215614c1257600080fd5b813563ffffffff81168114613bae57600080fd5b600080600060608486031215614c3b57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215614c6757600080fd5b833592506020840135614c7981614b70565b91506040840135614c8981614b70565b809150509250925092565b600080600060608486031215614ca957600080fd5b8335614cb481614b70565b9250602084013591506040840135614c8981614b70565b60008060208385031215614cde57600080fd5b823567ffffffffffffffff80821115614cf657600080fd5b818501915085601f830112614d0a57600080fd5b813581811115614d1957600080fd5b866020606083028501011115614d2e57600080fd5b60209290920196919550909350505050565b600060208284031215614d5257600080fd5b5051919050565b600060208284031215614d6b57600080fd5b8151613bae81614b70565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060608284031215614db757600080fd5b6040516060810181811067ffffffffffffffff82111715614e01577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235614e0f81614b70565b81526020830135614e1f81614b70565b60208201526040928301359281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614e9857614e98614e37565b5060010190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ed757614ed7614e37565b500290565b600082614f12577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015614f2957614f29614e37565b500390565b60008219821115614f4157614f41614e37565b500190565b60005b83811015614f61578181015183820152602001614f49565b838111156119025750506000910152565b60008151808452614f8a816020860160208601614f46565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6001600160a01b0384168152606060208201526000614fde6060830185614f72565b905063ffffffff83166040830152949350505050565b60006020828403121561500657600080fd5b81518015158114613bae57600080fd5b60008251615028818460208701614f46565b9190910192915050565b602081526000613bae6020830184614f7256fea164736f6c6343000809000a820264a0c19e5fab427069537b1b8d5dee0fe85024a7f4bb79ba1f3d2252ef597c05226ea037d06312f23acb8038ca26702a0e709331830e3b7b91e3e1a82ddb18f2a05fdd"],"id":1}|{"jsonrpc":"2.0","error":{"code":-32700,"message":"parse error"},"id":null}| -response too long|{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0x02f8b28201a406849502f931849502f931830147f9948f3ddd0fbf3e78ca1d6cd17379ed88e261249b5280b84447e7ef2400000000000000000000000089c8b1b2774201bac50f627403eac1b732459cf70000000000000000000000000000000000000000000000056bc75e2d63100000c080a0473c95566026c312c9664cd61145d2f3e759d49209fe96011ac012884ec5b017a0763b58f6fa6096e6ba28ee08bfac58f58fb3b8bcef5af98578bdeaddf40bde42"],"id":1}|{"id": 123, "jsonrpc": "2.0", "result": "0xf950d882012e843b9aca008359d6b38080b95082608060405234801561001057600080fd5b50600080546001600160a01b0319169055615052806100306000396000f3fe6080604052600436106102a05760003560e01c80636854e22b1161016e57806398fabd3a116100cb578063c58827ea1161007f578063ecb12db011610064578063ecb12db0146107fa578063f2fde38b1461081a578063f48712681461083a57600080fd5b8063c58827ea146107c7578063c95f9d0e146107e757600080fd5b80639a7b5f11116100b05780639a7b5f11146106d6578063b4eeb98814610787578063bd2d1cab146107a757600080fd5b806398fabd3a14610693578063997d73df146106bb57600080fd5b8063744a5aa21161012257806381e6bdac1161010757806381e6bdac1461063e5780638456cb591461065e5780638da5cb5b1461067357600080fd5b8063744a5aa21461061257806377b594a21461062857600080fd5b80636af9f1c2116101535780636af9f1c2146105bc57806370ac3180146105dc5780637286e5e5146105f257600080fd5b80636854e22b1461056a57806368be42ca1461059c57600080fd5b80633cb747bf1161021c578063485cc955116101d0578063531645cb116101b5578063531645cb146105125780635c975abb14610532578063650a767b1461054a57600080fd5b8063485cc955146104d257806349561dc4146104f257600080fd5b80633f4ba83a116102015780633f4ba83a1461047d5780633f89e9521461049257806341132e4c146104b257600080fd5b80633cb747bf1461043d5780633d93941b1461045d57600080fd5b80631786e46d116102735780631f0bfb8c116102585780631f0bfb8c146103b957806334636648146103f9578063358fc07e1461041957600080fd5b80631786e46d146103865780631d00a771146103a657600080fd5b8063067b2dcb146102a55780630f208beb146102c757806312f54c1a1461032e57806316a8dda71461034e575b600080fd5b3480156102b157600080fd5b506102c56102c0366004614b85565b61085a565b005b3480156102d357600080fd5b5061030e6102e2366004614b85565b609860209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b34801561033a57600080fd5b506102c5610349366004614bbe565b610994565b34801561035a57600080fd5b50609a5461036e906001600160a01b031681565b6040516001600160a01b039091168152602001610325565b34801561039257600080fd5b5060a15461036e906001600160a01b031681565b6102c56103b4366004614bdb565b610a2a565b3480156103c557600080fd5b506103e96103d4366004614bbe565b60a26020526000908152604090205460ff1681565b6040519015158152602001610325565b34801561040557600080fd5b506102c5610414366004614c00565b610f0c565b34801561042557600080fd5b5061042f609c5481565b604051908152602001610325565b34801561044957600080fd5b5060005461036e906001600160a01b031681565b34801561046957600080fd5b506102c5610478366004614bbe565b61102f565b34801561048957600080fd5b506102c5611153565b34801561049e57600080fd5b506102c56104ad366004614bdb565b6111cb565b3480156104be57600080fd5b506102c56104cd366004614c26565b6116f3565b3480156104de57600080fd5b506102c56104ed366004614b85565b611908565b3480156104fe57600080fd5b506102c561050d366004614c52565b611c49565b34801561051e57600080fd5b5060a05461036e906001600160a01b031681565b34801561053e57600080fd5b5060655460ff166103e9565b34801561055657600080fd5b506102c5610565366004614c94565b611f45565b34801561057657600080fd5b50609d546105879063ffffffff1681565b60405163ffffffff9091168152602001610325565b3480156105a857600080fd5b506102c56105b7366004614c52565b6123af565b3480156105c857600080fd5b5060a35461036e906001600160a01b031681565b3480156105e857600080fd5b5061042f609e5481565b3480156105fe57600080fd5b506102c561060d366004614b85565b6126ce565b34801561061e57600080fd5b5061042f609f5481565b34801561063457600080fd5b5061042f609b5481565b34801561064a57600080fd5b506102c5610659366004614c52565b612979565b34801561066a57600080fd5b506102c5612bf0565b34801561067f57600080fd5b5060995461036e906001600160a01b031681565b34801561069f57600080fd5b50609d5461036e9064010000000090046001600160a01b031681565b3480156106c757600080fd5b50609d5463ffffffff16610587565b3480156106e257600080fd5b506107416106f1366004614bbe565b609760205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701546001600160a01b03968716979590961695939492939192909188565b604080516001600160a01b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e082015261010001610325565b34801561079357600080fd5b506102c56107a2366004614ccb565b612c66565b3480156107b357600080fd5b506102c56107c2366004614c94565b612f44565b3480156107d357600080fd5b506102c56107e2366004614c26565b6131cc565b6102c56107f5366004614bdb565b613356565b34801561080657600080fd5b5061042f610815366004614bbe565b61373a565b34801561082657600080fd5b506102c5610835366004614bbe565b6138fe565b34801561084657600080fd5b506102c5610855366004614bbe565b613a54565b6099546001600160a01b031633148061087c57506099546001600160a01b0316155b6108cd5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064015b60405180910390fd5b60a1546001600160a01b03161580156108ee57506001600160a01b03821615155b801561090257506001600160a01b03811615155b61094e5760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420424f4241206164647265737300000000000000000000000060448201526064016108c4565b60a180546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560a08054929093169116179055565b6001600160a01b0381166000908152609760205260409020600481015460038201541015610a265760006109d982600301548360040154613ba290919063ffffffff16565b90508160020154600014610a1a576002820154610a1490610a0990610a038464e8d4a51000613bb5565b90613bc1565b600584015490613bcd565b60058301555b50600481015460038201555b5050565b60655460ff1615610a7d5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016108c4565b60a3546001600160a01b0316610afb5760405162461bcd60e51b815260206004820152602360248201527f42696c6c696e6720636f6e74726163742061646472657373206973206e6f742060448201527f736574000000000000000000000000000000000000000000000000000000000060648201526084016108c4565b60a354604080517f6284ae4100000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921691610c1d91339184918291636284ae4191600480820192602092909190829003018186803b158015610b6357600080fd5b505afa158015610b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9b9190614d40565b846001600160a01b031663b8df0dea6040518163ffffffff1660e01b815260040160206040518083038186803b158015610bd457600080fd5b505afa158015610be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0c9190614d59565b6001600160a01b0316929190613bd9565b34151580610c4857506001600160a01b03821673420000000000000000000000000000000000000614155b610cba5760405162461bcd60e51b815260206004820152603260248201527f45697468657220416d6f756e7420496e636f7272656374206f7220546f6b656e60448201527f204164647265737320496e636f7272656374000000000000000000000000000060648201526084016108c4565b3415801590610ce657506001600160a01b03821673420000000000000000000000000000000000000614155b15610d595760405162461bcd60e51b815260206004820152603260248201527f45697468657220416d6f756e7420496e636f7272656374206f7220546f6b656e60448201527f204164647265737320496e636f7272656374000000000000000000000000000060648201526084016108c4565b3415610d7a5734925073420000000000000000000000000000000000000691505b6001600160a01b0380831660009081526097602052604090206001810154909116610de75760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f7420526567697374657265640000000060448201526064016108c4565b60408051338152602081018690526001600160a01b0385168183015290517fe57500de6b6dcf76b201fef514aca6501809e3b700c9fbd5e803567c66edf54c9181900360600190a16001600160a01b03831673420000000000000000000000000000000000000614610e6857610e686001600160a01b038416333087613bd9565b805460408051336024820152604481018790526001600160a01b039283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcf26fb1b00000000000000000000000000000000000000000000000000000000179052609a54609d549192610f059291169063ffffffff165b83613ca8565b5050505050565b6099546001600160a01b0316331480610f2e57506099546001600160a01b0316155b610f7a5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016108c4565b609a546001600160a01b0316610ff85760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084016108c4565b609d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b6099546001600160a01b031633148061105157506099546001600160a01b0316155b61109d5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016108c4565b6001600160a01b0381166111195760405162461bcd60e51b815260206004820152602760248201527f42696c6c696e6720636f6e747261637420616464726573732063616e6e6f742060448201527f6265207a65726f0000000000000000000000000000000000000000000000000060648201526084016108c4565b60a380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6099546001600160a01b031633148061117557506099546001600160a01b0316155b6111c15760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016108c4565b6111c9613d23565b565b6099546001600160a01b03163314806111ed57506099546001600160a01b0316155b6112395760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016108c4565b60655460ff161561128c5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016108c4565b816112d95760405162461bcd60e51b815260206004820152601260248201527f416d6f756e742063616e6e6f742062652030000000000000000000000000000060448201526064016108c4565b6001600160a01b038082166000908152609760205260409020609a549091166113445760405162461bcd60e51b815260206004820181905260248201527f4c31204c697175696469747920506f6f6c204e6f74205265676973746572656460448201526064016108c4565b60018101546001600160a01b031661139e5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f7420526567697374657265640000000060448201526064016108c4565b6001600160a01b03821673420000000000000000000000000000000000000614156114f357478311156114395760405162461bcd60e51b815260206004820152602260248201527f52657175657374656420455448206578636565647320706f6f6c2062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016108c4565b609a54609d546040517fa3a795480000000000000000000000000000000000000000000000000000000081526001600160a01b03808616600483015290921660248301526044820185905263ffffffff16606482015260a06084820152600060a48201527342000000000000000000000000000000000000109063a3a795489060c401600060405180830381600087803b1580156114d657600080fd5b505af11580156114ea573d6000803e3d6000fd5b505050506116ad565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038316906370a082319060240160206040518083038186803b15801561154b57600080fd5b505afa15801561155f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115839190614d40565b8311156115f75760405162461bcd60e51b8152602060048201526024808201527f526571756573746564204552433230206578636565647320706f6f6c2062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016108c4565b609a54609d546040517fa3a795480000000000000000000000000000000000000000000000000000000081526001600160a01b03808616600483015290921660248301526044820185905263ffffffff16606482015260a06084820152600060a48201527342000000000000000000000000000000000000109063a3a795489060c401600060405180830381600087803b15801561169457600080fd5b505af11580156116a8573d6000803e3d6000fd5b505050505b604080518481526001600160a01b03841660208201527f40637a7e139eeb28b936b8decebe78604164b2ade81ce7f4c70deb132e7614c2910160405180910390a1505050565b609d5464010000000090046001600160a01b031633146117555760405162461bcd60e51b815260206004820152601560248201527f43616c6c6572206973206e6f74207468652044414f000000000000000000000060448201526064016108c4565b609a546001600160a01b03166117d35760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084016108c4565b8183111580156117e35750600083115b80156117f0575060328211155b80156117fd575060328111155b61186f5760405162461bcd60e51b815260206004820152603c60248201527f7573657220616e64206f776e6572206665652072617465732073686f756c642060448201527f6265206c6f776572207468616e20352070657263656e7420656163680000000060648201526084016108c4565b60408051602481018590526044810184905260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc58827ea00000000000000000000000000000000000000000000000000000000179052609a54609d54611902916001600160a01b03169063ffffffff16610eff565b50505050565b6099546001600160a01b031633148061192a57506099546001600160a01b0316155b6119765760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016108c4565b609a546001600160a01b0316156119cf5760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420686173206265656e20696e697469616c697a656400000060448201526064016108c4565b6000547501000000000000000000000000000000000000000000900460ff1680611a14575060005474010000000000000000000000000000000000000000900460ff16155b611a865760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108c4565b6000547501000000000000000000000000000000000000000000900460ff16158015611aed57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6001600160a01b03831615801590611b0d57506001600160a01b03821615155b611b595760405162461bcd60e51b815260206004820152601860248201527f7a65726f2061646472657373206e6f7420616c6c6f776564000000000000000060448201526064016108c4565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b0386811691909117909255609a80548216928516929092179091556099805433921682179055609d80547fffffffffffffffff0000000000000000000000000000000000000000ffffffff16640100000000909202919091179055611bf16001600a600f6131cc565b611bfd620186a0610f0c565b611c05613ddd565b611c0d613f2d565b611c156140a4565b8015611c4457600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b505050565b60655460ff1615611c9c5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016108c4565b6001600160a01b0380831660009081526097602090815260408083206098835281842033855290925290912060018201549192909116611d1e5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f7420526567697374657265640000000060448201526064016108c4565b6000611d60611d558360010154611d4f64e8d4a51000610a0388600501548860000154613bb590919063ffffffff16565b90613ba2565b600284015490613bcd565b905085811015611dd85760405162461bcd60e51b815260206004820152602660248201527f52657175657374656420616d6f756e7420657863656564732070656e64696e6760448201527f526577617264000000000000000000000000000000000000000000000000000060648201526084016108c4565b611de28187613ba2565b600283015560058301548254611e029164e8d4a5100091610a0391613bb5565b6001830155604080513381526001600160a01b0386811660208301528183018990528716606082015290517f3cb7cb475a33eda02ee6e719b6c2fc0c899157cfc6f098daf545354dbbce41ec9181900360800190a16001600160a01b03851673420000000000000000000000000000000000000614611e9457611e8f6001600160a01b03861685886141f7565b611f3d565b6000846001600160a01b03166108fc88604051600060405180830381858888f193505050503d8060008114611ee5576040519150601f19603f3d011682016040523d82523d6000602084013e611eea565b606091505b5050905080611f3b5760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f4574680000000000000000000060448201526064016108c4565b505b505050505050565b609a546001600160a01b0316611fc35760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084016108c4565b609a546001600160a01b0316611fe16000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316146120675760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084016108c4565b806001600160a01b03166120836000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156120bb57600080fd5b505afa1580156120cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f39190614d59565b6001600160a01b03161461216f5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016108c4565b60655460ff16156121c25760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016108c4565b6001600160a01b0382166000908152609760205260408120906121e48461373a565b905060006121f86103e8610a038885613bb5565b905060006122176103e8610a03609c548a613bb590919063ffffffff16565b905060006122258383613bcd565b905060006122338983613ba2565b60048701549091506122459085613bcd565b600487015560068601546122599084613bcd565b6006870155604080516001600160a01b038c811682526020820184905281830187905260608201869052608082018590528a1660a082015290517ff1068421680e00dfc2c4f3fc20c7f565bf1ec365420e7544365bae13d5cbc8c89181900360c00190a16001600160a01b038816734200000000000000000000000000000000000006146122fa576122f56001600160a01b0389168b836141f7565b6123a3565b60008a6001600160a01b03166108fc83604051600060405180830381858888f193505050503d806000811461234b576040519150601f19603f3d011682016040523d82523d6000602084013e612350565b606091505b50509050806123a15760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f4574680000000000000000000060448201526064016108c4565b505b50505050505050505050565b60655460ff16156124025760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016108c4565b6001600160a01b03808316600090815260976020908152604080832060988352818420338552909252909120600182015491929091166124845760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f7420526567697374657265640000000060448201526064016108c4565b80548511156124fb5760405162461bcd60e51b815260206004820152602660248201527f52657175657374656420616d6f756e74206578636565647320616d6f756e742060448201527f7374616b6564000000000000000000000000000000000000000000000000000060648201526084016108c4565b61250484614240565b61250d84610994565b61254761253c8260010154611d4f64e8d4a51000610a0387600501548760000154613bb590919063ffffffff16565b600283015490613bcd565b600282015580546125589086613ba2565b80825560058301546125759164e8d4a5100091610a039190613bb5565b600182015560028201546125899086613ba2565b6002830155604080513381526001600160a01b0385811660208301528183018890528616606082015290517ffa2e8fcf14fd6ea11b6ebe7caf7de210198b8fe1eaf0e06d19f8d87c73860c469181900360800190a16001600160a01b0384167342000000000000000000000000000000000000061461261b576126166001600160a01b03851684876141f7565b6126c4565b6000836001600160a01b03166108fc87604051600060405180830381858888f193505050503d806000811461266c576040519150601f19603f3d011682016040523d82523d6000602084013e612671565b606091505b50509050806126c25760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f4574680000000000000000000060448201526064016108c4565b505b610f05858561436f565b6099546001600160a01b03163314806126f057506099546001600160a01b0316155b61273c5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016108c4565b806001600160a01b0316826001600160a01b031614156127c45760405162461bcd60e51b815260206004820152602860248201527f6c3120616e64206c3220746f6b656e206164647265737365732063616e6e6f7460448201527f2062652073616d6500000000000000000000000000000000000000000000000060648201526084016108c4565b6001600160a01b0381166128405760405162461bcd60e51b815260206004820152602760248201527f6c3220746f6b656e20616464726573732063616e6e6f74206265207a65726f2060448201527f616464726573730000000000000000000000000000000000000000000000000060648201526084016108c4565b6001600160a01b0380821660009081526097602052604090206001810154909116156128ae5760405162461bcd60e51b815260206004820181905260248201527f546f6b656e204164647265737320416c7265616479205265676973746572656460448201526064016108c4565b5060408051610100810182526001600160a01b03938416815291831660208084018281526000858501818152606087018281526080880183815260a0890184815260c08a018581524260e08c0190815298865260979097529790932097518854908a167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178955935160018901805491909a16941693909317909755955160028601555160038501559351600484015590516005830155915160068201559051600790910155565b6099546001600160a01b031633148061299b57506099546001600160a01b0316155b6129e75760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016108c4565b6001600160a01b0380831660009081526097602052604090206001810154909116612a545760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f7420526567697374657265640000000060448201526064016108c4565b8381600601541015612aa85760405162461bcd60e51b815260206004820152601f60248201527f52657175657374656420616d6f756e742065786365656473207265776172640060448201526064016108c4565b6006810154612ab79085613ba2565b6006820155604080513381526001600160a01b0384811660208301528183018790528516606082015290517f3cb71b9a1fb601579f96812b9f86ab5e914fc3e54c98d5f84d95581b2b9884f39181900360800190a16001600160a01b03831673420000000000000000000000000000000000000614612b4957612b446001600160a01b03841683866141f7565b611902565b6000826001600160a01b03166108fc86604051600060405180830381858888f193505050503d8060008114612b9a576040519150601f19603f3d011682016040523d82523d6000602084013e612b9f565b606091505b5050905080610f055760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f4574680000000000000000000060448201526064016108c4565b6099546001600160a01b0316331480612c1257506099546001600160a01b0316155b612c5e5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016108c4565b6111c9614415565b609a546001600160a01b0316612ce45760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084016108c4565b609a546001600160a01b0316612d026000546001600160a01b031690565b6001600160a01b0316336001600160a01b031614612d885760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084016108c4565b806001600160a01b0316612da46000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015612ddc57600080fd5b505afa158015612df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e149190614d59565b6001600160a01b031614612e905760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016108c4565b60655460ff1615612ee35760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016108c4565b60005b82811015611902576000848483818110612f0257612f02614d76565b905060600201803603810190612f189190614da5565b9050612f318160000151826040015183602001516144bb565b5080612f3c81614e66565b915050612ee6565b609a546001600160a01b0316612fc25760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084016108c4565b609a546001600160a01b0316612fe06000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316146130665760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084016108c4565b806001600160a01b03166130826000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156130ba57600080fd5b505afa1580156130ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130f29190614d59565b6001600160a01b03161461316e5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016108c4565b60655460ff16156131c15760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016108c4565b6119028484846144bb565b609d5464010000000090046001600160a01b0316331461322e5760405162461bcd60e51b815260206004820152601560248201527f43616c6c6572206973206e6f74207468652044414f000000000000000000000060448201526064016108c4565b609a546001600160a01b03166132ac5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084016108c4565b8183111580156132bc5750600083115b80156132c9575060328211155b80156132d6575060328111155b6133485760405162461bcd60e51b815260206004820152603c60248201527f7573657220616e64206f776e6572206665652072617465732073686f756c642060448201527f6265206c6f776572207468616e20352070657263656e7420656163680000000060648201526084016108c4565b609b92909255609f55609c55565b600260015414156133a95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108c4565b600260015560655460ff16156134015760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016108c4565b3415158061342c57506001600160a01b03811673420000000000000000000000000000000000000614155b61349e5760405162461bcd60e51b815260206004820152603260248201527f45697468657220416d6f756e7420496e636f7272656374206f7220546f6b656e60448201527f204164647265737320496e636f7272656374000000000000000000000000000060648201526084016108c4565b34158015906134ca57506001600160a01b03811673420000000000000000000000000000000000000614155b1561353d5760405162461bcd60e51b815260206004820152603260248201527f45697468657220416d6f756e7420496e636f7272656374206f7220546f6b656e60448201527f204164647265737320496e636f7272656374000000000000000000000000000060648201526084016108c4565b341561355d57503490507342000000000000000000000000000000000000065b6001600160a01b03808216600090815260976020908152604080832060988352818420338552909252909120600182015491929091166135df5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f7420526567697374657265640000000060448201526064016108c4565b6135e883614240565b6135f183610994565b80541561365d5761362761253c8260010154611d4f64e8d4a51000610a0387600501548760000154613bb590919063ffffffff16565b6002820155600582015481546136539164e8d4a5100091610a03919061364d9089613bcd565b90613bb5565b6001820155613683565b61367d64e8d4a51000610a03846005015487613bb590919063ffffffff16565b60018201555b805461368f9085613bcd565b815560028201546136a09085613bcd565b600283015560408051338152602081018690526001600160a01b0385168183015290517f5852d1d46e583f7e92c2a572221de0e681d82ef71f489847e056b9445c0147369181900360600190a16001600160a01b03831673420000000000000000000000000000000000000614613726576137266001600160a01b038416333087613bd9565b6137308484614880565b5050600180555050565b609a546000906001600160a01b03166137bb5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084016108c4565b6001600160a01b03821660008181526097602052604081206002810154909290919073420000000000000000000000000000000000000614156137ff575047613892565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038616906370a082319060240160206040518083038186803b15801561385757600080fd5b505afa15801561386b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061388f9190614d40565b90505b806138a3575050609f549392505050565b60008183609b546138b49190614e9f565b6138be9190614edc565b905080609b5411156138d7575050609b54949350505050565b80609f5410156138ee575050609f54949350505050565b93506138f992505050565b919050565b6099546001600160a01b031633148061392057506099546001600160a01b0316155b61396c5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016108c4565b6001600160a01b0381166139e75760405162461bcd60e51b8152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016108c4565b609980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163906020015b60405180910390a150565b609d5464010000000090046001600160a01b03163314613ab65760405162461bcd60e51b815260206004820152601560248201527f43616c6c6572206973206e6f74207468652044414f000000000000000000000060448201526064016108c4565b6001600160a01b038116613b325760405162461bcd60e51b815260206004820152602a60248201527f4e65772044414f20616464726573732063616e6e6f7420626520746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016108c4565b609d80547fffffffffffffffff0000000000000000000000000000000000000000ffffffff166401000000006001600160a01b038416908102919091179091556040519081527fcbd426f7d93b6fa3ff268c099102ab716488e9831c27880216aea6c689da297d90602001613a49565b6000613bae8284614f17565b9392505050565b6000613bae8284614e9f565b6000613bae8284614edc565b6000613bae8284614f2e565b6040516001600160a01b03808516602483015283166044820152606481018290526119029085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526148fc565b6000546040517f3dbb202b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633dbb202b90613cf590869085908790600401614fbc565b600060405180830381600087803b158015613d0f57600080fd5b505af1158015611f3b573d6000803e3d6000fd5b60655460ff16613d755760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016108c4565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000547501000000000000000000000000000000000000000000900460ff1680613e22575060005474010000000000000000000000000000000000000000900460ff16155b613e945760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108c4565b6000547501000000000000000000000000000000000000000000900460ff16158015613efb57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b8015613f2a57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b50565b6000547501000000000000000000000000000000000000000000900460ff1680613f72575060005474010000000000000000000000000000000000000000900460ff16155b613fe45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108c4565b6000547501000000000000000000000000000000000000000000900460ff1615801561404b57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558015613f2a57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6000547501000000000000000000000000000000000000000000900460ff16806140e9575060005474010000000000000000000000000000000000000000900460ff16155b61415b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108c4565b6000547501000000000000000000000000000000000000000000900460ff161580156141c257600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b600180558015613f2a57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6040516001600160a01b038316602482015260448101829052611c449084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401613c26565b33600090815260a2602052604090205460ff1615801561426d575060a1546001600160a01b038281169116145b8015614283575060a1546001600160a01b031615155b15613f2a576001600160a01b038116600090815260986020908152604080832033845290915290208054156143335760a05481546040517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015260248101919091526001600160a01b03909116906340c10f1990604401600060405180830381600087803b15801561431a57600080fd5b505af115801561432e573d6000803e3d6000fd5b505050505b5033600090815260a26020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b60a1546001600160a01b038281169116148015614396575060a1546001600160a01b031615155b15610a265760a0546040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018490526001600160a01b0390911690639dc29fac906044015b600060405180830381600087803b15801561440157600080fd5b505af1158015611f3d573d6000803e3d6000fd5b60655460ff16156144685760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016108c4565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613dc03390565b6001600160a01b0380821660009081526097602052604081206001810154919290911661452a5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f7420526567697374657265640000000060448201526064016108c4565b60006145358461373a565b905060006145496103e8610a038885613bb5565b905060006145686103e8610a03609c548a613bb590919063ffffffff16565b905060006145768383613bcd565b905060006145848983613ba2565b90506001600160a01b0388167342000000000000000000000000000000000000061461468b576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038916906370a082319060240160206040518083038186803b15801561460257600080fd5b505afa158015614616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061463a9190614d40565b81111561464a576001965061476c565b60048601546146599085613bcd565b6004870155600686015461466d9084613bcd565b60068701556146866001600160a01b0389168b836141f7565b61476c565b4781111561469c576001965061476c565b60048601546146ab9085613bcd565b600487015560068601546146bf9084613bcd565b60068701556040516000906001600160a01b038c16906108fc90849084818181858888f193505050503d8060008114614714576040519150601f19603f3d011682016040523d82523d6000602084013e614719565b606091505b505090508061476a5760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f4574680000000000000000000060448201526064016108c4565b505b8615614815578554604080516001600160a01b038d81166024830152604482018d90529283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f53174cc100000000000000000000000000000000000000000000000000000000179052609a54609d54919261480f9291169063ffffffff16610eff565b506123a3565b604080516001600160a01b038c811682526020820184905281830187905260608201869052608082018590528a1660a082015290517fedb4d3b4b55168608412f15db11c00859915842963c31b1f08d910a38e1d6aa49181900360c00190a150505050505050505050565b60a1546001600160a01b0382811691161480156148a7575060a1546001600160a01b031615155b15610a265760a0546040517f40c10f19000000000000000000000000000000000000000000000000000000008152336004820152602481018490526001600160a01b03909116906340c10f19906044016143e7565b6000614951826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166149e19092919063ffffffff16565b805190915015611c44578080602001905181019061496f9190614ff4565b611c445760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016108c4565b60606149f084846000856149f8565b949350505050565b606082471015614a705760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016108c4565b843b614abe5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108c4565b600080866001600160a01b03168587604051614ada9190615016565b60006040518083038185875af1925050503d8060008114614b17576040519150601f19603f3d011682016040523d82523d6000602084013e614b1c565b606091505b5091509150614b2c828286614b37565b979650505050505050565b60608315614b46575081613bae565b825115614b565782518084602001fd5b8160405162461bcd60e51b81526004016108c49190615032565b6001600160a01b0381168114613f2a57600080fd5b60008060408385031215614b9857600080fd5b8235614ba381614b70565b91506020830135614bb381614b70565b809150509250929050565b600060208284031215614bd057600080fd5b8135613bae81614b70565b60008060408385031215614bee57600080fd5b823591506020830135614bb381614b70565b600060208284031215614c1257600080fd5b813563ffffffff81168114613bae57600080fd5b600080600060608486031215614c3b57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215614c6757600080fd5b833592506020840135614c7981614b70565b91506040840135614c8981614b70565b809150509250925092565b600080600060608486031215614ca957600080fd5b8335614cb481614b70565b9250602084013591506040840135614c8981614b70565b60008060208385031215614cde57600080fd5b823567ffffffffffffffff80821115614cf657600080fd5b818501915085601f830112614d0a57600080fd5b813581811115614d1957600080fd5b866020606083028501011115614d2e57600080fd5b60209290920196919550909350505050565b600060208284031215614d5257600080fd5b5051919050565b600060208284031215614d6b57600080fd5b8151613bae81614b70565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060608284031215614db757600080fd5b6040516060810181811067ffffffffffffffff82111715614e01577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235614e0f81614b70565b81526020830135614e1f81614b70565b60208201526040928301359281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614e9857614e98614e37565b5060010190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ed757614ed7614e37565b500290565b600082614f12577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015614f2957614f29614e37565b500390565b60008219821115614f4157614f41614e37565b500190565b60005b83811015614f61578181015183820152602001614f49565b838111156119025750506000910152565b60008151808452614f8a816020860160208601614f46565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6001600160a01b0384168152606060208201526000614fde6060830185614f72565b905063ffffffff83166040830152949350505050565b60006020828403121561500657600080fd5b81518015158114613bae57600080fd5b60008251615028818460208701614f46565b9190910192915050565b602081526000613bae6020830184614f7256fea164736f6c6343000809000a820264a0c19e5fab427069537b1b8d5dee0fe85024a7f4bb79ba1f3d2252ef597c05226ea037d06312f23acb8038ca26702a0e709331830e3b7b91e3e1a82ddb18f2a05fdd"}|{"jsonrpc":"2.0","error":{"code":-32013,"message":"backend returned an invalid response"},"id":null} diff --git a/go/proxyd/integration_tests/util_test.go b/go/proxyd/integration_tests/util_test.go index 0b2e2daf49..db52d2f43b 100644 --- a/go/proxyd/integration_tests/util_test.go +++ b/go/proxyd/integration_tests/util_test.go @@ -7,7 +7,6 @@ import ( "io" "net/http" "os" - "sync" "testing" "time" @@ -123,7 +122,6 @@ type ProxydWSClient struct { conn *websocket.Conn msgCB ProxydWSClientOnMessage closeCB ProxydWSClientOnClose - mu sync.Mutex } type WSMessage struct { @@ -136,11 +134,10 @@ type ProxydWSClientOnClose func(err error) func NewProxydWSClient( url string, - header http.Header, msgCB ProxydWSClientOnMessage, closeCB ProxydWSClientOnClose, ) (*ProxydWSClient, error) { - conn, _, err := websocket.DefaultDialer.Dial(url, header) // nolint:bodyclose + conn, _, err := websocket.DefaultDialer.Dial(url, nil) // nolint:bodyclose if err != nil { return nil, err } @@ -178,8 +175,6 @@ func (h *ProxydWSClient) SoftClose() error { } func (h *ProxydWSClient) WriteMessage(msgType int, msg []byte) error { - h.mu.Lock() - defer h.mu.Unlock() return h.conn.WriteMessage(msgType, msg) } diff --git a/go/proxyd/integration_tests/validation_test.go b/go/proxyd/integration_tests/validation_test.go index e1e491162f..5f7d5aefac 100644 --- a/go/proxyd/integration_tests/validation_test.go +++ b/go/proxyd/integration_tests/validation_test.go @@ -1,6 +1,7 @@ package integration_tests import ( + "fmt" "os" "strings" "testing" @@ -10,14 +11,12 @@ import ( ) const ( - notWhitelistedResponse = `{"jsonrpc":"2.0","error":{"code":-32001,"message":"rpc method is not whitelisted custom message"},"id":999}` - parseErrResponse = `{"jsonrpc":"2.0","error":{"code":-32700,"message":"parse error"},"id":null}` - invalidJSONRPCVersionResponse = `{"error":{"code":-32600,"message":"invalid JSON-RPC version"},"id":null,"jsonrpc":"2.0"}` - invalidIDResponse = `{"error":{"code":-32600,"message":"invalid ID"},"id":null,"jsonrpc":"2.0"}` - invalidMethodResponse = `{"error":{"code":-32600,"message":"no method specified"},"id":null,"jsonrpc":"2.0"}` - invalidBatchLenResponse = `{"error":{"code":-32600,"message":"must specify at least one batch call"},"id":null,"jsonrpc":"2.0"}` - invalidRateLimitResponse = `{"jsonrpc":"2.0","error":{"code":-32000,"message":"over rate limit with special message"},"id":1}` - invalidSenderRateLimitResponse = `{"jsonrpc":"2.0","error":{"code":-32017,"message":"sender is over rate limit"},"id":1}` + notWhitelistedResponse = `{"jsonrpc":"2.0","error":{"code":-32001,"message":"rpc method is not whitelisted custom message"},"id":999}` + parseErrResponse = `{"jsonrpc":"2.0","error":{"code":-32700,"message":"parse error"},"id":null}` + invalidJSONRPCVersionResponse = `{"error":{"code":-32600,"message":"invalid JSON-RPC version"},"id":null,"jsonrpc":"2.0"}` + invalidIDResponse = `{"error":{"code":-32600,"message":"invalid ID"},"id":null,"jsonrpc":"2.0"}` + invalidMethodResponse = `{"error":{"code":-32600,"message":"no method specified"},"id":null,"jsonrpc":"2.0"}` + invalidBatchLenResponse = `{"error":{"code":-32600,"message":"must specify at least one batch call"},"id":null,"jsonrpc":"2.0"}` ) func TestSingleRPCValidation(t *testing.T) { @@ -28,7 +27,7 @@ func TestSingleRPCValidation(t *testing.T) { config := ReadConfig("whitelist") client := NewProxydClient("http://127.0.0.1:8545") - shutdown, err := proxyd.Start(config) + _, shutdown, err := proxyd.Start(config) require.NoError(t, err) defer shutdown() @@ -112,7 +111,7 @@ func TestBatchRPCValidation(t *testing.T) { config := ReadConfig("whitelist") client := NewProxydClient("http://127.0.0.1:8545") - shutdown, err := proxyd.Start(config) + _, shutdown, err := proxyd.Start(config) require.NoError(t, err) defer shutdown() @@ -229,6 +228,31 @@ func TestBatchRPCValidation(t *testing.T) { } } +func TestSizeLimits(t *testing.T) { + goodBackend := NewMockBackend(BatchedResponseHandler(200, goodResponse)) + defer goodBackend.Close() + + require.NoError(t, os.Setenv("GOOD_BACKEND_RPC_URL", goodBackend.URL())) + + config := ReadConfig("size_limits") + client := NewProxydClient("http://127.0.0.1:8545") + _, shutdown, err := proxyd.Start(config) + require.NoError(t, err) + defer shutdown() + + payload := strings.Repeat("barf", 1024*1024) + out, code, err := client.SendRequest([]byte(fmt.Sprintf(`{"jsonrpc": "2.0", "method": "eth_chainId", "params": [%s], "id": 1}`, payload))) + require.NoError(t, err) + require.Equal(t, `{"jsonrpc":"2.0","error":{"code":-32021,"message":"request body too large"},"id":null}`, strings.TrimSpace(string(out))) + require.Equal(t, 413, code) + + // The default response is already over the size limit in size_limits.toml. + out, code, err = client.SendRequest([]byte(`{"jsonrpc": "2.0", "method": "eth_chainId", "params": [], "id": 1}`)) + require.NoError(t, err) + require.Equal(t, `{"jsonrpc":"2.0","error":{"code":-32020,"message":"backend response too large"},"id":1}`, strings.TrimSpace(string(out))) + require.Equal(t, 500, code) +} + func asArray(in ...string) string { return "[" + strings.Join(in, ",") + "]" } diff --git a/go/proxyd/integration_tests/ws_test.go b/go/proxyd/integration_tests/ws_test.go index 238c06d6a4..bd41991fdf 100644 --- a/go/proxyd/integration_tests/ws_test.go +++ b/go/proxyd/integration_tests/ws_test.go @@ -1,8 +1,6 @@ package integration_tests import ( - "bufio" - "net/http" "os" "strings" "sync" @@ -10,9 +8,8 @@ import ( "testing" "time" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum-optimism/optimism/proxyd" + "github.com/ethereum/go-ethereum/log" "github.com/gorilla/websocket" "github.com/stretchr/testify/require" ) @@ -41,9 +38,9 @@ func TestConcurrentWSPanic(t *testing.T) { require.NoError(t, os.Setenv("GOOD_BACKEND_RPC_URL", backend.URL())) config := ReadConfig("ws") - shutdown, err := proxyd.Start(config) + _, shutdown, err := proxyd.Start(config) require.NoError(t, err) - client, err := NewProxydWSClient("ws://127.0.0.1:8546", nil, nil, nil) + client, err := NewProxydWSClient("ws://127.0.0.1:8546", nil, nil) require.NoError(t, err) defer shutdown() @@ -150,33 +147,79 @@ func TestWS(t *testing.T) { require.NoError(t, os.Setenv("GOOD_BACKEND_RPC_URL", backend.URL())) config := ReadConfig("ws") - shutdown, err := proxyd.Start(config) + _, shutdown, err := proxyd.Start(config) require.NoError(t, err) - defer shutdown() - - client, err := NewProxydWSClient("ws://127.0.0.1:8546", nil, func(msgType int, data []byte) { + client, err := NewProxydWSClient("ws://127.0.0.1:8546", func(msgType int, data []byte) { clientHdlr.MsgCB(msgType, data) }, nil) defer client.HardClose() require.NoError(t, err) + defer shutdown() - f, err := os.Open("testdata/ws_testdata.txt") - require.NoError(t, err) - defer f.Close() - - scanner := bufio.NewScanner(f) - scanner.Scan() // skip header - for scanner.Scan() { - record := strings.Split(scanner.Text(), "|") - name, body, responseBody, expResponseBody := record[0], record[1], record[2], record[3] - if expResponseBody == "" { - expResponseBody = responseBody - } - require.NoError(t, err) - t.Run(name, func(t *testing.T) { - res := spamWSReqs(t, clientHdlr, backendHdlr, client, []byte(body), []byte(responseBody), 1) - require.NoError(t, err) - require.Equal(t, 1, res[expResponseBody]) + tests := []struct { + name string + backendRes string + expRes string + clientReq string + }{ + { + "ok response", + "{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\"0xcd0c3e8af590364c09d0fa6a1210faf5\"}", + "{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\"0xcd0c3e8af590364c09d0fa6a1210faf5\"}", + "{\"id\": 1, \"method\": \"eth_subscribe\", \"params\": [\"newHeads\"]}", + }, + { + "garbage backend response", + "gibblegabble", + "{\"jsonrpc\":\"2.0\",\"error\":{\"code\":-32013,\"message\":\"backend returned an invalid response\"},\"id\":null}", + "{\"id\": 1, \"method\": \"eth_subscribe\", \"params\": [\"newHeads\"]}", + }, + { + "blacklisted RPC", + "}", + "{\"jsonrpc\":\"2.0\",\"error\":{\"code\":-32001,\"message\":\"rpc method is not whitelisted\"},\"id\":1}", + "{\"id\": 1, \"method\": \"eth_whatever\", \"params\": []}", + }, + { + "garbage client request", + "{}", + "{\"jsonrpc\":\"2.0\",\"error\":{\"code\":-32700,\"message\":\"parse error\"},\"id\":null}", + "barf", + }, + { + "invalid client request", + "{}", + "{\"jsonrpc\":\"2.0\",\"error\":{\"code\":-32700,\"message\":\"parse error\"},\"id\":null}", + "{\"jsonrpc\": \"2.0\", \"method\": true}", + }, + { + "eth_accounts", + "{}", + "{\"jsonrpc\":\"2.0\",\"result\":[],\"id\":1}", + "{\"jsonrpc\": \"2.0\", \"method\": \"eth_accounts\", \"id\": 1}", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + timeout := time.NewTicker(10 * time.Second) + doneCh := make(chan struct{}, 1) + backendHdlr.SetMsgCB(func(conn *websocket.Conn, msgType int, data []byte) { + require.NoError(t, conn.WriteMessage(websocket.TextMessage, []byte(tt.backendRes))) + }) + clientHdlr.SetMsgCB(func(msgType int, data []byte) { + require.Equal(t, tt.expRes, string(data)) + doneCh <- struct{}{} + }) + require.NoError(t, client.WriteMessage( + websocket.TextMessage, + []byte(tt.clientReq), + )) + select { + case <-timeout.C: + t.Fatalf("timed out") + case <-doneCh: + return + } }) } } @@ -195,13 +238,13 @@ func TestWSClientClosure(t *testing.T) { require.NoError(t, os.Setenv("GOOD_BACKEND_RPC_URL", backend.URL())) config := ReadConfig("ws") - shutdown, err := proxyd.Start(config) + _, shutdown, err := proxyd.Start(config) require.NoError(t, err) defer shutdown() for _, closeType := range []string{"soft", "hard"} { t.Run(closeType, func(t *testing.T) { - client, err := NewProxydWSClient("ws://127.0.0.1:8546", nil, func(msgType int, data []byte) { + client, err := NewProxydWSClient("ws://127.0.0.1:8546", func(msgType int, data []byte) { clientHdlr.MsgCB(msgType, data) }, nil) require.NoError(t, err) @@ -228,112 +271,7 @@ func TestWSClientClosure(t *testing.T) { } } -func TestWSClientMaxConns(t *testing.T) { - backend := NewMockWSBackend(nil, nil, nil) - defer backend.Close() - - require.NoError(t, os.Setenv("GOOD_BACKEND_RPC_URL", backend.URL())) - - config := ReadConfig("ws") - shutdown, err := proxyd.Start(config) - require.NoError(t, err) - defer shutdown() - - doneCh := make(chan struct{}, 1) - _, err = NewProxydWSClient("ws://127.0.0.1:8546", nil, nil, nil) - require.NoError(t, err) - _, err = NewProxydWSClient("ws://127.0.0.1:8546", nil, nil, func(err error) { - require.Contains(t, err.Error(), "unexpected EOF") - doneCh <- struct{}{} - }) - require.NoError(t, err) - - timeout := time.NewTicker(30 * time.Second) - select { - case <-timeout.C: - t.Fatalf("timed out") - case <-doneCh: - return - } -} - -var sampleRequest = []byte("{\"jsonrpc\": \"2.0\", \"method\": \"eth_accounts\", \"id\": 1}") - -func TestWSClientMaxRPSLimit(t *testing.T) { - backendHdlr := new(backendHandler) - clientHdlr := new(clientHandler) - - backend := NewMockWSBackend(nil, func(conn *websocket.Conn, msgType int, data []byte) { - backendHdlr.MsgCB(conn, msgType, data) - }, func(conn *websocket.Conn, err error) { - backendHdlr.CloseCB(conn, err) - }) - defer backend.Close() - - require.NoError(t, os.Setenv("GOOD_BACKEND_RPC_URL", backend.URL())) - - config := ReadConfig("ws_frontend_rate_limit") - shutdown, err := proxyd.Start(config) - require.NoError(t, err) - defer shutdown() - - t.Run("non-exempt over limit", func(t *testing.T) { - client, err := NewProxydWSClient("ws://127.0.0.1:8546", nil, func(msgType int, data []byte) { - clientHdlr.MsgCB(msgType, data) - }, nil) - defer client.HardClose() - require.NoError(t, err) - res := spamWSReqs(t, clientHdlr, backendHdlr, client, sampleRequest, []byte(""), 4) - require.Equal(t, 3, res[invalidRateLimitResponse]) - }) - - t.Run("exempt user agent over limit", func(t *testing.T) { - h := make(http.Header) - h.Set("User-Agent", "exempt_agent") - client, err := NewProxydWSClient("ws://127.0.0.1:8546", h, func(msgType int, data []byte) { - clientHdlr.MsgCB(msgType, data) - }, nil) - defer client.HardClose() - require.NoError(t, err) - res := spamWSReqs(t, clientHdlr, backendHdlr, client, sampleRequest, []byte(""), 4) - require.Equal(t, 0, res[invalidRateLimitResponse]) - }) - - t.Run("exempt origin over limit", func(t *testing.T) { - h := make(http.Header) - // In gorilla/websocket, the Origin header must be the same as the URL. - // Otherwise, it will be rejected - h.Set("Origin", "wss://127.0.0.1:8546") - client, err := NewProxydWSClient("ws://127.0.0.1:8546", h, func(msgType int, data []byte) { - clientHdlr.MsgCB(msgType, data) - }, nil) - defer client.HardClose() - require.NoError(t, err) - res := spamWSReqs(t, clientHdlr, backendHdlr, client, sampleRequest, []byte(""), 4) - require.Equal(t, 0, res[invalidRateLimitResponse]) - }) - - t.Run("multiple xff", func(t *testing.T) { - h1 := make(http.Header) - h1.Set("X-Forwarded-For", "1.1.1.1") - h2 := make(http.Header) - h2.Set("X-Forwarded-For", "2.2.2.2") - client1, _ := NewProxydWSClient("ws://127.0.0.1:8546", h1, func(msgType int, data []byte) { - clientHdlr.MsgCB(msgType, data) - }, nil) - defer client1.HardClose() - client2, _ := NewProxydWSClient("ws://127.0.0.1:8546", h2, func(msgType int, data []byte) { - clientHdlr.MsgCB(msgType, data) - }, nil) - defer client2.HardClose() - res1 := spamWSReqs(t, clientHdlr, backendHdlr, client1, sampleRequest, []byte(""), 4) - res2 := spamWSReqs(t, clientHdlr, backendHdlr, client2, sampleRequest, []byte(""), 4) - require.Equal(t, 3, res1[invalidRateLimitResponse]) - require.Equal(t, 3, res2[invalidRateLimitResponse]) - }) -} - -func TestWSSenderRateLimitLimiting(t *testing.T) { +func TestWSClientExceedReadLimit(t *testing.T) { backendHdlr := new(backendHandler) clientHdlr := new(clientHandler) @@ -346,55 +284,34 @@ func TestWSSenderRateLimitLimiting(t *testing.T) { require.NoError(t, os.Setenv("GOOD_BACKEND_RPC_URL", backend.URL())) - config := ReadConfig("ws_sender_rate_limit") - shutdown, err := proxyd.Start(config) + config := ReadConfig("ws") + _, shutdown, err := proxyd.Start(config) require.NoError(t, err) defer shutdown() - // Two separate requests from the same sender - // should be rate limited. - client, err := NewProxydWSClient("ws://127.0.0.1:8546", nil, func(msgType int, data []byte) { + client, err := NewProxydWSClient("ws://127.0.0.1:8546", func(msgType int, data []byte) { clientHdlr.MsgCB(msgType, data) }, nil) - defer client.HardClose() require.NoError(t, err) - res := spamWSReqs(t, clientHdlr, backendHdlr, client, makeSendRawTransaction(txHex1), []byte(""), 4) - require.Equal(t, 3, res[invalidSenderRateLimitResponse]) - - // Clear the limiter. - time.Sleep(1100 * time.Millisecond) - - // Two separate requests from different senders - // should not be rate limited. - res1 := spamWSReqs(t, clientHdlr, backendHdlr, client, makeSendRawTransaction(txHex1), []byte(""), 4) - res2 := spamWSReqs(t, clientHdlr, backendHdlr, client, makeSendRawTransaction(txHex2), []byte(""), 4) - require.Equal(t, 3, res1[invalidSenderRateLimitResponse]) - require.Equal(t, 3, res2[invalidSenderRateLimitResponse]) -} -func spamWSReqs(t *testing.T, clientHdlr *clientHandler, backendHdlr *backendHandler, client *ProxydWSClient, request []byte, response []byte, n int) map[string]int { - resCh := make(chan string) - for i := 0; i < n; i++ { - go func() { - backendHdlr.SetMsgCB(func(conn *websocket.Conn, msgType int, data []byte) { - require.NoError(t, conn.WriteMessage(websocket.TextMessage, response)) - }) - clientHdlr.SetMsgCB(func(msgType int, data []byte) { - resCh <- string(data) - }) - require.NoError(t, client.WriteMessage( - websocket.TextMessage, - []byte(request), - )) - }() - } + closed := false + originalHandler := client.conn.CloseHandler() + client.conn.SetCloseHandler(func(code int, text string) error { + closed = true + return originalHandler(code, text) + }) - resMapping := make(map[string]int) - for i := 0; i < n; i++ { - res := <-resCh - response := res - resMapping[response]++ - } + backendHdlr.SetMsgCB(func(conn *websocket.Conn, msgType int, data []byte) { + t.Fatalf("backend should not get the large message") + }) + + payload := strings.Repeat("barf", 1024*1024) + clientReq := "{\"id\": 1, \"method\": \"eth_subscribe\", \"params\": [\"" + payload + "\"]}" + err = client.WriteMessage( + websocket.TextMessage, + []byte(clientReq), + ) + require.Error(t, err) + require.True(t, closed) - return resMapping } diff --git a/go/proxyd/lvc.go b/go/proxyd/lvc.go deleted file mode 100644 index 146bbce0ee..0000000000 --- a/go/proxyd/lvc.go +++ /dev/null @@ -1,87 +0,0 @@ -package proxyd - -import ( - "context" - "time" - - "github.com/ethereum/go-ethereum/ethclient" - "github.com/ethereum/go-ethereum/log" -) - -const cacheSyncRate = 1 * time.Second - -type lvcUpdateFn func(context.Context, *ethclient.Client) (string, error) - -type EthLastValueCache struct { - client *ethclient.Client - cache Cache - key string - updater lvcUpdateFn - quit chan struct{} -} - -func newLVC(client *ethclient.Client, cache Cache, cacheKey string, updater lvcUpdateFn) *EthLastValueCache { - return &EthLastValueCache{ - client: client, - cache: cache, - key: cacheKey, - updater: updater, - quit: make(chan struct{}), - } -} - -func (h *EthLastValueCache) Start() { - go func() { - ticker := time.NewTicker(cacheSyncRate) - defer ticker.Stop() - - for { - select { - case <-ticker.C: - lvcPollTimeGauge.WithLabelValues(h.key).SetToCurrentTime() - - value, err := h.getUpdate() - if err != nil { - log.Error("error retrieving latest value", "key", h.key, "error", err) - continue - } - log.Trace("polling latest value", "value", value) - - if err := h.cache.Put(context.Background(), h.key, value); err != nil { - log.Error("error writing last value to cache", "key", h.key, "error", err) - } - - case <-h.quit: - return - } - } - }() -} - -func (h *EthLastValueCache) getUpdate() (string, error) { - const maxRetries = 5 - var err error - - for i := 0; i <= maxRetries; i++ { - var value string - value, err = h.updater(context.Background(), h.client) - if err != nil { - backoff := calcBackoff(i) - log.Warn("http operation failed. retrying...", "error", err, "backoff", backoff) - lvcErrorsTotal.WithLabelValues(h.key).Inc() - time.Sleep(backoff) - continue - } - return value, nil - } - - return "", wrapErr(err, "exceeded retries") -} - -func (h *EthLastValueCache) Stop() { - close(h.quit) -} - -func (h *EthLastValueCache) Read(ctx context.Context) (string, error) { - return h.cache.Get(ctx, h.key) -} diff --git a/go/proxyd/methods.go b/go/proxyd/methods.go index 4b1731f0bc..08ea773288 100644 --- a/go/proxyd/methods.go +++ b/go/proxyd/methods.go @@ -2,16 +2,13 @@ package proxyd import ( "context" + "crypto/sha256" "encoding/json" - "errors" "fmt" + "strings" "sync" - "github.com/ethereum/go-ethereum/common/hexutil" -) - -var ( - errInvalidRPCParams = errors.New("invalid RPC params") + "github.com/ethereum/go-ethereum/log" ) type RPCMethodHandler interface { @@ -20,359 +17,35 @@ type RPCMethodHandler interface { } type StaticMethodHandler struct { - cache interface{} - m sync.RWMutex + cache Cache + m sync.RWMutex + filterGet func(*RPCReq) bool + filterPut func(*RPCReq, *RPCRes) bool } -func (e *StaticMethodHandler) GetRPCMethod(ctx context.Context, req *RPCReq) (*RPCRes, error) { - e.m.RLock() - cache := e.cache - e.m.RUnlock() - - if cache == nil { - return nil, nil - } - return &RPCRes{ - JSONRPC: req.JSONRPC, - Result: cache, - ID: req.ID, - }, nil +func (e *StaticMethodHandler) key(req *RPCReq) string { + // signature is the hashed json.RawMessage param contents + h := sha256.New() + h.Write(req.Params) + signature := fmt.Sprintf("%x", h.Sum(nil)) + return strings.Join([]string{"cache", req.Method, signature}, ":") } -func (e *StaticMethodHandler) PutRPCMethod(ctx context.Context, req *RPCReq, res *RPCRes) error { - e.m.Lock() +func (e *StaticMethodHandler) GetRPCMethod(ctx context.Context, req *RPCReq) (*RPCRes, error) { if e.cache == nil { - e.cache = res.Result - } - e.m.Unlock() - return nil -} - -type EthGetBlockByNumberMethodHandler struct { - cache Cache - getLatestBlockNumFn GetLatestBlockNumFn - numBlockConfirmations int -} - -func (e *EthGetBlockByNumberMethodHandler) cacheKey(req *RPCReq) string { - input, includeTx, err := decodeGetBlockByNumberParams(req.Params) - if err != nil { - return "" - } - return fmt.Sprintf("method:eth_getBlockByNumber:%s:%t", input, includeTx) -} - -func (e *EthGetBlockByNumberMethodHandler) cacheable(req *RPCReq) (bool, error) { - blockNum, _, err := decodeGetBlockByNumberParams(req.Params) - if err != nil { - return false, err - } - return !isBlockDependentParam(blockNum), nil -} - -func (e *EthGetBlockByNumberMethodHandler) GetRPCMethod(ctx context.Context, req *RPCReq) (*RPCRes, error) { - if ok, err := e.cacheable(req); !ok || err != nil { - return nil, err - } - key := e.cacheKey(req) - return getImmutableRPCResponse(ctx, e.cache, key, req) -} - -func (e *EthGetBlockByNumberMethodHandler) PutRPCMethod(ctx context.Context, req *RPCReq, res *RPCRes) error { - if ok, err := e.cacheable(req); !ok || err != nil { - return err - } - - blockInput, _, err := decodeGetBlockByNumberParams(req.Params) - if err != nil { - return err - } - if isBlockDependentParam(blockInput) { - return nil - } - if blockInput != "earliest" { - curBlock, err := e.getLatestBlockNumFn(ctx) - if err != nil { - return err - } - blockNum, err := decodeBlockInput(blockInput) - if err != nil { - return err - } - if curBlock <= blockNum+uint64(e.numBlockConfirmations) { - return nil - } - } - - key := e.cacheKey(req) - return putImmutableRPCResponse(ctx, e.cache, key, req, res) -} - -type EthGetBlockRangeMethodHandler struct { - cache Cache - getLatestBlockNumFn GetLatestBlockNumFn - numBlockConfirmations int -} - -func (e *EthGetBlockRangeMethodHandler) cacheKey(req *RPCReq) string { - start, end, includeTx, err := decodeGetBlockRangeParams(req.Params) - if err != nil { - return "" - } - return fmt.Sprintf("method:eth_getBlockRange:%s:%s:%t", start, end, includeTx) -} - -func (e *EthGetBlockRangeMethodHandler) cacheable(req *RPCReq) (bool, error) { - start, end, _, err := decodeGetBlockRangeParams(req.Params) - if err != nil { - return false, err - } - return !isBlockDependentParam(start) && !isBlockDependentParam(end), nil -} - -func (e *EthGetBlockRangeMethodHandler) GetRPCMethod(ctx context.Context, req *RPCReq) (*RPCRes, error) { - if ok, err := e.cacheable(req); !ok || err != nil { - return nil, err - } - - key := e.cacheKey(req) - return getImmutableRPCResponse(ctx, e.cache, key, req) -} - -func (e *EthGetBlockRangeMethodHandler) PutRPCMethod(ctx context.Context, req *RPCReq, res *RPCRes) error { - if ok, err := e.cacheable(req); !ok || err != nil { - return err - } - - start, end, _, err := decodeGetBlockRangeParams(req.Params) - if err != nil { - return err - } - curBlock, err := e.getLatestBlockNumFn(ctx) - if err != nil { - return err - } - if start != "earliest" { - startNum, err := decodeBlockInput(start) - if err != nil { - return err - } - if curBlock <= startNum+uint64(e.numBlockConfirmations) { - return nil - } - } - if end != "earliest" { - endNum, err := decodeBlockInput(end) - if err != nil { - return err - } - if curBlock <= endNum+uint64(e.numBlockConfirmations) { - return nil - } - } - - key := e.cacheKey(req) - return putImmutableRPCResponse(ctx, e.cache, key, req, res) -} - -type EthCallMethodHandler struct { - cache Cache - getLatestBlockNumFn GetLatestBlockNumFn - numBlockConfirmations int -} - -func (e *EthCallMethodHandler) cacheable(params *ethCallParams, blockTag string) bool { - if isBlockDependentParam(blockTag) { - return false - } - if params.From != "" || params.Gas != "" { - return false - } - if params.Value != "" && params.Value != "0x0" { - return false - } - return true -} - -func (e *EthCallMethodHandler) cacheKey(params *ethCallParams, blockTag string) string { - keyParams := fmt.Sprintf("%s:%s:%s", params.To, params.Data, blockTag) - return fmt.Sprintf("method:eth_call:%s", keyParams) -} - -func (e *EthCallMethodHandler) GetRPCMethod(ctx context.Context, req *RPCReq) (*RPCRes, error) { - params, blockTag, err := decodeEthCallParams(req) - if err != nil { - return nil, err - } - if !e.cacheable(params, blockTag) { return nil, nil } - key := e.cacheKey(params, blockTag) - return getImmutableRPCResponse(ctx, e.cache, key, req) -} - -func (e *EthCallMethodHandler) PutRPCMethod(ctx context.Context, req *RPCReq, res *RPCRes) error { - params, blockTag, err := decodeEthCallParams(req) - if err != nil { - return err - } - if !e.cacheable(params, blockTag) { - return nil - } - - if blockTag != "earliest" { - curBlock, err := e.getLatestBlockNumFn(ctx) - if err != nil { - return err - } - blockNum, err := decodeBlockInput(blockTag) - if err != nil { - return err - } - if curBlock <= blockNum+uint64(e.numBlockConfirmations) { - return nil - } - } - - key := e.cacheKey(params, blockTag) - return putImmutableRPCResponse(ctx, e.cache, key, req, res) -} - -type EthBlockNumberMethodHandler struct { - getLatestBlockNumFn GetLatestBlockNumFn -} - -func (e *EthBlockNumberMethodHandler) GetRPCMethod(ctx context.Context, req *RPCReq) (*RPCRes, error) { - blockNum, err := e.getLatestBlockNumFn(ctx) - if err != nil { - return nil, err - } - return makeRPCRes(req, hexutil.EncodeUint64(blockNum)), nil -} - -func (e *EthBlockNumberMethodHandler) PutRPCMethod(context.Context, *RPCReq, *RPCRes) error { - return nil -} - -type EthGasPriceMethodHandler struct { - getLatestGasPrice GetLatestGasPriceFn -} - -func (e *EthGasPriceMethodHandler) GetRPCMethod(ctx context.Context, req *RPCReq) (*RPCRes, error) { - gasPrice, err := e.getLatestGasPrice(ctx) - if err != nil { - return nil, err - } - return makeRPCRes(req, hexutil.EncodeUint64(gasPrice)), nil -} - -func (e *EthGasPriceMethodHandler) PutRPCMethod(context.Context, *RPCReq, *RPCRes) error { - return nil -} - -func isBlockDependentParam(s string) bool { - return s == "latest" || s == "pending" -} - -func decodeGetBlockByNumberParams(params json.RawMessage) (string, bool, error) { - var list []interface{} - if err := json.Unmarshal(params, &list); err != nil { - return "", false, err - } - if len(list) != 2 { - return "", false, errInvalidRPCParams - } - blockNum, ok := list[0].(string) - if !ok { - return "", false, errInvalidRPCParams - } - includeTx, ok := list[1].(bool) - if !ok { - return "", false, errInvalidRPCParams - } - if !validBlockInput(blockNum) { - return "", false, errInvalidRPCParams - } - return blockNum, includeTx, nil -} - -func decodeGetBlockRangeParams(params json.RawMessage) (string, string, bool, error) { - var list []interface{} - if err := json.Unmarshal(params, &list); err != nil { - return "", "", false, err - } - if len(list) != 3 { - return "", "", false, errInvalidRPCParams - } - startBlockNum, ok := list[0].(string) - if !ok { - return "", "", false, errInvalidRPCParams - } - endBlockNum, ok := list[1].(string) - if !ok { - return "", "", false, errInvalidRPCParams - } - includeTx, ok := list[2].(bool) - if !ok { - return "", "", false, errInvalidRPCParams - } - if !validBlockInput(startBlockNum) || !validBlockInput(endBlockNum) { - return "", "", false, errInvalidRPCParams - } - return startBlockNum, endBlockNum, includeTx, nil -} - -func decodeBlockInput(input string) (uint64, error) { - return hexutil.DecodeUint64(input) -} - -type ethCallParams struct { - From string `json:"from"` - To string `json:"to"` - Gas string `json:"gas"` - GasPrice string `json:"gasPrice"` - Value string `json:"value"` - Data string `json:"data"` -} - -func decodeEthCallParams(req *RPCReq) (*ethCallParams, string, error) { - var input []json.RawMessage - if err := json.Unmarshal(req.Params, &input); err != nil { - return nil, "", err - } - if len(input) != 2 { - return nil, "", fmt.Errorf("invalid eth_call parameters") - } - params := new(ethCallParams) - if err := json.Unmarshal(input[0], params); err != nil { - return nil, "", err - } - var blockTag string - if err := json.Unmarshal(input[1], &blockTag); err != nil { - return nil, "", err - } - return params, blockTag, nil -} - -func validBlockInput(input string) bool { - if input == "earliest" || input == "pending" || input == "latest" { - return true + if e.filterGet != nil && !e.filterGet(req) { + return nil, nil } - _, err := decodeBlockInput(input) - return err == nil -} -func makeRPCRes(req *RPCReq, result interface{}) *RPCRes { - return &RPCRes{ - JSONRPC: JSONRPCVersion, - ID: req.ID, - Result: result, - } -} + e.m.RLock() + defer e.m.RUnlock() -func getImmutableRPCResponse(ctx context.Context, cache Cache, key string, req *RPCReq) (*RPCRes, error) { - val, err := cache.Get(ctx, key) + key := e.key(req) + val, err := e.cache.Get(ctx, key) if err != nil { + log.Error("error reading from cache", "key", key, "method", req.Method, "err", err) return nil, err } if val == "" { @@ -381,6 +54,7 @@ func getImmutableRPCResponse(ctx context.Context, cache Cache, key string, req * var result interface{} if err := json.Unmarshal([]byte(val), &result); err != nil { + log.Error("error unmarshalling value from cache", "key", key, "method", req.Method, "err", err) return nil, err } return &RPCRes{ @@ -390,10 +64,29 @@ func getImmutableRPCResponse(ctx context.Context, cache Cache, key string, req * }, nil } -func putImmutableRPCResponse(ctx context.Context, cache Cache, key string, req *RPCReq, res *RPCRes) error { - if key == "" { +func (e *StaticMethodHandler) PutRPCMethod(ctx context.Context, req *RPCReq, res *RPCRes) error { + if e.cache == nil { + return nil + } + // if there is a filter on get, we don't want to cache it because its irretrievable + if e.filterGet != nil && !e.filterGet(req) { return nil } - val := mustMarshalJSON(res.Result) - return cache.Put(ctx, key, string(val)) + // response filter + if e.filterPut != nil && !e.filterPut(req, res) { + return nil + } + + e.m.Lock() + defer e.m.Unlock() + + key := e.key(req) + value := mustMarshalJSON(res.Result) + + err := e.cache.Put(ctx, key, string(value)) + if err != nil { + log.Error("error putting into cache", "key", key, "method", req.Method, "err", err) + return err + } + return nil } diff --git a/go/proxyd/metrics.go b/go/proxyd/metrics.go index 06fef153c8..68ca4e8987 100644 --- a/go/proxyd/metrics.go +++ b/go/proxyd/metrics.go @@ -4,6 +4,9 @@ import ( "context" "strconv" "strings" + "time" + + "github.com/ethereum/go-ethereum/common/hexutil" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" @@ -179,20 +182,12 @@ var ( "method", }) - lvcErrorsTotal = promauto.NewCounterVec(prometheus.CounterOpts{ - Namespace: MetricsNamespace, - Name: "lvc_errors_total", - Help: "Count of lvc errors.", - }, []string{ - "key", - }) - - lvcPollTimeGauge = promauto.NewGaugeVec(prometheus.GaugeOpts{ + cacheErrorsTotal = promauto.NewCounterVec(prometheus.CounterOpts{ Namespace: MetricsNamespace, - Name: "lvc_poll_time_gauge", - Help: "Gauge of lvc poll time.", + Name: "cache_errors_total", + Help: "Number of cache errors.", }, []string{ - "key", + "method", }) batchRPCShortCircuitsTotal = promauto.NewCounter(prometheus.CounterOpts{ @@ -242,6 +237,169 @@ var ( Name: "rate_limit_take_errors", Help: "Count of errors taking frontend rate limits", }) + + consensusLatestBlock = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: MetricsNamespace, + Name: "group_consensus_latest_block", + Help: "Consensus latest block", + }, []string{ + "backend_group_name", + }) + + consensusSafeBlock = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: MetricsNamespace, + Name: "group_consensus_safe_block", + Help: "Consensus safe block", + }, []string{ + "backend_group_name", + }) + + consensusFinalizedBlock = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: MetricsNamespace, + Name: "group_consensus_finalized_block", + Help: "Consensus finalized block", + }, []string{ + "backend_group_name", + }) + + consensusHALatestBlock = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: MetricsNamespace, + Name: "group_consensus_ha_latest_block", + Help: "Consensus HA latest block", + }, []string{ + "backend_group_name", + "leader", + }) + + consensusHASafeBlock = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: MetricsNamespace, + Name: "group_consensus_ha_safe_block", + Help: "Consensus HA safe block", + }, []string{ + "backend_group_name", + "leader", + }) + + consensusHAFinalizedBlock = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: MetricsNamespace, + Name: "group_consensus_ha_finalized_block", + Help: "Consensus HA finalized block", + }, []string{ + "backend_group_name", + "leader", + }) + + backendLatestBlockBackend = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: MetricsNamespace, + Name: "backend_latest_block", + Help: "Current latest block observed per backend", + }, []string{ + "backend_name", + }) + + backendSafeBlockBackend = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: MetricsNamespace, + Name: "backend_safe_block", + Help: "Current safe block observed per backend", + }, []string{ + "backend_name", + }) + + backendFinalizedBlockBackend = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: MetricsNamespace, + Name: "backend_finalized_block", + Help: "Current finalized block observed per backend", + }, []string{ + "backend_name", + }) + + backendUnexpectedBlockTagsBackend = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: MetricsNamespace, + Name: "backend_unexpected_block_tags", + Help: "Bool gauge for unexpected block tags", + }, []string{ + "backend_name", + }) + + consensusGroupCount = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: MetricsNamespace, + Name: "group_consensus_count", + Help: "Consensus group serving traffic count", + }, []string{ + "backend_group_name", + }) + + consensusGroupFilteredCount = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: MetricsNamespace, + Name: "group_consensus_filtered_count", + Help: "Consensus group filtered out from serving traffic count", + }, []string{ + "backend_group_name", + }) + + consensusGroupTotalCount = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: MetricsNamespace, + Name: "group_consensus_total_count", + Help: "Total count of candidates to be part of consensus group", + }, []string{ + "backend_group_name", + }) + + consensusBannedBackends = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: MetricsNamespace, + Name: "consensus_backend_banned", + Help: "Bool gauge for banned backends", + }, []string{ + "backend_name", + }) + + consensusPeerCountBackend = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: MetricsNamespace, + Name: "consensus_backend_peer_count", + Help: "Peer count", + }, []string{ + "backend_name", + }) + + consensusInSyncBackend = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: MetricsNamespace, + Name: "consensus_backend_in_sync", + Help: "Bool gauge for backends in sync", + }, []string{ + "backend_name", + }) + + consensusUpdateDelayBackend = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: MetricsNamespace, + Name: "consensus_backend_update_delay", + Help: "Delay (ms) for backend update", + }, []string{ + "backend_name", + }) + + avgLatencyBackend = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: MetricsNamespace, + Name: "backend_avg_latency", + Help: "Average latency per backend", + }, []string{ + "backend_name", + }) + + degradedBackends = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: MetricsNamespace, + Name: "backend_degraded", + Help: "Bool gauge for degraded backends", + }, []string{ + "backend_name", + }) + + networkErrorRateBackend = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: MetricsNamespace, + Name: "backend_error_rate", + Help: "Request error rate per backend", + }, []string{ + "backend_name", + }) ) func RecordRedisError(source string) { @@ -299,6 +457,99 @@ func RecordCacheMiss(method string) { cacheMissesTotal.WithLabelValues(method).Inc() } +func RecordCacheError(method string) { + cacheErrorsTotal.WithLabelValues(method).Inc() +} + func RecordBatchSize(size int) { batchSizeHistogram.Observe(float64(size)) } + +func RecordGroupConsensusHALatestBlock(group *BackendGroup, leader string, blockNumber hexutil.Uint64) { + consensusHALatestBlock.WithLabelValues(group.Name, leader).Set(float64(blockNumber)) +} + +func RecordGroupConsensusHASafeBlock(group *BackendGroup, leader string, blockNumber hexutil.Uint64) { + consensusHASafeBlock.WithLabelValues(group.Name, leader).Set(float64(blockNumber)) +} + +func RecordGroupConsensusHAFinalizedBlock(group *BackendGroup, leader string, blockNumber hexutil.Uint64) { + consensusHAFinalizedBlock.WithLabelValues(group.Name, leader).Set(float64(blockNumber)) +} + +func RecordGroupConsensusLatestBlock(group *BackendGroup, blockNumber hexutil.Uint64) { + consensusLatestBlock.WithLabelValues(group.Name).Set(float64(blockNumber)) +} + +func RecordGroupConsensusSafeBlock(group *BackendGroup, blockNumber hexutil.Uint64) { + consensusSafeBlock.WithLabelValues(group.Name).Set(float64(blockNumber)) +} + +func RecordGroupConsensusFinalizedBlock(group *BackendGroup, blockNumber hexutil.Uint64) { + consensusFinalizedBlock.WithLabelValues(group.Name).Set(float64(blockNumber)) +} + +func RecordGroupConsensusCount(group *BackendGroup, count int) { + consensusGroupCount.WithLabelValues(group.Name).Set(float64(count)) +} + +func RecordGroupConsensusFilteredCount(group *BackendGroup, count int) { + consensusGroupFilteredCount.WithLabelValues(group.Name).Set(float64(count)) +} + +func RecordGroupTotalCount(group *BackendGroup, count int) { + consensusGroupTotalCount.WithLabelValues(group.Name).Set(float64(count)) +} + +func RecordBackendLatestBlock(b *Backend, blockNumber hexutil.Uint64) { + backendLatestBlockBackend.WithLabelValues(b.Name).Set(float64(blockNumber)) +} + +func RecordBackendSafeBlock(b *Backend, blockNumber hexutil.Uint64) { + backendSafeBlockBackend.WithLabelValues(b.Name).Set(float64(blockNumber)) +} + +func RecordBackendFinalizedBlock(b *Backend, blockNumber hexutil.Uint64) { + backendFinalizedBlockBackend.WithLabelValues(b.Name).Set(float64(blockNumber)) +} + +func RecordBackendUnexpectedBlockTags(b *Backend, unexpected bool) { + backendUnexpectedBlockTagsBackend.WithLabelValues(b.Name).Set(boolToFloat64(unexpected)) +} + +func RecordConsensusBackendBanned(b *Backend, banned bool) { + consensusBannedBackends.WithLabelValues(b.Name).Set(boolToFloat64(banned)) +} + +func RecordConsensusBackendPeerCount(b *Backend, peerCount uint64) { + consensusPeerCountBackend.WithLabelValues(b.Name).Set(float64(peerCount)) +} + +func RecordConsensusBackendInSync(b *Backend, inSync bool) { + consensusInSyncBackend.WithLabelValues(b.Name).Set(boolToFloat64(inSync)) +} + +func RecordConsensusBackendUpdateDelay(b *Backend, lastUpdate time.Time) { + // avoid recording the delay for the first update + if lastUpdate.IsZero() { + return + } + delay := time.Since(lastUpdate) + consensusUpdateDelayBackend.WithLabelValues(b.Name).Set(float64(delay.Milliseconds())) +} + +func RecordBackendNetworkLatencyAverageSlidingWindow(b *Backend, avgLatency time.Duration) { + avgLatencyBackend.WithLabelValues(b.Name).Set(float64(avgLatency.Milliseconds())) + degradedBackends.WithLabelValues(b.Name).Set(boolToFloat64(b.IsDegraded())) +} + +func RecordBackendNetworkErrorRateSlidingWindow(b *Backend, rate float64) { + networkErrorRateBackend.WithLabelValues(b.Name).Set(rate) +} + +func boolToFloat64(b bool) float64 { + if b { + return 1 + } + return 0 +} diff --git a/go/proxyd/package.json b/go/proxyd/package.json deleted file mode 100644 index a2d8ef3b05..0000000000 --- a/go/proxyd/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "@eth-optimism/proxyd", - "version": "3.14.1", - "private": true, - "dependencies": {} -} diff --git a/go/proxyd/pkg/avg-sliding-window/sliding.go b/go/proxyd/pkg/avg-sliding-window/sliding.go new file mode 100644 index 0000000000..70c40be2d6 --- /dev/null +++ b/go/proxyd/pkg/avg-sliding-window/sliding.go @@ -0,0 +1,188 @@ +package avg_sliding_window + +import ( + "sync" + "time" + + lm "github.com/emirpasic/gods/maps/linkedhashmap" +) + +type Clock interface { + Now() time.Time +} + +// DefaultClock provides a clock that gets current time from the system time +type DefaultClock struct{} + +func NewDefaultClock() *DefaultClock { + return &DefaultClock{} +} +func (c DefaultClock) Now() time.Time { + return time.Now() +} + +// AdjustableClock provides a static clock to easily override the system time +type AdjustableClock struct { + now time.Time +} + +func NewAdjustableClock(now time.Time) *AdjustableClock { + return &AdjustableClock{now: now} +} +func (c *AdjustableClock) Now() time.Time { + return c.now +} +func (c *AdjustableClock) Set(now time.Time) { + c.now = now +} + +type bucket struct { + sum float64 + qty uint +} + +// AvgSlidingWindow calculates moving averages efficiently. +// Data points are rounded to nearest bucket of size `bucketSize`, +// and evicted when they are too old based on `windowLength` +type AvgSlidingWindow struct { + mux sync.Mutex + bucketSize time.Duration + windowLength time.Duration + clock Clock + buckets *lm.Map + qty uint + sum float64 +} + +type SlidingWindowOpts func(sw *AvgSlidingWindow) + +func NewSlidingWindow(opts ...SlidingWindowOpts) *AvgSlidingWindow { + sw := &AvgSlidingWindow{ + buckets: lm.New(), + } + for _, opt := range opts { + opt(sw) + } + if sw.bucketSize == 0 { + sw.bucketSize = time.Second + } + if sw.windowLength == 0 { + sw.windowLength = 5 * time.Minute + } + if sw.clock == nil { + sw.clock = NewDefaultClock() + } + return sw +} + +func WithWindowLength(windowLength time.Duration) SlidingWindowOpts { + return func(sw *AvgSlidingWindow) { + sw.windowLength = windowLength + } +} + +func WithBucketSize(bucketSize time.Duration) SlidingWindowOpts { + return func(sw *AvgSlidingWindow) { + sw.bucketSize = bucketSize + } +} + +func WithClock(clock Clock) SlidingWindowOpts { + return func(sw *AvgSlidingWindow) { + sw.clock = clock + } +} + +func (sw *AvgSlidingWindow) inWindow(t time.Time) bool { + now := sw.clock.Now().Round(sw.bucketSize) + windowStart := now.Add(-sw.windowLength) + return windowStart.Before(t) && !t.After(now) +} + +// Add inserts a new data point into the window, with value `val` and the current time +func (sw *AvgSlidingWindow) Add(val float64) { + t := sw.clock.Now() + sw.AddWithTime(t, val) +} + +// Incr is an alias to insert a data point with value float64(1) and the current time +func (sw *AvgSlidingWindow) Incr() { + sw.Add(1) +} + +// AddWithTime inserts a new data point into the window, with value `val` and time `t` +func (sw *AvgSlidingWindow) AddWithTime(t time.Time, val float64) { + sw.advance() + + defer sw.mux.Unlock() + sw.mux.Lock() + + key := t.Round(sw.bucketSize) + if !sw.inWindow(key) { + return + } + + var b *bucket + current, found := sw.buckets.Get(key) + if !found { + b = &bucket{} + } else { + b = current.(*bucket) + } + + // update bucket + bsum := b.sum + b.qty += 1 + b.sum = bsum + val + + // update window + wsum := sw.sum + sw.qty += 1 + sw.sum = wsum - bsum + b.sum + sw.buckets.Put(key, b) +} + +// advance evicts old data points +func (sw *AvgSlidingWindow) advance() { + defer sw.mux.Unlock() + sw.mux.Lock() + now := sw.clock.Now().Round(sw.bucketSize) + windowStart := now.Add(-sw.windowLength) + keys := sw.buckets.Keys() + for _, k := range keys { + if k.(time.Time).After(windowStart) { + break + } + val, _ := sw.buckets.Get(k) + b := val.(*bucket) + sw.buckets.Remove(k) + if sw.buckets.Size() > 0 { + sw.qty -= b.qty + sw.sum = sw.sum - b.sum + } else { + sw.qty = 0 + sw.sum = 0.0 + } + } +} + +// Avg retrieves the current average for the sliding window +func (sw *AvgSlidingWindow) Avg() float64 { + sw.advance() + if sw.qty == 0 { + return 0 + } + return sw.sum / float64(sw.qty) +} + +// Sum retrieves the current sum for the sliding window +func (sw *AvgSlidingWindow) Sum() float64 { + sw.advance() + return sw.sum +} + +// Count retrieves the data point count for the sliding window +func (sw *AvgSlidingWindow) Count() uint { + sw.advance() + return sw.qty +} diff --git a/go/proxyd/pkg/avg-sliding-window/sliding_test.go b/go/proxyd/pkg/avg-sliding-window/sliding_test.go new file mode 100644 index 0000000000..7f5e9b7d1a --- /dev/null +++ b/go/proxyd/pkg/avg-sliding-window/sliding_test.go @@ -0,0 +1,278 @@ +package avg_sliding_window + +import ( + "testing" + "time" + + "github.com/stretchr/testify/require" +) + +func TestSlidingWindow_AddWithTime_Single(t *testing.T) { + now := ts("2023-04-21 15:04:05") + clock := NewAdjustableClock(now) + + sw := NewSlidingWindow( + WithWindowLength(10*time.Second), + WithBucketSize(time.Second), + WithClock(clock)) + sw.AddWithTime(ts("2023-04-21 15:04:05"), 5) + require.Equal(t, 5.0, sw.Avg()) + require.Equal(t, 5.0, sw.Sum()) + require.Equal(t, 1, int(sw.Count())) + require.Equal(t, 1, sw.buckets.Size()) + require.Equal(t, 1, int(sw.buckets.Values()[0].(*bucket).qty)) + require.Equal(t, 5.0, sw.buckets.Values()[0].(*bucket).sum) +} + +func TestSlidingWindow_AddWithTime_TwoValues_SameBucket(t *testing.T) { + now := ts("2023-04-21 15:04:05") + clock := NewAdjustableClock(now) + + sw := NewSlidingWindow( + WithWindowLength(10*time.Second), + WithBucketSize(time.Second), + WithClock(clock)) + sw.AddWithTime(ts("2023-04-21 15:04:05"), 5) + sw.AddWithTime(ts("2023-04-21 15:04:05"), 5) + require.Equal(t, 5.0, sw.Avg()) + require.Equal(t, 10.0, sw.Sum()) + require.Equal(t, 2, int(sw.Count())) + require.Equal(t, 1, sw.buckets.Size()) + require.Equal(t, 2, int(sw.buckets.Values()[0].(*bucket).qty)) + require.Equal(t, 10.0, sw.buckets.Values()[0].(*bucket).sum) +} + +func TestSlidingWindow_AddWithTime_ThreeValues_SameBucket(t *testing.T) { + now := ts("2023-04-21 15:04:05") + clock := NewAdjustableClock(now) + + sw := NewSlidingWindow( + WithWindowLength(10*time.Second), + WithBucketSize(time.Second), + WithClock(clock)) + sw.AddWithTime(ts("2023-04-21 15:04:05"), 4) + sw.AddWithTime(ts("2023-04-21 15:04:05"), 5) + sw.AddWithTime(ts("2023-04-21 15:04:05"), 6) + require.Equal(t, 5.0, sw.Avg()) + require.Equal(t, 15.0, sw.Sum()) + require.Equal(t, 3, int(sw.Count())) + require.Equal(t, 1, sw.buckets.Size()) + require.Equal(t, 15.0, sw.buckets.Values()[0].(*bucket).sum) + require.Equal(t, 3, int(sw.buckets.Values()[0].(*bucket).qty)) +} + +func TestSlidingWindow_AddWithTime_ThreeValues_ThreeBuckets(t *testing.T) { + now := ts("2023-04-21 15:04:05") + clock := NewAdjustableClock(now) + + sw := NewSlidingWindow( + WithWindowLength(10*time.Second), + WithBucketSize(time.Second), + WithClock(clock)) + sw.AddWithTime(ts("2023-04-21 15:04:01"), 4) + sw.AddWithTime(ts("2023-04-21 15:04:02"), 5) + sw.AddWithTime(ts("2023-04-21 15:04:05"), 6) + require.Equal(t, 5.0, sw.Avg()) + require.Equal(t, 15.0, sw.Sum()) + require.Equal(t, 3, int(sw.Count())) + require.Equal(t, 3, sw.buckets.Size()) + require.Equal(t, 1, int(sw.buckets.Values()[0].(*bucket).qty)) + require.Equal(t, 4.0, sw.buckets.Values()[0].(*bucket).sum) + require.Equal(t, 1, int(sw.buckets.Values()[1].(*bucket).qty)) + require.Equal(t, 5.0, sw.buckets.Values()[1].(*bucket).sum) + require.Equal(t, 1, int(sw.buckets.Values()[2].(*bucket).qty)) + require.Equal(t, 6.0, sw.buckets.Values()[2].(*bucket).sum) +} + +func TestSlidingWindow_AddWithTime_OutWindow(t *testing.T) { + now := ts("2023-04-21 15:04:05") + clock := NewAdjustableClock(now) + + sw := NewSlidingWindow( + WithWindowLength(10*time.Second), + WithBucketSize(time.Second), + WithClock(clock)) + sw.AddWithTime(ts("2023-04-21 15:03:55"), 1000) + sw.AddWithTime(ts("2023-04-21 15:04:01"), 4) + sw.AddWithTime(ts("2023-04-21 15:04:02"), 5) + sw.AddWithTime(ts("2023-04-21 15:04:05"), 6) + require.Equal(t, 5.0, sw.Avg()) + require.Equal(t, 15.0, sw.Sum()) + require.Equal(t, 3, int(sw.Count())) + require.Equal(t, 3, sw.buckets.Size()) + require.Equal(t, 1, int(sw.buckets.Values()[0].(*bucket).qty)) + require.Equal(t, 4.0, sw.buckets.Values()[0].(*bucket).sum) + require.Equal(t, 1, int(sw.buckets.Values()[1].(*bucket).qty)) + require.Equal(t, 5.0, sw.buckets.Values()[1].(*bucket).sum) + require.Equal(t, 1, int(sw.buckets.Values()[2].(*bucket).qty)) + require.Equal(t, 6.0, sw.buckets.Values()[2].(*bucket).sum) +} + +func TestSlidingWindow_AdvanceClock(t *testing.T) { + now := ts("2023-04-21 15:04:05") + clock := NewAdjustableClock(now) + + sw := NewSlidingWindow( + WithWindowLength(10*time.Second), + WithBucketSize(time.Second), + WithClock(clock)) + sw.AddWithTime(ts("2023-04-21 15:04:01"), 4) + sw.AddWithTime(ts("2023-04-21 15:04:02"), 5) + sw.AddWithTime(ts("2023-04-21 15:04:05"), 6) + require.Equal(t, 5.0, sw.Avg()) + require.Equal(t, 15.0, sw.Sum()) + require.Equal(t, 3, int(sw.Count())) + require.Equal(t, 3, sw.buckets.Size()) + + require.Equal(t, 1, int(sw.buckets.Values()[0].(*bucket).qty)) + require.Equal(t, 4.0, sw.buckets.Values()[0].(*bucket).sum) + require.Equal(t, 1, int(sw.buckets.Values()[1].(*bucket).qty)) + require.Equal(t, 5.0, sw.buckets.Values()[1].(*bucket).sum) + require.Equal(t, 1, int(sw.buckets.Values()[2].(*bucket).qty)) + require.Equal(t, 6.0, sw.buckets.Values()[2].(*bucket).sum) + + // up until 15:04:05 we had 3 buckets + // let's advance the clock to 15:04:11 and the first data point should be evicted + clock.Set(ts("2023-04-21 15:04:11")) + require.Equal(t, 5.5, sw.Avg()) + require.Equal(t, 11.0, sw.Sum()) + require.Equal(t, 2, int(sw.Count())) + require.Equal(t, 2, sw.buckets.Size()) + require.Equal(t, 1, int(sw.buckets.Values()[0].(*bucket).qty)) + require.Equal(t, 5.0, sw.buckets.Values()[0].(*bucket).sum) + require.Equal(t, 1, int(sw.buckets.Values()[1].(*bucket).qty)) + require.Equal(t, 6.0, sw.buckets.Values()[1].(*bucket).sum) + + // let's advance the clock to 15:04:12 and another data point should be evicted + clock.Set(ts("2023-04-21 15:04:12")) + require.Equal(t, 6.0, sw.Avg()) + require.Equal(t, 6.0, sw.Sum()) + require.Equal(t, 1, int(sw.Count())) + require.Equal(t, 1, sw.buckets.Size()) + require.Equal(t, 1, int(sw.buckets.Values()[0].(*bucket).qty)) + require.Equal(t, 6.0, sw.buckets.Values()[0].(*bucket).sum) + + // let's advance the clock to 15:04:25 and all data point should be evicted + clock.Set(ts("2023-04-21 15:04:25")) + require.Equal(t, 0.0, sw.Avg()) + require.Equal(t, 0.0, sw.Sum()) + require.Equal(t, 0, int(sw.Count())) + require.Equal(t, 0, sw.buckets.Size()) +} + +func TestSlidingWindow_MultipleValPerBucket(t *testing.T) { + now := ts("2023-04-21 15:04:05") + clock := NewAdjustableClock(now) + + sw := NewSlidingWindow( + WithWindowLength(10*time.Second), + WithBucketSize(time.Second), + WithClock(clock)) + sw.AddWithTime(ts("2023-04-21 15:04:01"), 4) + sw.AddWithTime(ts("2023-04-21 15:04:01"), 12) + sw.AddWithTime(ts("2023-04-21 15:04:02"), 5) + sw.AddWithTime(ts("2023-04-21 15:04:02"), 15) + sw.AddWithTime(ts("2023-04-21 15:04:05"), 6) + sw.AddWithTime(ts("2023-04-21 15:04:05"), 3) + sw.AddWithTime(ts("2023-04-21 15:04:05"), 1) + sw.AddWithTime(ts("2023-04-21 15:04:05"), 3) + require.Equal(t, 6.125, sw.Avg()) + require.Equal(t, 49.0, sw.Sum()) + require.Equal(t, 8, int(sw.Count())) + require.Equal(t, 3, sw.buckets.Size()) + require.Equal(t, 2, int(sw.buckets.Values()[0].(*bucket).qty)) + require.Equal(t, 16.0, sw.buckets.Values()[0].(*bucket).sum) + require.Equal(t, 2, int(sw.buckets.Values()[1].(*bucket).qty)) + require.Equal(t, 20.0, sw.buckets.Values()[1].(*bucket).sum) + require.Equal(t, 4, int(sw.buckets.Values()[2].(*bucket).qty)) + require.Equal(t, 13.0, sw.buckets.Values()[2].(*bucket).sum) + + // up until 15:04:05 we had 3 buckets + // let's advance the clock to 15:04:11 and the first data point should be evicted + clock.Set(ts("2023-04-21 15:04:11")) + require.Equal(t, 5.5, sw.Avg()) + require.Equal(t, 33.0, sw.Sum()) + require.Equal(t, 6, int(sw.Count())) + require.Equal(t, 2, sw.buckets.Size()) + require.Equal(t, 2, int(sw.buckets.Values()[0].(*bucket).qty)) + require.Equal(t, 20.0, sw.buckets.Values()[0].(*bucket).sum) + require.Equal(t, 4, int(sw.buckets.Values()[1].(*bucket).qty)) + require.Equal(t, 13.0, sw.buckets.Values()[1].(*bucket).sum) + + // let's advance the clock to 15:04:12 and another data point should be evicted + clock.Set(ts("2023-04-21 15:04:12")) + require.Equal(t, 3.25, sw.Avg()) + require.Equal(t, 13.0, sw.Sum()) + require.Equal(t, 4, int(sw.Count())) + require.Equal(t, 1, sw.buckets.Size()) + require.Equal(t, 4, int(sw.buckets.Values()[0].(*bucket).qty)) + require.Equal(t, 13.0, sw.buckets.Values()[0].(*bucket).sum) + + // let's advance the clock to 15:04:25 and all data point should be evicted + clock.Set(ts("2023-04-21 15:04:25")) + require.Equal(t, 0.0, sw.Avg()) + require.Equal(t, 0, sw.buckets.Size()) +} + +func TestSlidingWindow_CustomBucket(t *testing.T) { + now := ts("2023-04-21 15:04:05") + clock := NewAdjustableClock(now) + + sw := NewSlidingWindow( + WithWindowLength(30*time.Second), + WithBucketSize(10*time.Second), + WithClock(clock)) + sw.AddWithTime(ts("2023-04-21 15:03:49"), 5) // key: 03:50, sum: 5.0 + sw.AddWithTime(ts("2023-04-21 15:04:02"), 15) // key: 04:00 + sw.AddWithTime(ts("2023-04-21 15:04:03"), 5) // key: 04:00 + sw.AddWithTime(ts("2023-04-21 15:04:04"), 1) // key: 04:00, sum: 21.0 + sw.AddWithTime(ts("2023-04-21 15:04:05"), 3) // key: 04:10, sum: 3.0 + require.Equal(t, 5.8, sw.Avg()) + require.Equal(t, 29.0, sw.Sum()) + require.Equal(t, 5, int(sw.Count())) + require.Equal(t, 3, sw.buckets.Size()) + require.Equal(t, 5.0, sw.buckets.Values()[0].(*bucket).sum) + require.Equal(t, 1, int(sw.buckets.Values()[0].(*bucket).qty)) + require.Equal(t, 21.0, sw.buckets.Values()[1].(*bucket).sum) + require.Equal(t, 3, int(sw.buckets.Values()[1].(*bucket).qty)) + require.Equal(t, 3.0, sw.buckets.Values()[2].(*bucket).sum) + require.Equal(t, 1, int(sw.buckets.Values()[2].(*bucket).qty)) + + // up until 15:04:05 we had 3 buckets + // let's advance the clock to 15:04:21 and the first data point should be evicted + clock.Set(ts("2023-04-21 15:04:21")) + require.Equal(t, 6.0, sw.Avg()) + require.Equal(t, 24.0, sw.Sum()) + require.Equal(t, 4, int(sw.Count())) + require.Equal(t, 2, sw.buckets.Size()) + require.Equal(t, 21.0, sw.buckets.Values()[0].(*bucket).sum) + require.Equal(t, 3, int(sw.buckets.Values()[0].(*bucket).qty)) + require.Equal(t, 3.0, sw.buckets.Values()[1].(*bucket).sum) + require.Equal(t, 1, int(sw.buckets.Values()[1].(*bucket).qty)) + + // let's advance the clock to 15:04:32 and another data point should be evicted + clock.Set(ts("2023-04-21 15:04:32")) + require.Equal(t, 3.0, sw.Avg()) + require.Equal(t, 3.0, sw.Sum()) + require.Equal(t, 1, sw.buckets.Size()) + require.Equal(t, 1, int(sw.Count())) + require.Equal(t, 3.0, sw.buckets.Values()[0].(*bucket).sum) + require.Equal(t, 1, int(sw.buckets.Values()[0].(*bucket).qty)) + + // let's advance the clock to 15:04:46 and all data point should be evicted + clock.Set(ts("2023-04-21 15:04:46")) + require.Equal(t, 0.0, sw.Avg()) + require.Equal(t, 0.0, sw.Sum()) + require.Equal(t, 0, int(sw.Count())) + require.Equal(t, 0, sw.buckets.Size()) +} + +// ts is a convenient method that must parse a time.Time from a string in format `"2006-01-02 15:04:05"` +func ts(s string) time.Time { + format := "2006-01-02 15:04:05" + t, err := time.Parse(format, s) + if err != nil { + panic(err) + } + return t +} diff --git a/go/proxyd/proxyd.go b/go/proxyd/proxyd.go index ccc6897580..84051ab559 100644 --- a/go/proxyd/proxyd.go +++ b/go/proxyd/proxyd.go @@ -7,31 +7,29 @@ import ( "fmt" "net/http" "os" - "strconv" "time" "github.com/ethereum/go-ethereum/common/math" - "github.com/ethereum/go-ethereum/ethclient" "github.com/ethereum/go-ethereum/log" - "github.com/go-redis/redis/v8" "github.com/prometheus/client_golang/prometheus/promhttp" + "github.com/redis/go-redis/v9" "golang.org/x/sync/semaphore" ) -func Start(config *Config) (func(), error) { +func Start(config *Config) (*Server, func(), error) { if len(config.Backends) == 0 { - return nil, errors.New("must define at least one backend") + return nil, nil, errors.New("must define at least one backend") } if len(config.BackendGroups) == 0 { - return nil, errors.New("must define at least one backend group") + return nil, nil, errors.New("must define at least one backend group") } if len(config.RPCMethodMappings) == 0 { - return nil, errors.New("must define at least one RPC method mapping") + return nil, nil, errors.New("must define at least one RPC method mapping") } for authKey := range config.Authentication { if authKey == "none" { - return nil, errors.New("cannot use none as an auth key") + return nil, nil, errors.New("cannot use none as an auth key") } } @@ -39,29 +37,16 @@ func Start(config *Config) (func(), error) { if config.Redis.URL != "" { rURL, err := ReadFromEnvOrConfig(config.Redis.URL) if err != nil { - return nil, err + return nil, nil, err } redisClient, err = NewRedisClient(rURL) if err != nil { - return nil, err + return nil, nil, err } } if redisClient == nil && config.RateLimit.UseRedis { - return nil, errors.New("must specify a Redis URL if UseRedis is true in rate limit config") - } - - var lim BackendRateLimiter - var err error - if config.RateLimit.EnableBackendRateLimiter { - if redisClient != nil { - lim = NewRedisRateLimiter(redisClient) - } else { - log.Warn("redis is not configured, using local rate limiter") - lim = NewLocalBackendRateLimiter() - } - } else { - lim = noopBackendRateLimiter + return nil, nil, errors.New("must specify a Redis URL if UseRedis is true in rate limit config") } // While modifying shared globals is a bad practice, the alternative @@ -80,10 +65,10 @@ func Start(config *Config) (func(), error) { if config.SenderRateLimit.Enabled { if config.SenderRateLimit.Limit <= 0 { - return nil, errors.New("limit in sender_rate_limit must be > 0") + return nil, nil, errors.New("limit in sender_rate_limit must be > 0") } if time.Duration(config.SenderRateLimit.Interval) < time.Second { - return nil, errors.New("interval in sender_rate_limit must be >= 1s") + return nil, nil, errors.New("interval in sender_rate_limit must be >= 1s") } } @@ -100,17 +85,14 @@ func Start(config *Config) (func(), error) { rpcURL, err := ReadFromEnvOrConfig(cfg.RPCURL) if err != nil { - return nil, err + return nil, nil, err } wsURL, err := ReadFromEnvOrConfig(cfg.WSURL) if err != nil { - return nil, err + return nil, nil, err } if rpcURL == "" { - return nil, fmt.Errorf("must define an RPC URL for backend %s", name) - } - if wsURL == "" { - return nil, fmt.Errorf("must define a WS URL for backend %s", name) + return nil, nil, fmt.Errorf("must define an RPC URL for backend %s", name) } if config.BackendOptions.ResponseTimeoutSeconds != 0 { @@ -126,6 +108,15 @@ func Start(config *Config) (func(), error) { if config.BackendOptions.OutOfServiceSeconds != 0 { opts = append(opts, WithOutOfServiceDuration(secondsToDuration(config.BackendOptions.OutOfServiceSeconds))) } + if config.BackendOptions.MaxDegradedLatencyThreshold > 0 { + opts = append(opts, WithMaxDegradedLatencyThreshold(time.Duration(config.BackendOptions.MaxDegradedLatencyThreshold))) + } + if config.BackendOptions.MaxLatencyThreshold > 0 { + opts = append(opts, WithMaxLatencyThreshold(time.Duration(config.BackendOptions.MaxLatencyThreshold))) + } + if config.BackendOptions.MaxErrorRateThreshold > 0 { + opts = append(opts, WithMaxErrorRateThreshold(config.BackendOptions.MaxErrorRateThreshold)) + } if cfg.MaxRPS != 0 { opts = append(opts, WithMaxRPS(cfg.MaxRPS)) } @@ -135,13 +126,13 @@ func Start(config *Config) (func(), error) { if cfg.Password != "" { passwordVal, err := ReadFromEnvOrConfig(cfg.Password) if err != nil { - return nil, err + return nil, nil, err } opts = append(opts, WithBasicAuth(cfg.Username, passwordVal)) } tlsConfig, err := configureBackendTLS(cfg) if err != nil { - return nil, err + return nil, nil, err } if tlsConfig != nil { log.Info("using custom TLS config for backend", "name", name) @@ -151,10 +142,27 @@ func Start(config *Config) (func(), error) { opts = append(opts, WithStrippedTrailingXFF()) } opts = append(opts, WithProxydIP(os.Getenv("PROXYD_IP"))) - back := NewBackend(name, rpcURL, wsURL, lim, rpcRequestSemaphore, opts...) + opts = append(opts, WithConsensusSkipPeerCountCheck(cfg.ConsensusSkipPeerCountCheck)) + opts = append(opts, WithConsensusForcedCandidate(cfg.ConsensusForcedCandidate)) + + receiptsTarget, err := ReadFromEnvOrConfig(cfg.ConsensusReceiptsTarget) + if err != nil { + return nil, nil, err + } + receiptsTarget, err = validateReceiptsTarget(receiptsTarget) + if err != nil { + return nil, nil, err + } + opts = append(opts, WithConsensusReceiptTarget(receiptsTarget)) + + back := NewBackend(name, rpcURL, wsURL, rpcRequestSemaphore, opts...) backendNames = append(backendNames, name) backendsByName[name] = back - log.Info("configured backend", "name", name, "rpc_url", rpcURL, "ws_url", wsURL) + log.Info("configured backend", + "name", name, + "backend_names", backendNames, + "rpc_url", rpcURL, + "ws_url", wsURL) } backendGroups := make(map[string]*BackendGroup) @@ -162,7 +170,7 @@ func Start(config *Config) (func(), error) { backends := make([]*Backend, 0) for _, bName := range bg.Backends { if backendsByName[bName] == nil { - return nil, fmt.Errorf("backend %s is not defined", bName) + return nil, nil, fmt.Errorf("backend %s is not defined", bName) } backends = append(backends, backendsByName[bName]) } @@ -177,17 +185,17 @@ func Start(config *Config) (func(), error) { if config.WSBackendGroup != "" { wsBackendGroup = backendGroups[config.WSBackendGroup] if wsBackendGroup == nil { - return nil, fmt.Errorf("ws backend group %s does not exist", config.WSBackendGroup) + return nil, nil, fmt.Errorf("ws backend group %s does not exist", config.WSBackendGroup) } } if wsBackendGroup == nil && config.Server.WSPort != 0 { - return nil, fmt.Errorf("a ws port was defined, but no ws group was defined") + return nil, nil, fmt.Errorf("a ws port was defined, but no ws group was defined") } for _, bg := range config.RPCMethodMappings { if backendGroups[bg] == nil { - return nil, fmt.Errorf("undefined backend group %s", bg) + return nil, nil, fmt.Errorf("undefined backend group %s", bg) } } @@ -198,48 +206,24 @@ func Start(config *Config) (func(), error) { for secret, alias := range config.Authentication { resolvedSecret, err := ReadFromEnvOrConfig(secret) if err != nil { - return nil, err + return nil, nil, err } resolvedAuth[resolvedSecret] = alias } } var ( - rpcCache RPCCache - blockNumLVC *EthLastValueCache - gasPriceLVC *EthLastValueCache + cache Cache + rpcCache RPCCache ) if config.Cache.Enabled { - var ( - cache Cache - blockNumFn GetLatestBlockNumFn - gasPriceFn GetLatestGasPriceFn - ) - - if config.Cache.BlockSyncRPCURL == "" { - return nil, fmt.Errorf("block sync node required for caching") - } - blockSyncRPCURL, err := ReadFromEnvOrConfig(config.Cache.BlockSyncRPCURL) - if err != nil { - return nil, err - } - if redisClient == nil { log.Warn("redis is not configured, using in-memory cache") cache = newMemoryCache() } else { - cache = newRedisCache(redisClient) - } - // Ideally, the BlocKSyncRPCURL should be the sequencer or a HA replica that's not far behind - ethClient, err := ethclient.Dial(blockSyncRPCURL) - if err != nil { - return nil, err + cache = newRedisCache(redisClient, config.Redis.Namespace) } - defer ethClient.Close() - - blockNumLVC, blockNumFn = makeGetLatestBlockNumFn(ethClient, cache) - gasPriceLVC, gasPriceFn = makeGetLatestGasPriceFn(ethClient, cache) - rpcCache = newRPCCache(newCacheWithCompression(cache), blockNumFn, gasPriceFn, config.Cache.NumBlockConfirmations) + rpcCache = newRPCCache(newCacheWithCompression(cache)) } srv, err := NewServer( @@ -251,6 +235,7 @@ func Start(config *Config) (func(), error) { resolvedAuth, secondsToDuration(config.Server.TimeoutSeconds), config.Server.MaxUpstreamBatchSize, + config.Server.EnableXServedByHeader, rpcCache, config.RateLimit, config.SenderRateLimit, @@ -260,7 +245,7 @@ func Start(config *Config) (func(), error) { redisClient, ) if err != nil { - return nil, fmt.Errorf("error creating server: %w", err) + return nil, nil, fmt.Errorf("error creating server: %w", err) } if config.Metrics.Enabled { @@ -300,25 +285,86 @@ func Start(config *Config) (func(), error) { log.Crit("error starting WS server", "err", err) } }() + } else { + log.Info("WS server not enabled (ws_port is set to 0)") + } + + for bgName, bg := range backendGroups { + bgcfg := config.BackendGroups[bgName] + if bgcfg.ConsensusAware { + log.Info("creating poller for consensus aware backend_group", "name", bgName) + + copts := make([]ConsensusOpt, 0) + + if bgcfg.ConsensusAsyncHandler == "noop" { + copts = append(copts, WithAsyncHandler(NewNoopAsyncHandler())) + } + if bgcfg.ConsensusBanPeriod > 0 { + copts = append(copts, WithBanPeriod(time.Duration(bgcfg.ConsensusBanPeriod))) + } + if bgcfg.ConsensusMaxUpdateThreshold > 0 { + copts = append(copts, WithMaxUpdateThreshold(time.Duration(bgcfg.ConsensusMaxUpdateThreshold))) + } + if bgcfg.ConsensusMaxBlockLag > 0 { + copts = append(copts, WithMaxBlockLag(bgcfg.ConsensusMaxBlockLag)) + } + if bgcfg.ConsensusMinPeerCount > 0 { + copts = append(copts, WithMinPeerCount(uint64(bgcfg.ConsensusMinPeerCount))) + } + if bgcfg.ConsensusMaxBlockRange > 0 { + copts = append(copts, WithMaxBlockRange(bgcfg.ConsensusMaxBlockRange)) + } + + var tracker ConsensusTracker + if bgcfg.ConsensusHA { + if redisClient == nil { + log.Crit("cant start - consensus high availability requires redis") + } + topts := make([]RedisConsensusTrackerOpt, 0) + if bgcfg.ConsensusHALockPeriod > 0 { + topts = append(topts, WithLockPeriod(time.Duration(bgcfg.ConsensusHALockPeriod))) + } + if bgcfg.ConsensusHAHeartbeatInterval > 0 { + topts = append(topts, WithLockPeriod(time.Duration(bgcfg.ConsensusHAHeartbeatInterval))) + } + tracker = NewRedisConsensusTracker(context.Background(), redisClient, bg, bg.Name, topts...) + copts = append(copts, WithTracker(tracker)) + } + + cp := NewConsensusPoller(bg, copts...) + bg.Consensus = cp + + if bgcfg.ConsensusHA { + tracker.(*RedisConsensusTracker).Init() + } + } } <-errTimer.C log.Info("started proxyd") - return func() { + shutdownFunc := func() { log.Info("shutting down proxyd") - if blockNumLVC != nil { - blockNumLVC.Stop() - } - if gasPriceLVC != nil { - gasPriceLVC.Stop() - } srv.Shutdown() - if err := lim.FlushBackendWSConns(backendNames); err != nil { - log.Error("error flushing backend ws conns", "err", err) - } log.Info("goodbye") - }, nil + } + + return srv, shutdownFunc, nil +} + +func validateReceiptsTarget(val string) (string, error) { + if val == "" { + val = ReceiptsTargetDebugGetRawReceipts + } + switch val { + case ReceiptsTargetDebugGetRawReceipts, + ReceiptsTargetAlchemyGetTransactionReceipts, + ReceiptsTargetEthGetTransactionReceipts, + ReceiptsTargetParityGetTransactionReceipts: + return val, nil + default: + return "", fmt.Errorf("invalid receipts target: %s", val) + } } func secondsToDuration(seconds int) time.Duration { @@ -345,39 +391,3 @@ func configureBackendTLS(cfg *BackendConfig) (*tls.Config, error) { return tlsConfig, nil } - -func makeUint64LastValueFn(client *ethclient.Client, cache Cache, key string, updater lvcUpdateFn) (*EthLastValueCache, func(context.Context) (uint64, error)) { - lvc := newLVC(client, cache, key, updater) - lvc.Start() - return lvc, func(ctx context.Context) (uint64, error) { - value, err := lvc.Read(ctx) - if err != nil { - return 0, err - } - if value == "" { - return 0, fmt.Errorf("%s is unavailable", key) - } - valueUint, err := strconv.ParseUint(value, 10, 64) - if err != nil { - return 0, err - } - return valueUint, nil - } -} - -func makeGetLatestBlockNumFn(client *ethclient.Client, cache Cache) (*EthLastValueCache, GetLatestBlockNumFn) { - return makeUint64LastValueFn(client, cache, "lvc:block_number", func(ctx context.Context, c *ethclient.Client) (string, error) { - blockNum, err := c.BlockNumber(ctx) - return strconv.FormatUint(blockNum, 10), err - }) -} - -func makeGetLatestGasPriceFn(client *ethclient.Client, cache Cache) (*EthLastValueCache, GetLatestGasPriceFn) { - return makeUint64LastValueFn(client, cache, "lvc:gas_price", func(ctx context.Context, c *ethclient.Client) (string, error) { - gasPrice, err := c.SuggestGasPrice(ctx) - if err != nil { - return "", err - } - return gasPrice.String(), nil - }) -} diff --git a/go/proxyd/reader.go b/go/proxyd/reader.go new file mode 100644 index 0000000000..b16301f1f0 --- /dev/null +++ b/go/proxyd/reader.go @@ -0,0 +1,32 @@ +package proxyd + +import ( + "errors" + "io" +) + +var ErrLimitReaderOverLimit = errors.New("over read limit") + +func LimitReader(r io.Reader, n int64) io.Reader { return &LimitedReader{r, n} } + +// A LimitedReader reads from R but limits the amount of +// data returned to just N bytes. Each call to Read +// updates N to reflect the new amount remaining. +// Unlike the standard library version, Read returns +// ErrLimitReaderOverLimit when N <= 0. +type LimitedReader struct { + R io.Reader // underlying reader + N int64 // max bytes remaining +} + +func (l *LimitedReader) Read(p []byte) (int, error) { + if l.N <= 0 { + return 0, ErrLimitReaderOverLimit + } + if int64(len(p)) > l.N { + p = p[0:l.N] + } + n, err := l.R.Read(p) + l.N -= int64(n) + return n, err +} diff --git a/go/proxyd/reader_test.go b/go/proxyd/reader_test.go new file mode 100644 index 0000000000..2ee23456ed --- /dev/null +++ b/go/proxyd/reader_test.go @@ -0,0 +1,43 @@ +package proxyd + +import ( + "github.com/stretchr/testify/require" + "io" + "strings" + "testing" +) + +func TestLimitReader(t *testing.T) { + data := "hellohellohellohello" + r := LimitReader(strings.NewReader(data), 3) + buf := make([]byte, 3) + + // Buffer reads OK + n, err := r.Read(buf) + require.NoError(t, err) + require.Equal(t, 3, n) + + // Buffer is over limit + n, err = r.Read(buf) + require.Equal(t, ErrLimitReaderOverLimit, err) + require.Equal(t, 0, n) + + // Buffer on initial read is over size + buf = make([]byte, 16) + r = LimitReader(strings.NewReader(data), 3) + n, err = r.Read(buf) + require.NoError(t, err) + require.Equal(t, 3, n) + + // test with read all where the limit is less than the data + r = LimitReader(strings.NewReader(data), 3) + out, err := io.ReadAll(r) + require.Equal(t, ErrLimitReaderOverLimit, err) + require.Equal(t, "hel", string(out)) + + // test with read all where the limit is more than the data + r = LimitReader(strings.NewReader(data), 21) + out, err = io.ReadAll(r) + require.NoError(t, err) + require.Equal(t, data, string(out)) +} diff --git a/go/proxyd/redis.go b/go/proxyd/redis.go index e32bff2432..bd15f527f9 100644 --- a/go/proxyd/redis.go +++ b/go/proxyd/redis.go @@ -4,7 +4,7 @@ import ( "context" "time" - "github.com/go-redis/redis/v8" + "github.com/redis/go-redis/v9" ) func NewRedisClient(url string) (*redis.Client, error) { diff --git a/go/proxyd/rewriter.go b/go/proxyd/rewriter.go new file mode 100644 index 0000000000..98b59ec1d7 --- /dev/null +++ b/go/proxyd/rewriter.go @@ -0,0 +1,247 @@ +package proxyd + +import ( + "encoding/json" + "errors" + + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/rpc" +) + +type RewriteContext struct { + latest hexutil.Uint64 + safe hexutil.Uint64 + finalized hexutil.Uint64 + maxBlockRange uint64 +} + +type RewriteResult uint8 + +const ( + // RewriteNone means request should be forwarded as-is + RewriteNone RewriteResult = iota + + // RewriteOverrideError means there was an error attempting to rewrite + RewriteOverrideError + + // RewriteOverrideRequest means the modified request should be forwarded to the backend + RewriteOverrideRequest + + // RewriteOverrideResponse means to skip calling the backend and serve the overridden response + RewriteOverrideResponse +) + +var ( + ErrRewriteBlockOutOfRange = errors.New("block is out of range") + ErrRewriteRangeTooLarge = errors.New("block range is too large") +) + +// RewriteTags modifies the request and the response based on block tags +func RewriteTags(rctx RewriteContext, req *RPCReq, res *RPCRes) (RewriteResult, error) { + rw, err := RewriteResponse(rctx, req, res) + if rw == RewriteOverrideResponse { + return rw, err + } + return RewriteRequest(rctx, req, res) +} + +// RewriteResponse modifies the response object to comply with the rewrite context +// after the method has been called at the backend +// RewriteResult informs the decision of the rewrite +func RewriteResponse(rctx RewriteContext, req *RPCReq, res *RPCRes) (RewriteResult, error) { + switch req.Method { + case "eth_blockNumber": + res.Result = rctx.latest + return RewriteOverrideResponse, nil + } + return RewriteNone, nil +} + +// RewriteRequest modifies the request object to comply with the rewrite context +// before the method has been called at the backend +// it returns false if nothing was changed +func RewriteRequest(rctx RewriteContext, req *RPCReq, res *RPCRes) (RewriteResult, error) { + switch req.Method { + case "eth_getLogs", + "eth_newFilter": + return rewriteRange(rctx, req, res, 0) + case "debug_getRawReceipts", "consensus_getReceipts": + return rewriteParam(rctx, req, res, 0, true) + case "eth_getBalance", + "eth_getCode", + "eth_getTransactionCount", + "eth_call": + return rewriteParam(rctx, req, res, 1, false) + case "eth_getStorageAt": + return rewriteParam(rctx, req, res, 2, false) + case "eth_getBlockTransactionCountByNumber", + "eth_getUncleCountByBlockNumber", + "eth_getBlockByNumber", + "eth_getTransactionByBlockNumberAndIndex", + "eth_getUncleByBlockNumberAndIndex": + return rewriteParam(rctx, req, res, 0, false) + } + return RewriteNone, nil +} + +func rewriteParam(rctx RewriteContext, req *RPCReq, res *RPCRes, pos int, required bool) (RewriteResult, error) { + var p []interface{} + err := json.Unmarshal(req.Params, &p) + if err != nil { + return RewriteOverrideError, err + } + + // we assume latest if the param is missing, + // and we don't rewrite if there is not enough params + if len(p) == pos && !required { + p = append(p, "latest") + } else if len(p) <= pos { + return RewriteNone, nil + } + + s, ok := p[pos].(string) + if !ok { + return RewriteOverrideError, errors.New("expected string") + } + val, rw, err := rewriteTag(rctx, s) + if err != nil { + return RewriteOverrideError, err + } + + if rw { + p[pos] = val + paramRaw, err := json.Marshal(p) + if err != nil { + return RewriteOverrideError, err + } + req.Params = paramRaw + return RewriteOverrideRequest, nil + } + return RewriteNone, nil +} + +func rewriteRange(rctx RewriteContext, req *RPCReq, res *RPCRes, pos int) (RewriteResult, error) { + var p []map[string]interface{} + err := json.Unmarshal(req.Params, &p) + if err != nil { + return RewriteOverrideError, err + } + + // if either fromBlock or toBlock is defined, default the other to "latest" if unset + _, hasFrom := p[pos]["fromBlock"] + _, hasTo := p[pos]["toBlock"] + if hasFrom && !hasTo { + p[pos]["toBlock"] = "latest" + } else if hasTo && !hasFrom { + p[pos]["fromBlock"] = "latest" + } + + modifiedFrom, err := rewriteTagMap(rctx, p[pos], "fromBlock") + if err != nil { + return RewriteOverrideError, err + } + + modifiedTo, err := rewriteTagMap(rctx, p[pos], "toBlock") + if err != nil { + return RewriteOverrideError, err + } + + if rctx.maxBlockRange > 0 && (hasFrom || hasTo) { + from, err := blockNumber(p[pos], "fromBlock", uint64(rctx.latest)) + if err != nil { + return RewriteOverrideError, err + } + to, err := blockNumber(p[pos], "toBlock", uint64(rctx.latest)) + if err != nil { + return RewriteOverrideError, err + } + if to-from > rctx.maxBlockRange { + return RewriteOverrideError, ErrRewriteRangeTooLarge + } + } + + // if any of the fields the request have been changed, re-marshal the params + if modifiedFrom || modifiedTo { + paramsRaw, err := json.Marshal(p) + req.Params = paramsRaw + if err != nil { + return RewriteOverrideError, err + } + return RewriteOverrideRequest, nil + } + + return RewriteNone, nil +} + +func blockNumber(m map[string]interface{}, key string, latest uint64) (uint64, error) { + current, ok := m[key].(string) + if !ok { + return 0, errors.New("expected string") + } + // the latest/safe/finalized tags are already replaced by rewriteTag + if current == "earliest" { + return 0, nil + } + if current == "pending" { + return latest + 1, nil + } + return hexutil.DecodeUint64(current) +} + +func rewriteTagMap(rctx RewriteContext, m map[string]interface{}, key string) (bool, error) { + if m[key] == nil || m[key] == "" { + return false, nil + } + + current, ok := m[key].(string) + if !ok { + return false, errors.New("expected string") + } + + val, rw, err := rewriteTag(rctx, current) + if err != nil { + return false, err + } + if rw { + m[key] = val + return true, nil + } + + return false, nil +} + +func rewriteTag(rctx RewriteContext, current string) (string, bool, error) { + jv, err := json.Marshal(current) + if err != nil { + return "", false, err + } + + var bnh rpc.BlockNumberOrHash + err = bnh.UnmarshalJSON(jv) + if err != nil { + return "", false, err + } + + // this is a hash, not a block + if bnh.BlockNumber == nil { + return current, false, nil + } + + switch *bnh.BlockNumber { + case rpc.PendingBlockNumber, + rpc.EarliestBlockNumber: + return current, false, nil + case rpc.FinalizedBlockNumber: + return rctx.finalized.String(), true, nil + case rpc.SafeBlockNumber: + return rctx.safe.String(), true, nil + case rpc.LatestBlockNumber: + return rctx.latest.String(), true, nil + default: + if bnh.BlockNumber.Int64() > int64(rctx.latest) { + return "", false, ErrRewriteBlockOutOfRange + } + } + + return current, false, nil +} diff --git a/go/proxyd/rewriter_test.go b/go/proxyd/rewriter_test.go new file mode 100644 index 0000000000..94bc5c962d --- /dev/null +++ b/go/proxyd/rewriter_test.go @@ -0,0 +1,624 @@ +package proxyd + +import ( + "encoding/json" + "strings" + "testing" + + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/stretchr/testify/require" +) + +type args struct { + rctx RewriteContext + req *RPCReq + res *RPCRes +} + +type rewriteTest struct { + name string + args args + expected RewriteResult + expectedErr error + check func(*testing.T, args) +} + +func TestRewriteRequest(t *testing.T) { + tests := []rewriteTest{ + /* range scoped */ + { + name: "eth_getLogs fromBlock latest", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getLogs", Params: mustMarshalJSON([]map[string]interface{}{{"fromBlock": "latest"}})}, + res: nil, + }, + expected: RewriteOverrideRequest, + check: func(t *testing.T, args args) { + var p []map[string]interface{} + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, hexutil.Uint64(100).String(), p[0]["fromBlock"]) + }, + }, + { + name: "eth_getLogs fromBlock within range", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getLogs", Params: mustMarshalJSON([]map[string]interface{}{{"fromBlock": hexutil.Uint64(55).String()}})}, + res: nil, + }, + expected: RewriteOverrideRequest, + check: func(t *testing.T, args args) { + var p []map[string]interface{} + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, hexutil.Uint64(55).String(), p[0]["fromBlock"]) + }, + }, + { + name: "eth_getLogs fromBlock out of range", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getLogs", Params: mustMarshalJSON([]map[string]interface{}{{"fromBlock": hexutil.Uint64(111).String()}})}, + res: nil, + }, + expected: RewriteOverrideError, + expectedErr: ErrRewriteBlockOutOfRange, + }, + { + name: "eth_getLogs toBlock latest", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getLogs", Params: mustMarshalJSON([]map[string]interface{}{{"toBlock": "latest"}})}, + res: nil, + }, + expected: RewriteOverrideRequest, + check: func(t *testing.T, args args) { + var p []map[string]interface{} + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, hexutil.Uint64(100).String(), p[0]["toBlock"]) + }, + }, + { + name: "eth_getLogs toBlock within range", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getLogs", Params: mustMarshalJSON([]map[string]interface{}{{"toBlock": hexutil.Uint64(55).String()}})}, + res: nil, + }, + expected: RewriteOverrideRequest, + check: func(t *testing.T, args args) { + var p []map[string]interface{} + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, hexutil.Uint64(55).String(), p[0]["toBlock"]) + }, + }, + { + name: "eth_getLogs toBlock out of range", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getLogs", Params: mustMarshalJSON([]map[string]interface{}{{"toBlock": hexutil.Uint64(111).String()}})}, + res: nil, + }, + expected: RewriteOverrideError, + expectedErr: ErrRewriteBlockOutOfRange, + }, + { + name: "eth_getLogs fromBlock, toBlock latest", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getLogs", Params: mustMarshalJSON([]map[string]interface{}{{"fromBlock": "latest", "toBlock": "latest"}})}, + res: nil, + }, + expected: RewriteOverrideRequest, + check: func(t *testing.T, args args) { + var p []map[string]interface{} + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, hexutil.Uint64(100).String(), p[0]["fromBlock"]) + require.Equal(t, hexutil.Uint64(100).String(), p[0]["toBlock"]) + }, + }, + { + name: "eth_getLogs fromBlock, toBlock within range", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getLogs", Params: mustMarshalJSON([]map[string]interface{}{{"fromBlock": hexutil.Uint64(55).String(), "toBlock": hexutil.Uint64(77).String()}})}, + res: nil, + }, + expected: RewriteNone, + check: func(t *testing.T, args args) { + var p []map[string]interface{} + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, hexutil.Uint64(55).String(), p[0]["fromBlock"]) + require.Equal(t, hexutil.Uint64(77).String(), p[0]["toBlock"]) + }, + }, + { + name: "eth_getLogs fromBlock, toBlock out of range", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getLogs", Params: mustMarshalJSON([]map[string]interface{}{{"fromBlock": hexutil.Uint64(111).String(), "toBlock": hexutil.Uint64(222).String()}})}, + res: nil, + }, + expected: RewriteOverrideError, + expectedErr: ErrRewriteBlockOutOfRange, + }, + { + name: "eth_getLogs fromBlock -> toBlock above max range", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100), maxBlockRange: 30}, + req: &RPCReq{Method: "eth_getLogs", Params: mustMarshalJSON([]map[string]interface{}{{"fromBlock": hexutil.Uint64(20).String(), "toBlock": hexutil.Uint64(80).String()}})}, + res: nil, + }, + expected: RewriteOverrideError, + expectedErr: ErrRewriteRangeTooLarge, + }, + { + name: "eth_getLogs earliest -> latest above max range", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100), maxBlockRange: 30}, + req: &RPCReq{Method: "eth_getLogs", Params: mustMarshalJSON([]map[string]interface{}{{"fromBlock": "earliest", "toBlock": "latest"}})}, + res: nil, + }, + expected: RewriteOverrideError, + expectedErr: ErrRewriteRangeTooLarge, + }, + { + name: "eth_getLogs earliest -> pending above max range", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100), maxBlockRange: 30}, + req: &RPCReq{Method: "eth_getLogs", Params: mustMarshalJSON([]map[string]interface{}{{"fromBlock": "earliest", "toBlock": "pending"}})}, + res: nil, + }, + expected: RewriteOverrideError, + expectedErr: ErrRewriteRangeTooLarge, + }, + { + name: "eth_getLogs earliest -> default above max range", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100), maxBlockRange: 30}, + req: &RPCReq{Method: "eth_getLogs", Params: mustMarshalJSON([]map[string]interface{}{{"fromBlock": "earliest"}})}, + res: nil, + }, + expected: RewriteOverrideError, + expectedErr: ErrRewriteRangeTooLarge, + }, + { + name: "eth_getLogs default -> latest within range", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100), maxBlockRange: 30}, + req: &RPCReq{Method: "eth_getLogs", Params: mustMarshalJSON([]map[string]interface{}{{"toBlock": "latest"}})}, + res: nil, + }, + expected: RewriteOverrideRequest, + check: func(t *testing.T, args args) { + var p []map[string]interface{} + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, hexutil.Uint64(100).String(), p[0]["fromBlock"]) + require.Equal(t, hexutil.Uint64(100).String(), p[0]["toBlock"]) + }, + }, + /* required parameter at pos 0 */ + { + name: "debug_getRawReceipts latest", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "debug_getRawReceipts", Params: mustMarshalJSON([]string{"latest"})}, + res: nil, + }, + expected: RewriteOverrideRequest, + check: func(t *testing.T, args args) { + var p []string + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, 1, len(p)) + require.Equal(t, hexutil.Uint64(100).String(), p[0]) + }, + }, + { + name: "debug_getRawReceipts within range", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "debug_getRawReceipts", Params: mustMarshalJSON([]string{hexutil.Uint64(55).String()})}, + res: nil, + }, + expected: RewriteNone, + check: func(t *testing.T, args args) { + var p []string + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, 1, len(p)) + require.Equal(t, hexutil.Uint64(55).String(), p[0]) + }, + }, + { + name: "debug_getRawReceipts out of range", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "debug_getRawReceipts", Params: mustMarshalJSON([]string{hexutil.Uint64(111).String()})}, + res: nil, + }, + expected: RewriteOverrideError, + expectedErr: ErrRewriteBlockOutOfRange, + }, + { + name: "debug_getRawReceipts missing parameter", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "debug_getRawReceipts", Params: mustMarshalJSON([]string{})}, + res: nil, + }, + expected: RewriteNone, + }, + { + name: "debug_getRawReceipts with block hash", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "debug_getRawReceipts", Params: mustMarshalJSON([]string{"0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b"})}, + res: nil, + }, + expected: RewriteNone, + check: func(t *testing.T, args args) { + var p []string + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, 1, len(p)) + require.Equal(t, "0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", p[0]) + }, + }, + /* default block parameter */ + { + name: "eth_getCode omit block, should add", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getCode", Params: mustMarshalJSON([]string{"0x123"})}, + res: nil, + }, + expected: RewriteOverrideRequest, + check: func(t *testing.T, args args) { + var p []string + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, 2, len(p)) + require.Equal(t, "0x123", p[0]) + require.Equal(t, hexutil.Uint64(100).String(), p[1]) + }, + }, + { + name: "eth_getCode not enough params, should do nothing", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getCode", Params: mustMarshalJSON([]string{})}, + res: nil, + }, + expected: RewriteNone, + check: func(t *testing.T, args args) { + var p []string + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, 0, len(p)) + }, + }, + { + name: "eth_getCode latest", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getCode", Params: mustMarshalJSON([]string{"0x123", "latest"})}, + res: nil, + }, + expected: RewriteOverrideRequest, + check: func(t *testing.T, args args) { + var p []string + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, 2, len(p)) + require.Equal(t, "0x123", p[0]) + require.Equal(t, hexutil.Uint64(100).String(), p[1]) + }, + }, + { + name: "eth_getCode within range", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getCode", Params: mustMarshalJSON([]string{"0x123", hexutil.Uint64(55).String()})}, + res: nil, + }, + expected: RewriteNone, + check: func(t *testing.T, args args) { + var p []string + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, 2, len(p)) + require.Equal(t, "0x123", p[0]) + require.Equal(t, hexutil.Uint64(55).String(), p[1]) + }, + }, + { + name: "eth_getCode out of range", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getCode", Params: mustMarshalJSON([]string{"0x123", hexutil.Uint64(111).String()})}, + res: nil, + }, + expected: RewriteOverrideError, + expectedErr: ErrRewriteBlockOutOfRange, + }, + /* default block parameter, at position 2 */ + { + name: "eth_getStorageAt omit block, should add", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getStorageAt", Params: mustMarshalJSON([]string{"0x123", "5"})}, + res: nil, + }, + expected: RewriteOverrideRequest, + check: func(t *testing.T, args args) { + var p []string + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, 3, len(p)) + require.Equal(t, "0x123", p[0]) + require.Equal(t, "5", p[1]) + require.Equal(t, hexutil.Uint64(100).String(), p[2]) + }, + }, + { + name: "eth_getStorageAt latest", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getStorageAt", Params: mustMarshalJSON([]string{"0x123", "5", "latest"})}, + res: nil, + }, + expected: RewriteOverrideRequest, + check: func(t *testing.T, args args) { + var p []string + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, 3, len(p)) + require.Equal(t, "0x123", p[0]) + require.Equal(t, "5", p[1]) + require.Equal(t, hexutil.Uint64(100).String(), p[2]) + }, + }, + { + name: "eth_getStorageAt within range", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getStorageAt", Params: mustMarshalJSON([]string{"0x123", "5", hexutil.Uint64(55).String()})}, + res: nil, + }, + expected: RewriteNone, + check: func(t *testing.T, args args) { + var p []string + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, 3, len(p)) + require.Equal(t, "0x123", p[0]) + require.Equal(t, "5", p[1]) + require.Equal(t, hexutil.Uint64(55).String(), p[2]) + }, + }, + { + name: "eth_getStorageAt out of range", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getStorageAt", Params: mustMarshalJSON([]string{"0x123", "5", hexutil.Uint64(111).String()})}, + res: nil, + }, + expected: RewriteOverrideError, + expectedErr: ErrRewriteBlockOutOfRange, + }, + /* default block parameter, at position 0 */ + { + name: "eth_getBlockByNumber omit block, should add", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getBlockByNumber", Params: mustMarshalJSON([]string{})}, + res: nil, + }, + expected: RewriteOverrideRequest, + check: func(t *testing.T, args args) { + var p []string + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, 1, len(p)) + require.Equal(t, hexutil.Uint64(100).String(), p[0]) + }, + }, + { + name: "eth_getBlockByNumber latest", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getBlockByNumber", Params: mustMarshalJSON([]string{"latest"})}, + res: nil, + }, + expected: RewriteOverrideRequest, + check: func(t *testing.T, args args) { + var p []string + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, 1, len(p)) + require.Equal(t, hexutil.Uint64(100).String(), p[0]) + }, + }, + { + name: "eth_getBlockByNumber finalized", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100), finalized: hexutil.Uint64(55)}, + req: &RPCReq{Method: "eth_getBlockByNumber", Params: mustMarshalJSON([]string{"finalized"})}, + res: nil, + }, + expected: RewriteOverrideRequest, + check: func(t *testing.T, args args) { + var p []string + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, 1, len(p)) + require.Equal(t, hexutil.Uint64(55).String(), p[0]) + }, + }, + { + name: "eth_getBlockByNumber safe", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100), safe: hexutil.Uint64(50)}, + req: &RPCReq{Method: "eth_getBlockByNumber", Params: mustMarshalJSON([]string{"safe"})}, + res: nil, + }, + expected: RewriteOverrideRequest, + check: func(t *testing.T, args args) { + var p []string + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, 1, len(p)) + require.Equal(t, hexutil.Uint64(50).String(), p[0]) + }, + }, + { + name: "eth_getBlockByNumber within range", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getBlockByNumber", Params: mustMarshalJSON([]string{hexutil.Uint64(55).String()})}, + res: nil, + }, + expected: RewriteNone, + check: func(t *testing.T, args args) { + var p []string + err := json.Unmarshal(args.req.Params, &p) + require.Nil(t, err) + require.Equal(t, 1, len(p)) + require.Equal(t, hexutil.Uint64(55).String(), p[0]) + }, + }, + { + name: "eth_getBlockByNumber out of range", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getBlockByNumber", Params: mustMarshalJSON([]string{hexutil.Uint64(111).String()})}, + res: nil, + }, + expected: RewriteOverrideError, + expectedErr: ErrRewriteBlockOutOfRange, + }, + { + name: "eth_getStorageAt using rpc.BlockNumberOrHash", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_getStorageAt", Params: mustMarshalJSON([]string{ + "0xae851f927ee40de99aabb7461c00f9622ab91d60", + "0x65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08", + "0x1c4840bcb3de3ac403c0075b46c2c47d4396c5b624b6e1b2874ec04e8879b483"})}, + res: nil, + }, + expected: RewriteNone, + }, + } + + // generalize tests for other methods with same interface and behavior + tests = generalize(tests, "eth_getLogs", "eth_newFilter") + tests = generalize(tests, "eth_getCode", "eth_getBalance") + tests = generalize(tests, "eth_getCode", "eth_getTransactionCount") + tests = generalize(tests, "eth_getCode", "eth_call") + tests = generalize(tests, "eth_getBlockByNumber", "eth_getBlockTransactionCountByNumber") + tests = generalize(tests, "eth_getBlockByNumber", "eth_getUncleCountByBlockNumber") + tests = generalize(tests, "eth_getBlockByNumber", "eth_getTransactionByBlockNumberAndIndex") + tests = generalize(tests, "eth_getBlockByNumber", "eth_getUncleByBlockNumberAndIndex") + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result, err := RewriteRequest(tt.args.rctx, tt.args.req, tt.args.res) + if result != RewriteOverrideError { + require.Nil(t, err) + require.Equal(t, tt.expected, result) + } else { + require.Equal(t, tt.expectedErr, err) + } + if tt.check != nil { + tt.check(t, tt.args) + } + }) + } +} + +func generalize(tests []rewriteTest, baseMethod string, generalizedMethod string) []rewriteTest { + newCases := make([]rewriteTest, 0) + for _, t := range tests { + if t.args.req.Method == baseMethod { + newName := strings.Replace(t.name, baseMethod, generalizedMethod, -1) + var req *RPCReq + var res *RPCRes + + if t.args.req != nil { + req = &RPCReq{ + JSONRPC: t.args.req.JSONRPC, + Method: generalizedMethod, + Params: t.args.req.Params, + ID: t.args.req.ID, + } + } + + if t.args.res != nil { + res = &RPCRes{ + JSONRPC: t.args.res.JSONRPC, + Result: t.args.res.Result, + Error: t.args.res.Error, + ID: t.args.res.ID, + } + } + newCases = append(newCases, rewriteTest{ + name: newName, + args: args{ + rctx: t.args.rctx, + req: req, + res: res, + }, + expected: t.expected, + expectedErr: t.expectedErr, + check: t.check, + }) + } + } + return append(tests, newCases...) +} + +func TestRewriteResponse(t *testing.T) { + type args struct { + rctx RewriteContext + req *RPCReq + res *RPCRes + } + tests := []struct { + name string + args args + expected RewriteResult + check func(*testing.T, args) + }{ + { + name: "eth_blockNumber latest", + args: args{ + rctx: RewriteContext{latest: hexutil.Uint64(100)}, + req: &RPCReq{Method: "eth_blockNumber"}, + res: &RPCRes{Result: hexutil.Uint64(200)}, + }, + expected: RewriteOverrideResponse, + check: func(t *testing.T, args args) { + require.Equal(t, args.res.Result, hexutil.Uint64(100)) + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result, err := RewriteResponse(tt.args.rctx, tt.args.req, tt.args.res) + require.Nil(t, err) + require.Equal(t, tt.expected, result) + if tt.check != nil { + tt.check(t, tt.args) + } + }) + } +} diff --git a/go/proxyd/server.go b/go/proxyd/server.go index 3e2e647578..2b7a1bd966 100644 --- a/go/proxyd/server.go +++ b/go/proxyd/server.go @@ -2,11 +2,14 @@ package proxyd import ( "context" + "crypto/rand" + "encoding/hex" "encoding/json" "errors" "fmt" "io" "math" + "math/big" "net/http" "regexp" "strconv" @@ -15,31 +18,38 @@ import ( "time" "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/txpool" "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/log" - "github.com/go-redis/redis/v8" "github.com/gorilla/mux" "github.com/gorilla/websocket" "github.com/prometheus/client_golang/prometheus" + "github.com/redis/go-redis/v9" "github.com/rs/cors" + "github.com/syndtr/goleveldb/leveldb/opt" ) const ( - ContextKeyAuth = "authorization" - ContextKeyReqID = "req_id" - ContextKeyXForwardedFor = "x_forwarded_for" - MaxBatchRPCCallsHardLimit = 100 - cacheStatusHdr = "X-Proxyd-Cache-Status" - defaultServerTimeout = time.Second * 10 - maxRequestBodyLogLen = 2000 - defaultMaxUpstreamBatchSize = 10 + ContextKeyAuth = "authorization" + ContextKeyReqID = "req_id" + ContextKeyXForwardedFor = "x_forwarded_for" + DefaultMaxBatchRPCCallsLimit = 100 + MaxBatchRPCCallsHardLimit = 1000 + cacheStatusHdr = "X-Proxyd-Cache-Status" + defaultRPCTimeout = 10 * time.Second + defaultBodySizeLimit = 256 * opt.KiB + defaultWSHandshakeTimeout = 10 * time.Second + defaultWSReadTimeout = 2 * time.Minute + defaultWSWriteTimeout = 10 * time.Second + maxRequestBodyLogLen = 2000 + defaultMaxUpstreamBatchSize = 10 ) var emptyArrayResponse = json.RawMessage("[]") type Server struct { - backendGroups map[string]*BackendGroup + BackendGroups map[string]*BackendGroup wsBackendGroup *BackendGroup wsMethodWhitelist *StringSet rpcMethodMappings map[string]string @@ -50,10 +60,12 @@ type Server struct { timeout time.Duration maxUpstreamBatchSize int maxBatchSize int + enableServedByHeader bool upgrader *websocket.Upgrader mainLim FrontendRateLimiter overrideLims map[string]FrontendRateLimiter senderLim FrontendRateLimiter + allowedChainIds []*big.Int limExemptOrigins []*regexp.Regexp limExemptUserAgents []*regexp.Regexp globallyLimitedMethods map[string]bool @@ -65,12 +77,6 @@ type Server struct { type limiterFunc func(method string) bool -type WSServerLimiter struct { - isLimited limiterFunc - isRateLimitSender func(ctx context.Context, req *RPCReq) error - maxBodySize int64 -} - func NewServer( backendGroups map[string]*BackendGroup, wsBackendGroup *BackendGroup, @@ -80,6 +86,7 @@ func NewServer( authenticatedPaths map[string]string, timeout time.Duration, maxUpstreamBatchSize int, + enableServedByHeader bool, cache RPCCache, rateLimitConfig RateLimitConfig, senderRateLimitConfig SenderRateLimitConfig, @@ -93,18 +100,22 @@ func NewServer( } if maxBodySize == 0 { - maxBodySize = math.MaxInt64 + maxBodySize = defaultBodySizeLimit } if timeout == 0 { - timeout = defaultServerTimeout + timeout = defaultRPCTimeout } if maxUpstreamBatchSize == 0 { maxUpstreamBatchSize = defaultMaxUpstreamBatchSize } - if maxBatchSize == 0 || maxBatchSize > MaxBatchRPCCallsHardLimit { + if maxBatchSize == 0 { + maxBatchSize = DefaultMaxBatchRPCCallsLimit + } + + if maxBatchSize > MaxBatchRPCCallsHardLimit { maxBatchSize = MaxBatchRPCCallsHardLimit } @@ -158,7 +169,7 @@ func NewServer( } return &Server{ - backendGroups: backendGroups, + BackendGroups: backendGroups, wsBackendGroup: wsBackendGroup, wsMethodWhitelist: wsMethodWhitelist, rpcMethodMappings: rpcMethodMappings, @@ -166,17 +177,19 @@ func NewServer( authenticatedPaths: authenticatedPaths, timeout: timeout, maxUpstreamBatchSize: maxUpstreamBatchSize, + enableServedByHeader: enableServedByHeader, cache: cache, enableRequestLog: enableRequestLog, maxRequestBodyLogLen: maxRequestBodyLogLen, maxBatchSize: maxBatchSize, upgrader: &websocket.Upgrader{ - HandshakeTimeout: 5 * time.Second, + HandshakeTimeout: defaultWSHandshakeTimeout, }, mainLim: mainLim, overrideLims: overrideLims, globallyLimitedMethods: globalMethodLims, senderLim: senderLim, + allowedChainIds: senderRateLimitConfig.AllowedChainIds, limExemptOrigins: limExemptOrigins, limExemptUserAgents: limExemptUserAgents, }, nil @@ -228,6 +241,9 @@ func (s *Server) Shutdown() { if s.wsServer != nil { _ = s.wsServer.Shutdown(context.Background()) } + for _, bg := range s.BackendGroups { + bg.Shutdown() + } } func (s *Server) HandleHealthz(w http.ResponseWriter, r *http.Request) { @@ -303,7 +319,13 @@ func (s *Server) HandleRPC(w http.ResponseWriter, r *http.Request) { "remote_ip", xff, ) - body, err := io.ReadAll(io.LimitReader(r.Body, s.maxBodySize)) + body, err := io.ReadAll(LimitReader(r.Body, s.maxBodySize)) + if errors.Is(err, ErrLimitReaderOverLimit) { + log.Error("request body too large", "req_id", GetReqID(ctx)) + RecordRPCError(ctx, BackendProxyd, MethodUnknown, ErrRequestBodyTooLarge) + writeRPCError(ctx, w, nil, ErrRequestBodyTooLarge) + return + } if err != nil { log.Error("error reading request body", "err", err) writeRPCError(ctx, w, nil, ErrInternal) @@ -341,32 +363,47 @@ func (s *Server) HandleRPC(w http.ResponseWriter, r *http.Request) { return } - batchRes, batchContainsCached, err := s.handleBatchRPC(ctx, reqs, isLimited, true) + batchRes, batchContainsCached, servedBy, err := s.handleBatchRPC(ctx, reqs, isLimited, true) if err == context.DeadlineExceeded { writeRPCError(ctx, w, nil, ErrGatewayTimeout) return } + if errors.Is(err, ErrConsensusGetReceiptsCantBeBatched) || + errors.Is(err, ErrConsensusGetReceiptsInvalidTarget) { + writeRPCError(ctx, w, nil, ErrInvalidRequest(err.Error())) + return + } if err != nil { writeRPCError(ctx, w, nil, ErrInternal) return } - + if s.enableServedByHeader { + w.Header().Set("x-served-by", servedBy) + } setCacheHeader(w, batchContainsCached) writeBatchRPCRes(ctx, w, batchRes) return } rawBody := json.RawMessage(body) - backendRes, cached, err := s.handleBatchRPC(ctx, []json.RawMessage{rawBody}, isLimited, false) + backendRes, cached, servedBy, err := s.handleBatchRPC(ctx, []json.RawMessage{rawBody}, isLimited, false) if err != nil { + if errors.Is(err, ErrConsensusGetReceiptsCantBeBatched) || + errors.Is(err, ErrConsensusGetReceiptsInvalidTarget) { + writeRPCError(ctx, w, nil, ErrInvalidRequest(err.Error())) + return + } writeRPCError(ctx, w, nil, ErrInternal) return } + if s.enableServedByHeader { + w.Header().Set("x-served-by", servedBy) + } setCacheHeader(w, cached) writeRPCRes(ctx, w, backendRes[0]) } -func (s *Server) handleBatchRPC(ctx context.Context, reqs []json.RawMessage, isLimited limiterFunc, isBatch bool) ([]*RPCRes, bool, error) { +func (s *Server) handleBatchRPC(ctx context.Context, reqs []json.RawMessage, isLimited limiterFunc, isBatch bool) ([]*RPCRes, bool, string, error) { // A request set is transformed into groups of batches. // Each batch group maps to a forwarded JSON-RPC batch request (subject to maxUpstreamBatchSize constraints) // A groupID is used to decouple Requests that have duplicate ID so they're not part of the same batch that's @@ -452,6 +489,7 @@ func (s *Server) handleBatchRPC(ctx context.Context, reqs []json.RawMessage, isL batches[batchGroup] = append(batches[batchGroup], batchElem{parsedReq, i}) } + servedBy := make(map[string]bool, 0) var cached bool for group, batch := range batches { var cacheMisses []batchElem @@ -476,14 +514,19 @@ func (s *Server) handleBatchRPC(ctx context.Context, reqs []json.RawMessage, isL "batch_index", i, ) batchRPCShortCircuitsTotal.Inc() - return nil, false, context.DeadlineExceeded + return nil, false, "", context.DeadlineExceeded } start := i * s.maxUpstreamBatchSize end := int(math.Min(float64(start+s.maxUpstreamBatchSize), float64(len(cacheMisses)))) elems := cacheMisses[start:end] - res, err := s.backendGroups[group.backendGroup].Forward(ctx, createBatchRequest(elems), isBatch) + res, sb, err := s.BackendGroups[group.backendGroup].Forward(ctx, createBatchRequest(elems), isBatch) + servedBy[sb] = true if err != nil { + if errors.Is(err, ErrConsensusGetReceiptsCantBeBatched) || + errors.Is(err, ErrConsensusGetReceiptsInvalidTarget) { + return nil, false, "", err + } log.Error( "error forwarding RPC batch", "batch_size", len(elems), @@ -514,7 +557,15 @@ func (s *Server) handleBatchRPC(ctx context.Context, reqs []json.RawMessage, isL } } - return responses, cached, nil + servedByString := "" + for sb, _ := range servedBy { + if servedByString != "" { + servedByString += ", " + } + servedByString += sb + } + + return responses, cached, servedByString, nil } func (s *Server) HandleWS(w http.ResponseWriter, r *http.Request) { @@ -530,51 +581,7 @@ func (s *Server) HandleWS(w http.ResponseWriter, r *http.Request) { log.Error("error upgrading client conn", "auth", GetAuthCtx(ctx), "req_id", GetReqID(ctx), "err", err) return } - - origin := r.Header.Get("Origin") - userAgent := r.Header.Get("User-Agent") - // Use XFF in context since it will automatically be replaced by the remote IP - xff := stripXFF(GetXForwardedFor(ctx)) - isUnlimitedOrigin := s.isUnlimitedOrigin(origin) - isUnlimitedUserAgent := s.isUnlimitedUserAgent(userAgent) - - if xff == "" { - writeRPCError(ctx, w, nil, ErrInvalidRequest("request does not include a remote IP")) - return - } - - isLimited := func(method string) bool { - isGloballyLimitedMethod := s.isGlobalLimit(method) - if !isGloballyLimitedMethod && (isUnlimitedOrigin || isUnlimitedUserAgent) { - return false - } - - var lim FrontendRateLimiter - if method == "" { - lim = s.mainLim - } else { - lim = s.overrideLims[method] - } - - if lim == nil { - return false - } - - ok, err := lim.Take(context.Background(), xff) - if err != nil { - log.Warn("error taking rate limit", "err", err) - return true - } - return !ok - } - - isRateLimitSender := func(ctx context.Context, req *RPCReq) error { - if s.senderLim != nil { - return s.rateLimitSender(ctx, req) - } else { - return nil - } - } + clientConn.SetReadLimit(s.maxBodySize) proxier, err := s.wsBackendGroup.ProxyWS(ctx, clientConn, s.wsMethodWhitelist) if err != nil { @@ -588,9 +595,8 @@ func (s *Server) HandleWS(w http.ResponseWriter, r *http.Request) { activeClientWsConnsGauge.WithLabelValues(GetAuthCtx(ctx)).Inc() go func() { - proxyWSServerLimiter := WSServerLimiter{isLimited: isLimited, isRateLimitSender: isRateLimitSender, maxBodySize: s.maxBodySize} // Below call blocks so run it in a goroutine. - if err := proxier.Proxy(ctx, &proxyWSServerLimiter); err != nil { + if err := proxier.Proxy(ctx); err != nil { log.Error("error proxying websocket", "auth", GetAuthCtx(ctx), "req_id", GetReqID(ctx), "err", err) } activeClientWsConnsGauge.WithLabelValues(GetAuthCtx(ctx)).Dec() @@ -611,16 +617,7 @@ func (s *Server) populateContext(w http.ResponseWriter, r *http.Request) context } ctx := context.WithValue(r.Context(), ContextKeyXForwardedFor, xff) // nolint:staticcheck - if s.authenticatedPaths == nil { - // handle the edge case where auth is disabled - // but someone sends in an auth key anyway - if authorization != "" { - log.Info("blocked authenticated request against unauthenticated proxy") - httpResponseCodesTotal.WithLabelValues("404").Inc() - w.WriteHeader(404) - return nil - } - } else { + if len(s.authenticatedPaths) > 0 { if authorization == "" || s.authenticatedPaths[authorization] == "" { log.Info("blocked unauthorized request", "authorization", authorization) httpResponseCodesTotal.WithLabelValues("401").Inc() @@ -628,7 +625,7 @@ func (s *Server) populateContext(w http.ResponseWriter, r *http.Request) context return nil } - ctx = context.WithValue(r.Context(), ContextKeyAuth, s.authenticatedPaths[authorization]) // nolint:staticcheck + ctx = context.WithValue(ctx, ContextKeyAuth, s.authenticatedPaths[authorization]) // nolint:staticcheck } return context.WithValue( @@ -638,6 +635,14 @@ func (s *Server) populateContext(w http.ResponseWriter, r *http.Request) context ) } +func randStr(l int) string { + b := make([]byte, l) + if _, err := rand.Read(b); err != nil { + panic(err) + } + return hex.EncodeToString(b) +} + func (s *Server) isUnlimitedOrigin(origin string) bool { for _, pat := range s.limExemptOrigins { if pat.MatchString(origin) { @@ -688,27 +693,45 @@ func (s *Server) rateLimitSender(ctx context.Context, req *RPCReq) error { return ErrInvalidParams(err.Error()) } + // Check if the transaction is for the expected chain, + // otherwise reject before rate limiting to avoid replay attacks. + if !s.isAllowedChainId(tx.ChainId()) { + log.Debug("chain id is not allowed", "req_id", GetReqID(ctx)) + return txpool.ErrInvalidSender + } + // Convert the transaction into a Message object so that we can get the // sender. This method performs an ecrecover, which can be expensive. - msg, err := tx.AsMessage(types.LatestSignerForChainID(tx.ChainId()), nil) + msg, err := core.TransactionToMessage(tx, types.LatestSignerForChainID(tx.ChainId()), nil) if err != nil { log.Debug("could not get message from transaction", "err", err, "req_id", GetReqID(ctx)) return ErrInvalidParams(err.Error()) } - - ok, err := s.senderLim.Take(ctx, fmt.Sprintf("%s:%d", msg.From().Hex(), tx.Nonce())) + ok, err := s.senderLim.Take(ctx, fmt.Sprintf("%s:%d", msg.From.Hex(), tx.Nonce())) if err != nil { log.Error("error taking from sender limiter", "err", err, "req_id", GetReqID(ctx)) return ErrInternal } if !ok { - log.Debug("sender rate limit exceeded", "sender", msg.From(), "req_id", GetReqID(ctx)) + log.Debug("sender rate limit exceeded", "sender", msg.From.Hex(), "req_id", GetReqID(ctx)) return ErrOverSenderRateLimit } return nil } +func (s *Server) isAllowedChainId(chainId *big.Int) bool { + if s.allowedChainIds == nil || len(s.allowedChainIds) == 0 { + return true + } + for _, id := range s.allowedChainIds { + if chainId.Cmp(id) == 0 { + return true + } + } + return false +} + func setCacheHeader(w http.ResponseWriter, cached bool) { if cached { w.Header().Set(cacheStatusHdr, "HIT") diff --git a/go/proxyd/tools/mockserver/handler/handler.go b/go/proxyd/tools/mockserver/handler/handler.go new file mode 100644 index 0000000000..0f9bfcad63 --- /dev/null +++ b/go/proxyd/tools/mockserver/handler/handler.go @@ -0,0 +1,135 @@ +package handler + +import ( + "encoding/json" + "fmt" + "io" + "net/http" + "os" + "strings" + + "github.com/ethereum-optimism/optimism/proxyd" + + "github.com/gorilla/mux" + "github.com/pkg/errors" + "gopkg.in/yaml.v3" +) + +type MethodTemplate struct { + Method string `yaml:"method"` + Block string `yaml:"block"` + Response string `yaml:"response"` +} + +type MockedHandler struct { + Overrides []*MethodTemplate + Autoload bool + AutoloadFile string +} + +func (mh *MockedHandler) Serve(port int) error { + r := mux.NewRouter() + r.HandleFunc("/", mh.Handler) + http.Handle("/", r) + fmt.Printf("starting server up on :%d serving MockedResponsesFile %s\n", port, mh.AutoloadFile) + err := http.ListenAndServe(fmt.Sprintf(":%d", port), nil) + + if errors.Is(err, http.ErrServerClosed) { + fmt.Printf("server closed\n") + } else if err != nil { + fmt.Printf("error starting server: %s\n", err) + return err + } + return nil +} + +func (mh *MockedHandler) Handler(w http.ResponseWriter, req *http.Request) { + body, err := io.ReadAll(req.Body) + if err != nil { + fmt.Printf("error reading request: %v\n", err) + } + + var template []*MethodTemplate + if mh.Autoload { + template = append(template, mh.LoadFromFile(mh.AutoloadFile)...) + } + if mh.Overrides != nil { + template = append(template, mh.Overrides...) + } + + batched := proxyd.IsBatch(body) + var requests []map[string]interface{} + if batched { + err = json.Unmarshal(body, &requests) + if err != nil { + fmt.Printf("error reading request: %v\n", err) + } + } else { + var j map[string]interface{} + err = json.Unmarshal(body, &j) + if err != nil { + fmt.Printf("error reading request: %v\n", err) + } + requests = append(requests, j) + } + + var responses []string + for _, r := range requests { + method := r["method"] + block := "" + if method == "eth_getBlockByNumber" || method == "debug_getRawReceipts" { + block = (r["params"].([]interface{})[0]).(string) + } + + var selectedResponse string + for _, r := range template { + if r.Method == method && r.Block == block { + selectedResponse = r.Response + } + } + if selectedResponse != "" { + var rpcRes proxyd.RPCRes + err = json.Unmarshal([]byte(selectedResponse), &rpcRes) + if err != nil { + panic(err) + } + idJson, _ := json.Marshal(r["id"]) + rpcRes.ID = idJson + res, _ := json.Marshal(rpcRes) + responses = append(responses, string(res)) + } + } + + resBody := "" + if batched { + resBody = "[" + strings.Join(responses, ",") + "]" + } else if len(responses) > 0 { + resBody = responses[0] + } + + _, err = fmt.Fprint(w, resBody) + if err != nil { + fmt.Printf("error writing response: %v\n", err) + } +} + +func (mh *MockedHandler) LoadFromFile(file string) []*MethodTemplate { + contents, err := os.ReadFile(file) + if err != nil { + fmt.Printf("error reading MockedResponsesFile: %v\n", err) + } + var template []*MethodTemplate + err = yaml.Unmarshal(contents, &template) + if err != nil { + fmt.Printf("error reading MockedResponsesFile: %v\n", err) + } + return template +} + +func (mh *MockedHandler) AddOverride(template *MethodTemplate) { + mh.Overrides = append(mh.Overrides, template) +} + +func (mh *MockedHandler) ResetOverrides() { + mh.Overrides = make([]*MethodTemplate, 0) +} diff --git a/go/proxyd/tools/mockserver/main.go b/go/proxyd/tools/mockserver/main.go new file mode 100644 index 0000000000..a58fc06325 --- /dev/null +++ b/go/proxyd/tools/mockserver/main.go @@ -0,0 +1,30 @@ +package main + +import ( + "fmt" + "os" + "path" + "strconv" + + "github.com/ethereum-optimism/optimism/proxyd/tools/mockserver/handler" +) + +func main() { + if len(os.Args) < 3 { + fmt.Printf("simply mock a response based on an external text MockedResponsesFile\n") + fmt.Printf("usage: mockserver \n") + os.Exit(1) + } + port, _ := strconv.ParseInt(os.Args[1], 10, 32) + dir, _ := os.Getwd() + + h := handler.MockedHandler{ + Autoload: true, + AutoloadFile: path.Join(dir, os.Args[2]), + } + + err := h.Serve(int(port)) + if err != nil { + fmt.Printf("error starting mockserver: %v\n", err) + } +} diff --git a/go/proxyd/tools/mockserver/node1.yml b/go/proxyd/tools/mockserver/node1.yml new file mode 100644 index 0000000000..313c65349f --- /dev/null +++ b/go/proxyd/tools/mockserver/node1.yml @@ -0,0 +1,52 @@ +- method: eth_getBlockByNumber + block: latest + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash2", + "number": "0x2" + } + } +- method: eth_getBlockByNumber + block: 0x1 + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash1", + "number": "0x1" + } + } +- method: eth_getBlockByNumber + block: 0x2 + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash2", + "number": "0x2" + } + } +- method: eth_getBlockByNumber + block: 0x3 + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash34", + "number": "0x3" + } + } +- method: debug_getRawReceipts + block: 0x88420081ab9c6d50dc57af36b541c6b8a7b3e9c0d837b0414512c4c5883560ff + response: > + {"jsonrpc":"2.0","id":1,"result":[]} +- method: debug_getRawReceipts + block: 0x88420081ab9c6d50dc57af36b541c6b8a7b3e9c0d837b0414512c4c5883560bb + response: > + {"jsonrpc":"2.0","id":1,"result":["0x02f902c10183037ec5b9010000000000000000000000000200000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000400000000000000000008000000000000000000000000000000000000020000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000200000000000000000000000000000000f901b6f8d994297a60578fd0e13076bf06cfeb2bbcd74f2680d2e1a0e5c486bee358a5fff5e4d70dc5fdaaf14806df125ffde843a8c40db608264812b8a00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000282bde1ac0c0000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000016573937382e393939393939393939393939395334393600000000000000000000f8d994297a60578fd0e13076bf06cfeb2bbcd74f2680d2e1a01309ab74031e37b46ee8ce9ff667a17a5c69a500a05d167e4c89ad8b0bc40bf9b8a0000000000000000000000000cd28ab95ae80b31255b2258a116cd2c1a371e0f3000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000652d2a700000000000000000000000000000000000000000000000000000000000000016573937382e393939393939393939393939395334393600000000000000000000","0x02f9039f01830645cdb9010000000020000000000000001000000000000000008004000000000000004000000000000000000002000000000000000000000000000000000000000000000000000000a00000000000000000000000200000000000000000000000000000000000000000000000400000000000000000000000000000000000000008000000000000000000004000400800000020000000000000000000000002000000000000000000000000000000200000000000040000000000000000000000001000000100100200000002000000000100000000010000020000000000000000000000000010000000000000000000000000000000000000000000000000000008040000f90294f8dc944638ac6b5727a8b9586d3eba5b44be4b74ed41fcf863a02ac69ee804d9a7a0984249f508dfab7cb2534b465b6ce1580f99a38ba9c5e631a0000000000000000000000000f08f78880122a9ee99f4f68dcab02177aeb08160a0000000000000000000000000f08f78880122a9ee99f4f68dcab02177aeb08160b8600000000000000000000000000000000000000000000000000032cdc63449c00000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000f8dc944638ac6b5727a8b9586d3eba5b44be4b74ed41fcf863a031b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83da0000000000000000000000000f08f78880122a9ee99f4f68dcab02177aeb08160a0000000000000000000000000f08f78880122a9ee99f4f68dcab02177aeb08160b8600000000000000000000000000000000000000000000000000032cdc63449c00000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000f85a947ad11bb9216bc9dc4cbd488d7618cbfd433d1e75f842a04641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133ca0e4bac2a8774c733b2c6da6ddf718b53614f36417dfaac90b23d2747d82d2251580f87a947fd7eea37c53abf356cc80e71144d62cd8af27d3f842a0db5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1ba04bd009c947444055f7e29f16c227e544387b9de8b571888d37f50becee99d76ea00000000000000000000000000000000000000000000000000000000000000001","0x02f90327018307aa96b9010000000000000000000000000028000000000000000000000000000000400000000000000000000000000000000000000000000000020000000000000000000000000000100000000000000000000000000000000000000000000000000000004000001000000000000000000000000000000000004000000000000000000000000000000000008000000000000000000000000000000000000000000000008000000000021000000000000000000000002040000000000000000000000000000000000000000000000000000000000000008000000000000000001000000000000000000000000000010000000000000000000000000000000000000000004000f9021cf9013c94af4159a80b6cc41ed517db1c453d1ef5c2e4db72f863a05e3c1311ea442664e8b1611bfabef659120ea7a0a2cfc0667700bebc69cbffe1a000000000000000000000000000000000000000000000000000000000000b574ea0eef6d16b5a91e0c5aa2df75fbb865f2be353c5052294a97ee3522d6b1ed674bfb8c00000000000000000000000006bebc4925716945d46f0ec336d5c2564f419682c000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000b47d4ece2bd3d6457b9abcde547e332832a6881b5e8697f86a16fd1e3006843062eda71ce901c9f888b5abb4736b9ca9bb36748e000000000000000000000000000000000000000000000000000000000000000b00000000000000000000000000000000000000000000000000000000652d2a70f8db946bebc4925716945d46f0ec336d5c2564f419682cf842a0ff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60ba000000000000000000000000000000000000000000000000000000000000b574eb88000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000034a36c4ece2bd3d6457b9abcde547e332832a6770a0000000000000000000000000000000000000000000000000095094d8053e000000000000000000000000000","0x02f901a70183083234b9010000000000000000040000000000000000000000020000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000040000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000800000000400000001000000000000000000000000000000000000000000000f89df89b94326c977e6efc84e512bb9c30f76e30c160ed06fbf863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000004281ecf07378ee595c564a59048801330f3084eea0000000000000000000000000cd5d6cadfd3b4c77415859a5d6999f2eea1da5d4a0000000000000000000000000000000000000000000000001158e460913d00000","0x02f9040a0183094189b9010000000000000000000000100000000000000000000000000000000000000000000002000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000008008000000000000000000000000000f902fff902fc94be72771b59f99adc9c07a43295fcada66cb865b9f842a035ee444266c4bfac0b9704ee4fc68807fe38d1e96b299a097442f8169f48d57da00000000000000000000000000000000000000000000000000000000000000027b902a000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000652d2a700000000000000000000000000000000000000000000000000000000000000027000000000000000000000000bc365d43d4761fd03738ebefa5ff3d7ccf8256a70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000038d7ea4c6800000000000000000000000000000000000000000000000000000000000652e78100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000183635326432363837663661356263626235613934643639370000000000000000000000000000000000000000000000000000000000000000000000000000001836353235626563643837396139613163653935363364643800000000000000000000000000000000000000000000000000000000000000000000000000000000","0x02f9039f01830c0891b9010000000020000000000000001000000000000000008004000000000000004000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000004000000200000000000000000000000000000000000000000000000400000000040000800000000000000000000000008000000000000000040004000400800000020200000000000000000000002000000000000000200000000000000200000000000040000800000000000000000000000000100000000000002000000000100000000000000000000000000000200000000000010000000000000000000000000000000000000000000000000000108000000f90294f8dc944638ac6b5727a8b9586d3eba5b44be4b74ed41fcf863a02ac69ee804d9a7a0984249f508dfab7cb2534b465b6ce1580f99a38ba9c5e631a0000000000000000000000000ffb08a46d802102de79b998be6fe0975e44cb212a0000000000000000000000000ffb08a46d802102de79b998be6fe0975e44cb212b8600000000000000000000000000000000000000000000000000032cdc63449c00000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000f8dc944638ac6b5727a8b9586d3eba5b44be4b74ed41fcf863a031b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83da0000000000000000000000000ffb08a46d802102de79b998be6fe0975e44cb212a0000000000000000000000000ffb08a46d802102de79b998be6fe0975e44cb212b8600000000000000000000000000000000000000000000000000032cdc63449c00000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000f85a947ad11bb9216bc9dc4cbd488d7618cbfd433d1e75f842a04641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133ca0c48bab3c23e29b52ad3d5b5a41b22448c12d59d5f986b479fdcc485cae9e794a80f87a947fd7eea37c53abf356cc80e71144d62cd8af27d3f842a0db5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1ba0d6910807a825d1b186bc97aaa5ae83f44bc11533f05f3bd567dd916e5de20de1a00000000000000000000000000000000000000000000000000000000000000001","0x02f9024a01837e0c08b9010000000000800000000000000100000000000000000000000000000000000000000000000000004000000000000200000000000000000000000000000000001000000000000000000000000000000000000000000040000000000040000000000800000000000000000000000000000000000000000000000000000000000000000000000000400020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000f9013ff9013c94c25708eaf0329888c4db0fa5746647ecca92f257f863a09efce6407f8b9dc575789c1e4cc190f025c452249eb8f7913c49958c9a5535dea000000000000000000000000000000000000000000000000000000000652d2a70a0000000000000000000000000a02d09d454861a0ccd2e8518886cdcec37ecdd2cb8c00000000000000000000000000000000000000000000000000000000000000b220000000000000000000000000000000000000000000000000000000000000b220000000000000000000000000000000000000000000000000000000000000b22000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066372656174650000000000000000000000000000000000000000000000000000","0x02f9039f018380d310b9010000000020000000000000001000000000000000008404000000000000004000000000000000000002000000000000000000000000000000000040000000000000000000000000000000000000000000200000000000000200000000000000000000000000000000400000000000000000000000000000000000000008000000000000000000004000400800000020000000001000000000000002400000000000000000000000000020200010000000040000000000000000000000000000000100000000400002000000000100000000000000000000000000000000000000000010000000000000000000000000000000000040000000000000000008000000f90294f8dc944638ac6b5727a8b9586d3eba5b44be4b74ed41fcf863a02ac69ee804d9a7a0984249f508dfab7cb2534b465b6ce1580f99a38ba9c5e631a0000000000000000000000000cbee1403a6adee830dfd02d763341687d81482eba0000000000000000000000000cbee1403a6adee830dfd02d763341687d81482ebb8600000000000000000000000000000000000000000000000000032cdc63449c00000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000f8dc944638ac6b5727a8b9586d3eba5b44be4b74ed41fcf863a031b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83da0000000000000000000000000cbee1403a6adee830dfd02d763341687d81482eba0000000000000000000000000cbee1403a6adee830dfd02d763341687d81482ebb8600000000000000000000000000000000000000000000000000032cdc63449c00000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000f85a947ad11bb9216bc9dc4cbd488d7618cbfd433d1e75f842a04641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133ca0f9cacd1bc3956dffcb1a7d556066528a92396aa2e7da07a02904b3bfd886661180f87a947fd7eea37c53abf356cc80e71144d62cd8af27d3f842a0db5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1ba00c4d6405faf20e9cb06cdcc5159705b5a4d42ee7ea60a15f20784e82a0b31786a00000000000000000000000000000000000000000000000000000000000000001","0x02f9010901838210d3b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f90c3f018388b358b9010000000000000000000000000000000000000040000000000200000000000004100000000002000000000000000000000000001000000000680000010000000009004020200000000008080008000800000000000000002000000000000000000040040000220000800000002080000800000000000000020000002090000000000000008400000000000000000000000000000000280000000200000000000040000000004000020000000000000000000000000000000000000000000000000000021002000008000000000000000000000000000800000000200100000820001005000000000000000000080000000000000000000000000040000000000000f90b34f89b948bd0e58032e5343c888eba4e72332176fffa7371f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000004ac853547fa1fe3f4690e452b904578f7d46a531a00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000016345785d8a0000f85894c9b7edc65488bdbb428526b03935090aef40ff03e1a0df21c415b78ed2552cc9971249e32a053abce6087a0ae0fbf3f78db5174a3493a0000000000000000000000000000000000000000000000000000098b591d3ac0ef8d9946f3a314c1279148e53f51af154817c3ef2c827b1e1a0b0c632f55f1e1b3b2c3d82f41ee4716bb4c00f0f5d84cdafc141581bb8757a4fb8a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000022000100000000000000000000000000000000000000000000000000000000000493e0000000000000000000000000000000000000000000000000000000000000f8d99436ebea3941907c438ca8ca2b1065deef21ccdaede1a04e41ee13e03cd5e0446487b524fdc48af6acf26c074dacdbdfb6b574b42c8146b8a0000000000000000000000000000000000000000000000000000000000000277a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000011f66d6864fcce84d5000e1e981dd586766339490000000000000000000000000000000000000000000000000000213ae829dcc5f9019a946f3a314c1279148e53f51af154817c3ef2c827b1e1a0e9bded5f24a4168e4f3bf44e00298c993b22376aad8c58c7dda9718a54cbea82b90160000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001140000000000000d54278911f66d6864fcce84d5000e1e981dd58676633949277ab92de63eb7d8a652bf80385906812f92d49c5139000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000a07355534400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000000000000000000000000000000000000000277a00000000000000000000000000000000000000000000000000000000000000144ac853547fa1fe3f4690e452b904578f7d46a531000000000000000000000000000000000000000000000000f9013d9411f66d6864fcce84d5000e1e981dd58676633949f884a0aae74fdfb502b568e3ca6f5aa448a255c90a2f24c4a6104d65ae45f097b37388a00000000000000000000000004ac853547fa1fe3f4690e452b904578f7d46a531a00000000000000000000000000000000000000000000000000000000000000007a0000000000000000000000000000000000000000000000000000000000000277ab8a000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000d540000000000000000000000000000000000000000000000000000000000000028b92de63eb7d8a652bf80385906812f92d49c513911f66d6864fcce84d5000e1e981dd58676633949000000000000000000000000000000000000000000000000f85894c9b7edc65488bdbb428526b03935090aef40ff03e1a0df21c415b78ed2552cc9971249e32a053abce6087a0ae0fbf3f78db5174a3493a00000000000000000000000000000000000000000000000000000381ece38c000f8d9946f3a314c1279148e53f51af154817c3ef2c827b1e1a0b0c632f55f1e1b3b2c3d82f41ee4716bb4c00f0f5d84cdafc141581bb8757a4fb8a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000022000100000000000000000000000000000000000000000000000000000000000493e0000000000000000000000000000000000000000000000000000000000000f8d99436ebea3941907c438ca8ca2b1065deef21ccdaede1a04e41ee13e03cd5e0446487b524fdc48af6acf26c074dacdbdfb6b574b42c8146b8a0000000000000000000000000000000000000000000000000000000000000279f0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000011f66d6864fcce84d5000e1e981dd586766339490000000000000000000000000000000000000000000000000000d027724dc000f9019a946f3a314c1279148e53f51af154817c3ef2c827b1e1a0e9bded5f24a4168e4f3bf44e00298c993b22376aad8c58c7dda9718a54cbea82b9016000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000114000000000000ac19278911f66d6864fcce84d5000e1e981dd58676633949279f4c11ccee50b70daa47c41849e45316d975b26102000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000a07355534400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000000000000000000000000000000000000000277a00000000000000000000000000000000000000000000000000000000000000144ac853547fa1fe3f4690e452b904578f7d46a531000000000000000000000000000000000000000000000000f9013d9411f66d6864fcce84d5000e1e981dd58676633949f884a0aae74fdfb502b568e3ca6f5aa448a255c90a2f24c4a6104d65ae45f097b37388a00000000000000000000000004ac853547fa1fe3f4690e452b904578f7d46a531a00000000000000000000000000000000000000000000000000000000000000007a0000000000000000000000000000000000000000000000000000000000000279fb8a00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000ac1900000000000000000000000000000000000000000000000000000000000000284c11ccee50b70daa47c41849e45316d975b2610211f66d6864fcce84d5000e1e981dd58676633949000000000000000000000000000000000000000000000000f8bb94593be683204ff3501e6e4851956a2da310e393b6f842a0c1e18b2a3583b6bc0879a3f3f657c41adfb512076938208ec0b389d6d19874cba00000000000000000000000004ac853547fa1fe3f4690e452b904578f7d46a531b8607355534400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000000000000000000000000000000000000000277a","0x02f901a7018389386bb9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000010000000000000000000000000000020000000000000000000800000000000000000000000010000000000000004000000000000000000000000000000000000000000000000000000000000000000000100400000000000000000000000000000400000000000000000000000002000000000000000000000000000000000000000000000000000020000000000000000001000000000000000000000000000000000000000000000000f89df89b946199f797b524166122f1c6e6a78ff321389bb686f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000e43f4840dad185beef6daa8e7328b521e6a1a2a0a000000000000000000000000000000000000000000000d3c21bcecceda1000000","0x02f908fa01838cb5bdb90100000000004000000000040000000000000000000000005000000022000004000000000000000000000000000000000000000000000000000000000200002000000000000000080000000000080000000000000400004000000000004000000000000000000002010000000000000000000000000008000000000000100000000000000000000000000000000000001000000000000800000000000000200000000a0000000000000000000000100000000000000000080000000000000000000000000002000000000000000000000000200240000000800000000000000000000010000000040000000000000000000000000000000800000000000000000000f907eff9025d9400000000000000adc04c56bf30ac9d3c0aaf14dcf863a09d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31a0000000000000000000000000f8de191520e37592aa84c62f650b067805cf1845a0000000000000000000000000ea2b4e7f02b859305093f9f4778a19d66ca176d5b901e0392f9c488837a9a75f4b5a139bed7757ebec5091b7e0b6f1ce70cbbbc75050e50000000000000000000000006f030b74371167d3b71cf3214e749b0d1814c0490000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000d3664b5e72b46eaba722ab6f43c22dbf4018195400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e1a300000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000002715ccea428f8c7694f7e78b2c89cb454c5f7294000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c68af0bb140000000000000000000000000000f8de191520e37592aa84c62f650b067805cf1845f9025d9400000000000000adc04c56bf30ac9d3c0aaf14dcf863a09d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31a00000000000000000000000006f030b74371167d3b71cf3214e749b0d1814c049a0000000000000000000000000ea2b4e7f02b859305093f9f4778a19d66ca176d5b901e0ea28a862f3530833f82dc3d97407cf3a23fb593335f2b11f9ade8d62576f14fe0000000000000000000000006f030b74371167d3b71cf3214e749b0d1814c04900000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000002715ccea428f8c7694f7e78b2c89cb454c5f7294000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c68af0bb14000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000d3664b5e72b46eaba722ab6f43c22dbf4018195400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e1a3000000000000000000000000006f030b74371167d3b71cf3214e749b0d1814c049f8b99400000000000000adc04c56bf30ac9d3c0aaf14dce1a04b9f2d36e1b4c93de62cc077b00b1a91d84b6c31b4a14e012718dcca230689e7b88000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002392f9c488837a9a75f4b5a139bed7757ebec5091b7e0b6f1ce70cbbbc75050e5ea28a862f3530833f82dc3d97407cf3a23fb593335f2b11f9ade8d62576f14fef89b94d3664b5e72b46eaba722ab6f43c22dbf40181954f863a08c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a0000000000000000000000000f8de191520e37592aa84c62f650b067805cf1845a000000000000000000000000000000000000000adc04c56bf30ac9d3c0aaf14dca00000000000000000000000000000000000000000000000000000000017d78400f89b94d3664b5e72b46eaba722ab6f43c22dbf40181954f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000f8de191520e37592aa84c62f650b067805cf1845a00000000000000000000000006f030b74371167d3b71cf3214e749b0d1814c049a00000000000000000000000000000000000000000000000000000000011e1a300f89b942715ccea428f8c7694f7e78b2c89cb454c5f7294f863a08c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a00000000000000000000000006f030b74371167d3b71cf3214e749b0d1814c049a000000000000000000000000000000000000000adc04c56bf30ac9d3c0aaf14dca0000000000000000000000000000000000000000000000035a66e2580ecd70000f89b942715ccea428f8c7694f7e78b2c89cb454c5f7294f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000006f030b74371167d3b71cf3214e749b0d1814c049a0000000000000000000000000f8de191520e37592aa84c62f650b067805cf1845a000000000000000000000000000000000000000000000000002c68af0bb140000","0x02f9036101838ed0a2b9010000000000000000080000000000000000000000000040000000000008000000000000000000010000002000008000000000004000000000000000000000000000000000000000000001000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000010000000000000000048000000000000000000000000000000400000000000000000000000000000010000000000000000008000000000000000000000000000000000000000020002000000000000000000000000008000000000000000000000000000000000800000000000000000000000008000000000000000000000000000000000f90256f89b94eea85fdf0b05d1e0107a61b4b4db1f345854b952f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa000000000000000000000000030f7fd07ce431d090f8ec59c3b635a4df42a00a1a0000000000000000000000000c1b71d1ad2de3fcbecda73c3273296dd45863c21a00000000000000000000000000000000000000000000000012f9aa3647286b60ff89b94fb7378d0997b0092be6bbf278ca9b8058c24752ff863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000c1b71d1ad2de3fcbecda73c3273296dd45863c21a000000000000000000000000030f7fd07ce431d090f8ec59c3b635a4df42a00a1a0000000000000000000000000000000000000000000000001314fb37062980000f901199430f7fd07ce431d090f8ec59c3b635a4df42a00a1e1a03b841dc9ab51e3104bda4f61b41e4271192d22cd19da5ee6e292dc8e2744f713b8e00000000000000000000000009563fdb01bfbf3d6c548c2c64e446cb5900aca88000000000000000000000000c1b71d1ad2de3fcbecda73c3273296dd45863c2100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001314fb370629800000000000000000000000000000000000000000000000000012f9aa3647286b60fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8","0x02f905c40183904383b9010000000000000000000008000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000010000000000000000000000000100000020002000000020000000800000000000000000000000200000000000000010000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000800000000000006000000000000800000100000000000000000000000000000000000000000000001000000000020000000000000000000800000000800000000000000000000004000000000000000f904b9f901ba94db249fda431b6385ad5e028f3aa31f3f51ebaef2e1a0cdb9fb741d82c65a081bb855b5e42174193549c537fd57a199609593827cff71b90180000000000000000000000000762f1119123806fc0aa4c58f61a9da096910200b0000000000000000000000000000000000000000000000000000000000004443000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000c7a6b4554482e676f65726c690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006d0c7a6b4554482e676f65726c693f616c656f316d397673377a68787632783232673963667a7a74616e6c72356d357a63617334726a616d7768796a6e74336636746737656772717266703676720080c6a47e8d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f9019a94762f1119123806fc0aa4c58f61a9da096910200be1a08636abd6d0e464fe725a13346c7ac779b73561c705506044a2e6b2cdb1295ea5b901600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000532e91ca086964251519359271b99bd08427314f000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000000000000000000c7a6b4554482e676f65726c690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003f616c656f316d397673377a68787632783232673963667a7a74616e6c72356d357a63617334726a616d7768796a6e743366367467376567727172667036767200f9015c94532e91ca086964251519359271b99bd08427314ff863a0fed162bc92844d868aeee15dc79af2ef4aac1ef57805f4eec865983f4d35efd9a00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000660aba6ca934d1537a95cc4454469a1026ed6252b8e00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000002386f26fc10000000000000000000000000000000000000000000000000000000000000000003f616c656f316d397673377a68787632783232673963667a7a74616e6c72356d357a63617334726a616d7768796a6e743366367467376567727172667036767200","0x02f901a7018390a504b9010000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000100000004000000000000000000000000200000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000020000000000000000000000000000000000000000000000000020000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000400000000000001000000000000000000000000000000000000f89df89b94fad6367e97217cc51b4cd838cc086831f81d38c2f863a08c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a000000000000000000000000028cd70b79775193ea6f75f0808870b0b9eb1ad01a00000000000000000000000001c5d511f65c99ff3ea07dcca7ed91146ed5351e2a00000000000000000000000000000000000000000000000000000000000000000","0x02f909ad018396c005b901000000400000040000000000000000000000000000000000000000000000000000000000000000000000000000000010000040000000000200000000004020000000000000a0080000080000080000000000000000020000000000800000000000000000000000000000000000000000000000000400000000000000188000000000000000000000001000000000000000010010000020000000000000000000000a0001000000001001000040000000400000000000001000000000000000000000000002000000000000000002000000010000800000000000000000000000000490100000000000000000000001000004000000000010000000000000000000f908a2f89b94a375a26dbb09f5c57fb54264f393ad6952d1d2def863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000002e5357a050c29c8e9781516ac176c276f3c9c5faa0000000000000000000000000633f534ddc7ccced21f70e3e6956e669daa49d41a000000000000000000000000000000000000000000000000000000000003d0900f89b94a375a26dbb09f5c57fb54264f393ad6952d1d2def863a08c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a00000000000000000000000002e5357a050c29c8e9781516ac176c276f3c9c5faa0000000000000000000000000633f534ddc7ccced21f70e3e6956e669daa49d41a00000000000000000000000000000000000000000000000000000f4312ed20263f89b94633f534ddc7ccced21f70e3e6956e669daa49d41f863a05548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62a0000000000000000000000000a375a26dbb09f5c57fb54264f393ad6952d1d2dea00000000000000000000000002e5357a050c29c8e9781516ac176c276f3c9c5faa000000000000000000000000000000000000000000000000000000000003d0900f89b94a375a26dbb09f5c57fb54264f393ad6952d1d2def863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000633f534ddc7ccced21f70e3e6956e669daa49d41a000000000000000000000000064046eaf582638f26ba3ff17ea51705f1367cbc3a000000000000000000000000000000000000000000000000000000000003d0900f8dd94633f534ddc7ccced21f70e3e6956e669daa49d41f884a0023916d46c0d18491146f8b0bc7d927a62a0559c8ca79920bda7dc7db1fc72f3a0000000000000000000000000a375a26dbb09f5c57fb54264f393ad6952d1d2dea00000000000000000000000002e5357a050c29c8e9781516ac176c276f3c9c5faa000000000000000000000000064046eaf582638f26ba3ff17ea51705f1367cbc3b84000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000003d0900f8fc9464046eaf582638f26ba3ff17ea51705f1367cbc3f863a051dfc81761c6e241cfba4adcd6a3af365b7b8305f76dc043f1b1b8bc22f73fdea000000000000000000000000000000000000000000000000000000000ffffffffa00000000000000000000000002e5357a050c29c8e9781516ac176c276f3c9c5fab88000000000000000000000000000000000000000000000000000000000000120f200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000003782dace9d900000ffffffffffffffffffffffffffffffffffffffffffffffffffd46bd89546914bf89b94a375a26dbb09f5c57fb54264f393ad6952d1d2def863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000002e5357a050c29c8e9781516ac176c276f3c9c5faa0000000000000000000000000633f534ddc7ccced21f70e3e6956e669daa49d41a000000000000000000000000000000000000000000000000000000000003d0900f89b94a375a26dbb09f5c57fb54264f393ad6952d1d2def863a08c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a00000000000000000000000002e5357a050c29c8e9781516ac176c276f3c9c5faa0000000000000000000000000633f534ddc7ccced21f70e3e6956e669daa49d41a00000000000000000000000000000000000000000000000000000f4312e94f963f89b94633f534ddc7ccced21f70e3e6956e669daa49d41f863a05548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62a0000000000000000000000000a375a26dbb09f5c57fb54264f393ad6952d1d2dea00000000000000000000000002e5357a050c29c8e9781516ac176c276f3c9c5faa000000000000000000000000000000000000000000000000000000000003d0900f89b94a375a26dbb09f5c57fb54264f393ad6952d1d2def863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000633f534ddc7ccced21f70e3e6956e669daa49d41a000000000000000000000000064046eaf582638f26ba3ff17ea51705f1367cbc3a000000000000000000000000000000000000000000000000000000000003d0900f8dd94633f534ddc7ccced21f70e3e6956e669daa49d41f884a0023916d46c0d18491146f8b0bc7d927a62a0559c8ca79920bda7dc7db1fc72f3a0000000000000000000000000a375a26dbb09f5c57fb54264f393ad6952d1d2dea00000000000000000000000002e5357a050c29c8e9781516ac176c276f3c9c5faa000000000000000000000000064046eaf582638f26ba3ff17ea51705f1367cbc3b84000000000000000000000000000000000000000000000000000000000658e7c8000000000000000000000000000000000000000000000000000000000003d0900f8fc9464046eaf582638f26ba3ff17ea51705f1367cbc3f863a051dfc81761c6e241cfba4adcd6a3af365b7b8305f76dc043f1b1b8bc22f73fdea000000000000000000000000000000000000000000000000000000000658e7c80a00000000000000000000000002e5357a050c29c8e9781516ac176c276f3c9c5fab8800000000000000000000000000000000000000000000000000000000000011e9a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003782dace9d900000000000000000000000000000000000000000000000000000002e45f9fa00bf77","0x02f9055c01839a4ac9b90100000000000004000000000000000000000000000000000000000000000000000000000004000000000000000000001000004000000000020000000000402000000000000080080000000000080000000000000000020000000000800000000000000000000000000000000000000000000000000400000000000000100000000000000000000000001000040000000000010010000000000000000000000000400a0800000000001001000040000000400000000000001000000000000004000000008002000000000000000000000100004000000000000000000000010000000090100000000000000000000001000004000000000010000000000000000000f90451f89b94a375a26dbb09f5c57fb54264f393ad6952d1d2def863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa000000000000000000000000046fcab71245e2ff12ecc0ba8d3490aec95617b54a0000000000000000000000000633f534ddc7ccced21f70e3e6956e669daa49d41a000000000000000000000000000000000000000000000000000000000003d0900f89b94a375a26dbb09f5c57fb54264f393ad6952d1d2def863a08c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a000000000000000000000000046fcab71245e2ff12ecc0ba8d3490aec95617b54a0000000000000000000000000633f534ddc7ccced21f70e3e6956e669daa49d41a0000000000000000000000000000000000000000000000000000000003e7f2450f89b94633f534ddc7ccced21f70e3e6956e669daa49d41f863a05548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62a0000000000000000000000000a375a26dbb09f5c57fb54264f393ad6952d1d2dea000000000000000000000000046fcab71245e2ff12ecc0ba8d3490aec95617b54a000000000000000000000000000000000000000000000000000000000003d0900f89b94a375a26dbb09f5c57fb54264f393ad6952d1d2def863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000633f534ddc7ccced21f70e3e6956e669daa49d41a0000000000000000000000000f1675ffed677b2e7ee0c87574ebd279049d9ebf9a000000000000000000000000000000000000000000000000000000000003d0900f8dd94633f534ddc7ccced21f70e3e6956e669daa49d41f884a0023916d46c0d18491146f8b0bc7d927a62a0559c8ca79920bda7dc7db1fc72f3a0000000000000000000000000a375a26dbb09f5c57fb54264f393ad6952d1d2dea000000000000000000000000046fcab71245e2ff12ecc0ba8d3490aec95617b54a0000000000000000000000000f1675ffed677b2e7ee0c87574ebd279049d9ebf9b84000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000003d0900f8fc94f1675ffed677b2e7ee0c87574ebd279049d9ebf9f863a051dfc81761c6e241cfba4adcd6a3af365b7b8305f76dc043f1b1b8bc22f73fdea000000000000000000000000000000000000000000000000000000000ffffffffa000000000000000000000000046fcab71245e2ff12ecc0ba8d3490aec95617b54b880ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003782dace9d900000fffffffffffffffffffffffffffffffffffffffffffffff3d3b3ce837117c4f3","0x02f9032701839baf92b9010000000000000000000000000000000000000000000000000000000000400000000000000000000000000200000000000000000000020000001200000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000021000000000000000000000002440000000000000000000000000000000001000000000000000000000000000008000000000000000001000000000000000000000000000000000000008000000000000000000000000000000004000f9021cf9013c94af4159a80b6cc41ed517db1c453d1ef5c2e4db72f863a05e3c1311ea442664e8b1611bfabef659120ea7a0a2cfc0667700bebc69cbffe1a000000000000000000000000000000000000000000000000000000000000b574fa0c16ec891aba6a3f7b381a53cdd85e9d84741f080b35012c1f376edcac6e95f10b8c00000000000000000000000006bebc4925716945d46f0ec336d5c2564f419682c000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000f5ce611c7321438f8a30aab16852d68da4f5ab5a4de176e8c0279273cbe8a9919b029628c5cc2def297494bb2b1d1a470ae6ce18000000000000000000000000000000000000000000000000000000000000000b00000000000000000000000000000000000000000000000000000000652d2a70f8db946bebc4925716945d46f0ec336d5c2564f419682cf842a0ff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60ba000000000000000000000000000000000000000000000000000000000000b574fb88000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000034e4bd611c7321438f8a30aab16852d68da4f59a490000000000000000000000000000000000000000000000000429d069189e0000000000000000000000000000","0x02f901ff01839ceb65b9010000000000010002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000800000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000020000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000f8f5f85894d5c325d183c592c94998000c5e0eed9e6655c020e1a09866f8ddfe70bb512b2f2b28b49d4017c43f7ba775f1a20c61c13eea8cdac111a0c9afd20a1f61bb629588d82d72e13914812259d13161284b98747c955d62317ef89994d5c325d183c592c94998000c5e0eed9e6655c020e1a0d342ddf7a308dec111745b00315c14b7efb2bdae570a6856e088ed0c65a3576cb8600336df0b24cf3302afadbc4c828662c60c2cdae602e59beaab7011bf3fd5a223000000000000000000000000000000000000000000000000000000000004d0e5020abc24e9cfc67a97e463deef1ab573cb11d9cd618bedee85c2df85fac6faa2","0x02f901ff01839e2744b9010000000000010002000000000000000000000000000000000000000000000000000000002000000000000000001000000000000000000000000000800000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000800000000000000000000000000000000000000000000000000000000000000f8f5f85894de29d060d45901fb19ed6c6e959eb22d8626708ee1a09866f8ddfe70bb512b2f2b28b49d4017c43f7ba775f1a20c61c13eea8cdac111a035ceccc734a10ae9c593304774276b4b6324223b019c38c6662ab923022b2c8af89994de29d060d45901fb19ed6c6e959eb22d8626708ee1a0d342ddf7a308dec111745b00315c14b7efb2bdae570a6856e088ed0c65a3576cb860022db625db05534a27ea14675f8d22d7c603e0981ceff2b02504791b75c4f56100000000000000000000000000000000000000000000000000000000000d7c61019e776def80129482e5f6282056f7318bedf7bc30a4ae7cdf8814d8d0b28a99","0x02f901ff01839f6317b9010000000000010002000000000000000000000000000000000000000000000000000000002000000000000000001000000000000000000000000000800000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000800000000000000000000000000000000000000000000000000000000000000f8f5f85894de29d060d45901fb19ed6c6e959eb22d8626708ee1a09866f8ddfe70bb512b2f2b28b49d4017c43f7ba775f1a20c61c13eea8cdac111a01331bfa0165c171aefba1e6eebd55d52bc2389726c1d0594f4a9e2f7812b42e4f89994de29d060d45901fb19ed6c6e959eb22d8626708ee1a0d342ddf7a308dec111745b00315c14b7efb2bdae570a6856e088ed0c65a3576cb86002e2bf007e02d68956b61be94c5661c8c8d1fb7ae552a0b2e7f3869d20d7aa0700000000000000000000000000000000000000000000000000000000000d7c620467725c6a4525d13c195701bf88f4f3c65329438cf8a437c928067d9a80556e","0x02f9033f0183a10e1fb9010000000000010002000000000000000000000000000000000000000000000000000000002000000000000000001000000000000000000000000000800000000040000040000000000000000200000000000000000000002000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000020000000000004000000000000000080000000200400000000000800000000000000000000000000000000000000000000000000000000000000f90234f85894de29d060d45901fb19ed6c6e959eb22d8626708ee1a09866f8ddfe70bb512b2f2b28b49d4017c43f7ba775f1a20c61c13eea8cdac111a074c803dcb95e04990c3e71db65899a9e0282003a967632e13eb6ce45d598fb45f9013c94de29d060d45901fb19ed6c6e959eb22d8626708ef863a04264ac208b5fde633ccdd42e0f12c3d6d443a4f3779bbf886925b94665b63a22a0073314940630fd6dcda0d772d4c972c4e0a9946bef9dabf4ef84eda8ef542b82a0000000000000000000000000c3511006c04ef1d78af4c8e0e74ec18a6e64ff9eb8c00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f36e2be14d65c7a832d1a863ecfa06c6730634700000000000000000000000000000000000000000000000000470de4df8200000000000000000000000000000000000000000000000000000000000000000000f89994de29d060d45901fb19ed6c6e959eb22d8626708ee1a0d342ddf7a308dec111745b00315c14b7efb2bdae570a6856e088ed0c65a3576cb8600427eee54195a8dc4d35b17e5cbc8e18b6e8eebdaf2017f6e12dac62232ca9e000000000000000000000000000000000000000000000000000000000000d7c6300b1121da2e28ad38fb1736373bb7fe4787b73c881995bbd391b17aa113a2cc8","0x02f901ff0183a249e6b9010000000000010002000000000000000000000000000000000000000000000000000000002000000000000000001000000000000000000000000000800000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000800000000000000000000000000000000000000000000000000000000000000f8f5f85894de29d060d45901fb19ed6c6e959eb22d8626708ee1a09866f8ddfe70bb512b2f2b28b49d4017c43f7ba775f1a20c61c13eea8cdac111a0d4d6f16309b51be964a0482c4cd816fadeaa8759216dd9bbc20773ba36c75ccaf89994de29d060d45901fb19ed6c6e959eb22d8626708ee1a0d342ddf7a308dec111745b00315c14b7efb2bdae570a6856e088ed0c65a3576cb8600001d0bd72454b02cd7386951338297e0da0f5a8c1076a24c1425928dce0838300000000000000000000000000000000000000000000000000000000000d7c64028c033938806df04fcc792f72f91ca04c3c20963eec03addb44fecf6fa795de","0x02f901090183a29beeb9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f9041e0183a8526db9010000000200000000400000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000010000020000000000000000000000000000004000000080000000004000000002000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800200010000000000000000000000000000000000000000000000000000000040000000000000000f90313f8b994caf156a3dd652e2b493fe9e53f3d526d3cbbd4a8e1a0e2db1e7820b0cca1226a7e7d5cc2a3df28542b04da0f0aa7949f2a74519ef5a0b880000000000000000000000000307c2d86e3638a5afce36115dcbc856260748d310000000000000000000000000000000000000000000000000000b588ff18e000000000000000000000000000307c2d86e3638a5afce36115dcbc856260748d310000000000000000000000000000000000000000000000000000000000000000f87994caf156a3dd652e2b493fe9e53f3d526d3cbbd4a8e1a0305bf06329ff886b42ab3ed2979092b17d3a7fc67e7de42ee393a24c8e39fee7b840000000000000000000000000307c2d86e3638a5afce36115dcbc856260748d31000000000000000000000000307c2d86e3638a5afce36115dcbc856260748d31f901da9475d8ec64bf68b364b1f45249774e78df2f401399e1a0c6cb9661759518374091eb98266dd634614ae793b31549daff33e83d6dee0165b901a0000000000000000000000000caf156a3dd652e2b493fe9e53f3d526d3cbbd4a8000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001200000000000000000000000004a1c82542ebdb854ece6ce5355b5c48eb299ecd8000000000000000000000000000000000000000000000000000aa87bee53800000000000000000000000000000000000000000000000000000000000000003840000000000000000000000000000000000000000000000000000b588ff18e000000000000000000000000000307c2d86e3638a5afce36115dcbc856260748d31000000000000000000000000000000000000000000000000000000000001518000000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000000000001e347468207465737420636f6c6c656374697665206f6e203136204f6374200000","0x02f908450183ab3259b9010000000000004048000010000004005000000000080000000000000000000000080002000000000000008200000004008450000000000000000000100000200200000001000000000040000008200000000000000000000000000000102000000100000000000000000000000480000000000000000000000000000010000000000200000000024000000000000000000010000000000000000001004200400000020000000000000000000000001400000000000000000000040000000200000000000002000000080000000000020000000000000000040000000000000000001010000000000000000000000000000000000000000000000000800000000000f9073af89b944031bc992179a7742bb99ec99da67f852c11927af863a08c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a0000000000000000000000000aed889cc423f93ae00d140fce00a4aa6b05aa783a0000000000000000000000000d029d527e1d700c549f4e04662035b8a8624ce4fa00000000000000000000000000000000000000000000000000000000000000000f89b944031bc992179a7742bb99ec99da67f852c11927af863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000aed889cc423f93ae00d140fce00a4aa6b05aa783a0000000000000000000000000d029d527e1d700c549f4e04662035b8a8624ce4fa000000000000000000000000000000000000000000000000000000000000003e8f902de94d9005878cb1a830355dbf4d814a835c54022038ef884a04b388aecf9fa6cc92253704e5975a6129a4f735bdbd99567df4ed0094ee4ceb5a00000000000000000000000000ded20eaea674409ccfeca298385f361ad359a43a00000000000000000000000004200000000000000000000000000000000000007a0000000000000000000000000000000000000000000000000000000000000170db9024000000000000000000000000000000000000000000000000000000000001e8480000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000652d2a7000000000000000000000000000000000000000000000000000000000000001a4cbd4ece90000000000000000000000004200000000000000000000000000000000000010000000000000000000000000d029d527e1d700c549f4e04662035b8a8624ce4f0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000170d00000000000000000000000000000000000000000000000000000000000000e4662a633a0000000000000000000000003c3a81e81dc49a522a592e7622a7e711c06bf354000000000000000000000000deaddeaddeaddeaddeaddeaddeaddeaddead0000000000000000000000000000aed889cc423f93ae00d140fce00a4aa6b05aa783000000000000000000000000aed889cc423f93ae00d140fce00a4aa6b05aa78300000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f901fc94fcdc20eaea674409ccfeca298385f361ad358932f842a0cb0f7ffd78f9aee47a248fae8db181db6eee833039123e026dcbff529522e52aa00000000000000000000000004200000000000000000000000000000000000010b901a0000000000000000000000000d029d527e1d700c549f4e04662035b8a8624ce4f0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000170d00000000000000000000000000000000000000000000000000000000001e848000000000000000000000000000000000000000000000000000000000000000e4662a633a0000000000000000000000003c3a81e81dc49a522a592e7622a7e711c06bf354000000000000000000000000deaddeaddeaddeaddeaddeaddeaddeaddead0000000000000000000000000000aed889cc423f93ae00d140fce00a4aa6b05aa783000000000000000000000000aed889cc423f93ae00d140fce00a4aa6b05aa78300000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f9011d94d029d527e1d700c549f4e04662035b8a8624ce4ff884a0718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d0396a00000000000000000000000004031bc992179a7742bb99ec99da67f852c11927aa0000000000000000000000000deaddeaddeaddeaddeaddeaddeaddeaddead0000a0000000000000000000000000aed889cc423f93ae00d140fce00a4aa6b05aa783b880000000000000000000000000aed889cc423f93ae00d140fce00a4aa6b05aa78300000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","0xf901090183ab8461b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0xf901090183abd669b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0xf903640183ae0bfcb9010000000000100000400000000000000000000000000000084000000000000000000000000000000000000000000000020000000000000000000000000000000000000040008800000000100008000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000000010000000000002000000000000000000000000000000000000000002000000000000000000000000000000000000001000000000000000020080000000000000040000000080040002000000000000000000000000000000000000000000010000000020000000000000200000000000000000000000000000001002000000000000000000f90259f9011c94980205d352f198748b626f6f7c38a8a5663ec981f863a02bd2d8a84b748439fd50d79a49502b4eb5faa25b864da6a9ab5c150704be9a4da0000000000000000000000000000000000000000000000000000000000000006ea00000000000000000000000009f40916d0dfb2f8f5fb63d8f76826d09041f2eaeb8a000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000d68efdc6e047f712f4bff82fc800f5309ca0c4e8e7ba32b255b212fef748ed80af200000000000000000000000000000000000000000000000000000000000000148a555e4fc287650f5e8ca1778a35dd44e893d6aa000000000000000000000000f89b949f40916d0dfb2f8f5fb63d8f76826d09041f2eaef863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000363413eb82ff4ebda8e70f8e0f9615b684d2f9eda00000000000000000000000000000000000000000000000000de0b6b3a7640000f89b949f40916d0dfb2f8f5fb63d8f76826d09041f2eaef863a0bf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bfa0000000000000000000000000000000000000000000000000000000000000006ea0000000000000000000000000363413eb82ff4ebda8e70f8e0f9615b684d2f9eda00000000000000000000000000000000000000000000000000de0b6b3a7640000","0xf903640183b08524b9010000000000002000000000000000000000000000000040000000000000000000000000000000000020000000000000000000000000000000000000000000000000000040000800000000000008000000000001000000000000000000000000000000000000020000000000000000000800000000000020000000000010000000000002004000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000020080000100400000040000000080100002000000000000000000000000000000000000000000010000000020000000000000200000000000000000000000000000001002000000000000000000f90259f9011c94980205d352f198748b626f6f7c38a8a5663ec981f863a02bd2d8a84b748439fd50d79a49502b4eb5faa25b864da6a9ab5c150704be9a4da0000000000000000000000000000000000000000000000000000000000000006ea00000000000000000000000004f7a67464b5976d7547c860109e4432d50afb38eb8a0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000001a400c8fb05948cf6527abe1b570154f613139797c9cf1ace53bd3c8f4a8f756a703f60000000000000000000000000000000000000000000000000000000000000014dd69db25f6d620a7bad3023c5d32761d353d3de9000000000000000000000000f89b944f7a67464b5976d7547c860109e4432d50afb38ef863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000004f7a67464b5976d7547c860109e4432d50afb38ea00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000005805420c76fdc3d1f89b944f7a67464b5976d7547c860109e4432d50afb38ef863a0bf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bfa0000000000000000000000000000000000000000000000000000000000000006ea000000000000000000000000095ac38e1c9af5a6d868c1b376e7c0ba9b9251ca5a00000000000000000000000000000000000000000000000005805420c76fdc3d1","0xf903640183b2fe40b9010000000000002000000000000000000000000000000040000000000000000000000000000000000000000000010000000000000000000000000000000000000000000040000800000000000008000000000001000000000100000000000000000000000000020000000000000000000800000000000020000000000010000000000002000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000020080000100000000040000000080100002000000000000000000000000000000000000000000010000000020000000000000200000008000000000000000000000001002000000000000000000f90259f9011c94980205d352f198748b626f6f7c38a8a5663ec981f863a02bd2d8a84b748439fd50d79a49502b4eb5faa25b864da6a9ab5c150704be9a4da0000000000000000000000000000000000000000000000000000000000000006ea00000000000000000000000004f7a67464b5976d7547c860109e4432d50afb38eb8a0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000001a400d1b36efb5ef48c1953b391dadade996e546aebdeea81b118ac2eefda2a548bac50000000000000000000000000000000000000000000000000000000000000014dd69db25f6d620a7bad3023c5d32761d353d3de9000000000000000000000000f89b944f7a67464b5976d7547c860109e4432d50afb38ef863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000004f7a67464b5976d7547c860109e4432d50afb38ea00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000005735cbdc26b5d43af89b944f7a67464b5976d7547c860109e4432d50afb38ef863a0bf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bfa0000000000000000000000000000000000000000000000000000000000000006ea0000000000000000000000000f7db1e439db7a79a8f91cbde7c0069a97b89c813a00000000000000000000000000000000000000000000000005735cbdc26b5d43a","0xf902c40183b4a7bab9010000000040000000080000000000000000000000000000000001000002000000000000000000000000000000000000000000000000000000000000000000002000000040000000000000000000000000000000000000020000000000000000000000000000000000000040000000000000000000000008000000000000000000000000000010000000000000000000000000000000000002000000000000000000000000000000000000000000200000000000000000000000000000040000000080000020000000000000000000000000000000000000000000010000000000000000000000200000000000000000000000000000000000000000000000000000f901b9f8dc94980205d352f198748b626f6f7c38a8a5663ec981f863a074bbc026808dcba59692d6a8bb20596849ca718e10e2432c6cdf48af865bc5d9a0000000000000000000000000000000000000000000000000000000000000006ea0000000000000000000000000a6bf2be6c60175601bf88217c75dd4b14abb5fbbb860312401a801d73bde5cacb7e2eeba637d09c23f9a18dff6504cbdc8f7d7b2e348312401a801d73bde5cacb7e2eeba637d09c23f9a18dff6504cbdc8f7d7b2e3480000000000000000000000000000000000000000000000000000000000000014f8d994a6bf2be6c60175601bf88217c75dd4b14abb5fbbe1a0293e3a2153dc5c8d3667cbd6ede71a71674b2381e5dc4b40c91ad0e813447c0fb8a0000000000000000000000000980205d352f198748b626f6f7c38a8a5663ec981cf507db63af850463ebaaeffe5f783680e6aa364627d07c6488f5ba313ebbcca000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000","0xf903640183b6bf22b9010000000000002000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000008000000000001000000000000000000000000000000000000020000000000000000000800000000000020000000000010000000008002002000000000000000000000000000000000000002000000000000000000000000000000000040000000000000000000020180000100000000040000000000140002000000000000000000000000000000000000000000000000000020000000000000200000000000000000000000000000001002000000000400000000f90259f9011c94980205d352f198748b626f6f7c38a8a5663ec981f863a02bd2d8a84b748439fd50d79a49502b4eb5faa25b864da6a9ab5c150704be9a4da0000000000000000000000000000000000000000000000000000000000000006fa00000000000000000000000004f7a67464b5976d7547c860109e4432d50afb38eb8a000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000073bd808065379db49bfa5292e83432fd6ede06ae24792f0d266ac89be03f7925229ce0000000000000000000000000000000000000000000000000000000000000014dd69db25f6d620a7bad3023c5d32761d353d3de9000000000000000000000000f89b944f7a67464b5976d7547c860109e4432d50afb38ef863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000004f7a67464b5976d7547c860109e4432d50afb38ea00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000a7da3311d85502df89b944f7a67464b5976d7547c860109e4432d50afb38ef863a0bf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bfa0000000000000000000000000000000000000000000000000000000000000006fa0000000000000000000000000c677f78297d40138b68be496ae34d861dc9edbeba00000000000000000000000000000000000000000000000000a7da3311d85502d","0xf902c40183b86890b9010000000040000000080000000000000000000000000000000001000002000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000020000000000000000000000000000000000000040000000000000000000000008000000000000000000000000000010000000000000000000000000000000000002000000000000000000000000000000000040000000200000000000000100000000000000040000000000040020000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000f901b9f8dc94980205d352f198748b626f6f7c38a8a5663ec981f863a074bbc026808dcba59692d6a8bb20596849ca718e10e2432c6cdf48af865bc5d9a0000000000000000000000000000000000000000000000000000000000000006fa0000000000000000000000000a6bf2be6c60175601bf88217c75dd4b14abb5fbbb86031f7494a39416159f52b17758dda7bdafa4215dcf706dfc06cd6f8933b817d2031f7494a39416159f52b17758dda7bdafa4215dcf706dfc06cd6f8933b817d200000000000000000000000000000000000000000000000000000000000000014f8d994a6bf2be6c60175601bf88217c75dd4b14abb5fbbe1a0293e3a2153dc5c8d3667cbd6ede71a71674b2381e5dc4b40c91ad0e813447c0fb8a0000000000000000000000000980205d352f198748b626f6f7c38a8a5663ec981ea46511277ad0d9d47ff09d07eb1e1298bcefa6a6da798de1e0af884002aceb1000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000","0x02f902460183e60720b9010000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008002000000000000000000000000000000000000000000000020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000001000000000000080004002000000000000000000000000000000000000000100000000000020000000000000001000000000000000000000000000000000020000000000000000f9013bf89b9488045945952b374abf696602941b51149bad8ab4f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000e8c83b0cb059fe98f4e0bb2b7be404565e5aaa75a00000000000000000000000000000000000000000033b2e3c9fd0803ce8000000f89c9488045945952b374abf696602941b51149bad8ab4f884a02f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0da00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000e8c83b0cb059fe98f4e0bb2b7be404565e5aaa75a0000000000000000000000000e8c83b0cb059fe98f4e0bb2b7be404565e5aaa7580","0xf901090183e65928b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f901e50183e6f1e1b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000001080000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8dbf8d99416324d80bfc68b1fec6c288f0dac640a044d2678e1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000180ab5200000000000000000000000000000000000000000000000000000000652d2a5500000000000000000000000000000000000000000000000000000000000000074144412f55534400000000000000000000000000000000000000000000000000","0x02f901e50183e78ab2b9010000000000000000000000000400000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000800040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8dbf8d994e7a43467520e4d12d1f9e94b99d6f041786aadcee1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000024cba3965500000000000000000000000000000000000000000000000000000000652d2a550000000000000000000000000000000000000000000000000000000000000008574554482f555344000000000000000000000000000000000000000000000000","0x02f901e50183e82377b9010000000000000000000000000000000000000000000000000000000000000000000000080000000000001000000020000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8dbf8d994b52a8b962ff3d8a6a0937896ff3da3879eac64e3e1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000005f6321e00000000000000000000000000000000000000000000000000000000652d2a560000000000000000000000000000000000000000000000000000000000000008555344542f555344000000000000000000000000000000000000000000000000","0xf901090183e8ef8fb9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f901e50183e9883cb9010000000002000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000f8dbf8d994117a5ab00f93469bea455f0864ef9ad8d9630cc9e1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000007e060100000000000000000000000000000000000000000000000000000000652d2a5800000000000000000000000000000000000000000000000000000000000000074752542f55534400000000000000000000000000000000000000000000000000","0x02f901e50183ea2101b9010000000000000000000000000000000000000000000000000000004000000000000000000000000000001000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000800000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8dbf8d994bbbf9614de2b788a66d970b552a79fae6419abdce1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000005eebd8700000000000000000000000000000000000000000000000000000000652d2a580000000000000000000000000000000000000000000000000000000000000008465241582f555344000000000000000000000000000000000000000000000000","0x02f901e50183eab9d2b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200f8dbf8d99439f46d72bb20c7bcb8a2cdf52630fac1496e859ae1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000024f8bc612d00000000000000000000000000000000000000000000000000000000652d2a5a0000000000000000000000000000000000000000000000000000000000000008574554482f555344000000000000000000000000000000000000000000000000","0x02f901e50183eb528bb9010000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000020000000010000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8dbf8d9945ae58e9dec27619572a42dad916e413afa89e46de1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000019d1f00000000000000000000000000000000000000000000000000000000652d2a5c000000000000000000000000000000000000000000000000000000000000000842414e4b2f555344000000000000000000000000000000000000000000000000","0x02f9043a0183ed1237b9010000200000000000000000002080000000000000000000000000010000000000000000000000000000000000000000200000000000000000000000020000000000000000000400000000002008000000300000000000000000000000008000000000000000008000100000000000000000000000000000000000020010000000000000000080000000004000000000000000000001000000080000104000000000000000000000000000000000000000000000000000000000000000000000000000204002000000001000000000000000000000000000001000000000000020000000000000000000000000000000000000000000000001400000000000000000f9032ff87a94b4fbf271143f4fbf7b91a5ded31805e42b2208d6f842a0e1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109ca00000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488da0000000000000000000000000000000000000000000000000000000e8d4a51000f89b94b4fbf271143f4fbf7b91a5ded31805e42b2208d6f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488da000000000000000000000000077f0ea26bae49c9f412a1511730c7c1d3382f697a0000000000000000000000000000000000000000000000000000000e8d4a51000f89b94257c2c98163227062e5a33095a20fc7604ee52b5f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa000000000000000000000000077f0ea26bae49c9f412a1511730c7c1d3382f697a0000000000000000000000000185d901fe591ce516ed9e192b33da3ef14d53b93a0000000000000000000000000000000000000000000000000042a7d29b88844e5f8799477f0ea26bae49c9f412a1511730c7c1d3382f697e1a01c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1b840000000000000000000000000000000000000000000007b61de650eaa9bccab150000000000000000000000000000000000000000000000001adafd27de2bd68bf8fc9477f0ea26bae49c9f412a1511730c7c1d3382f697f863a0d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822a00000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488da0000000000000000000000000185d901fe591ce516ed9e192b33da3ef14d53b93b8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e8d4a51000000000000000000000000000000000000000000000000000042a7d29b88844e50000000000000000000000000000000000000000000000000000000000000000","0x02f901e50183edaafcb9010000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000800000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8dbf8d994aac02884a376dc5145389ba37f08b0dde08d3f18e1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000b37b80500000000000000000000000000000000000000000000000000000000652d2a5e0000000000000000000000000000000000000000000000000000000000000008445944582f555344000000000000000000000000000000000000000000000000","0x02f901e50183ee43c1b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000008000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400040000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000f8dbf8d994402a30f83bbfc2203e1fc5d8a9bb41e1b0ddc639e1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000024df2e4ee100000000000000000000000000000000000000000000000000000000652d2a5f00000000000000000000000000000000000000000000000000000000000000074554482f55534400000000000000000000000000000000000000000000000000","0x02f901e50183eedc86b9010000000000000000000000000000000000000000000000000000000000000000040000000000000000001000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000f8dbf8d9943ae963e586b6c1d16f371ac0a1260cdaed6a76bde1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000024dcbf623800000000000000000000000000000000000000000000000000000000652d2a5f00000000000000000000000000000000000000000000000000000000000000074554482f55534400000000000000000000000000000000000000000000000000","0x02f901e50183ef753fb9010000000000000000000000000000000000000000000000000000000000000040000000000000000000001000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000f8dbf8d994c8f4aeb27fce1f361cda3aadcda992c7ed7b0e74e1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000005b67ef00000000000000000000000000000000000000000000000000000000652d2a610000000000000000000000000000000000000000000000000000000000000008444f47452f555344000000000000000000000000000000000000000000000000","0x02f901e50183f00e04b9010000000000000000000000000000000000000000000000000000000004000000000000000000000000001000000000000400000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8dbf8d99460cfba755fac7178e9a8e133699ad2f7dcf6ad9ae1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000229ca2bd00000000000000000000000000000000000000000000000000000000652d2a620000000000000000000000000000000000000000000000000000000000000008555255532f555344000000000000000000000000000000000000000000000000","0x02f901098083f0647ab9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f901e50183f0fd33b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000010000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8dbf8d9945e3b4e52af7f15f4e4e12033d71cfc3afbc7d3c0e1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000002c0f30100000000000000000000000000000000000000000000000000000000652d2a6400000000000000000000000000000000000000000000000000000000000000074f4d472f55534400000000000000000000000000000000000000000000000000","0x02f901e50183f195ecb9010000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000010000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000f8dbf8d994ffd9e1167e2ad8f323464832ad99a03bda99b7b7e1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000150ea000000000000000000000000000000000000000000000000000000000652d2a64000000000000000000000000000000000000000000000000000000000000000847414c412f555344000000000000000000000000000000000000000000000000","0x02f901098083f22563b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f901e50183f2be28b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000010000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8dbf8d9940e324d90e9180df65e63438b2af37458b7b7b500e1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000004f47321cd00000000000000000000000000000000000000000000000000000000652d2a690000000000000000000000000000000000000000000000000000000000000007424e422f55534400000000000000000000000000000000000000000000000000","0x02f901e50183f356f9b9010000000000000000000000000000000000000000000000000000000000000000000000000000200000001000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000f8dbf8d9944a7d0e32e82aea46773c348896761addc51dfb11e1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000105dd23061100000000000000000000000000000000000000000000000000000000652d2a6900000000000000000000000000000000000000000000000000000000000000074254432f55534400000000000000000000000000000000000000000000000000","0x02f901e50183f3e4dab9010000000000000000000000000000000000000000000000000000000000000000000000000000000000001080000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8dbf8d99416324d80bfc68b1fec6c288f0dac640a044d2678e1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000018227472200000000000000000000000000000000000000000000000000000000652d2a690000000000000000000000000000000000000000000000000000000000000008414156452f555344000000000000000000000000000000000000000000000000","0x02f901e50183f472c7b9010000000000000000000000000400000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000800040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8dbf8d994e7a43467520e4d12d1f9e94b99d6f041786aadcee1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000285d0fb605900000000000000000000000000000000000000000000000000000000652d2a6a0000000000000000000000000000000000000000000000000000000000000008574254432f555344000000000000000000000000000000000000000000000000","0x02f901e50183f50b8cb9010000000000000000000000000000000000000000000000000000000000000000000000000000000002001000000000000000000000000000000000000010000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000f8dbf8d99407c4eee621098c526403b30bdcb17b3722719dcee1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000024dfc6ecd300000000000000000000000000000000000000000000000000000000652d2a6a00000000000000000000000000000000000000000000000000000000000000074554482f55534400000000000000000000000000000000000000000000000000","0x02f901e50183f59979b9010000000000000000000000000000000000000000000000000000000000000000000000080000000000001000000020000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8dbf8d994b52a8b962ff3d8a6a0937896ff3da3879eac64e3e1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000002870fd6b6be00000000000000000000000000000000000000000000000000000000652d2a6a0000000000000000000000000000000000000000000000000000000000000008574254432f555344000000000000000000000000000000000000000000000000","0x02f904240183f78797b9010000000000100000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000800600000000000000000000000000000000000000000001082000000000001001000000000000000000000000000000020000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000580000000000000000000000200000000001000000000000000000000000000000000000000000000000000000000000000000000000020000000000000004000000000000000000000000020000000000000000000000000000000000000000000000000000000000000020000f90319f901dc949054f0d5f352fafe6ebf0ec14654da0362dc96caf842a0f6a97944f31ea060dfde0566e4167c1a1082551e64b60ecb14d599a9d023d451a00000000000000000000000000000000000000000000000000000000000011eb6b901800000000000000000000000000000000000000000000000d51cfff1e9a1af7c000000000000000000000000006af57e73d328e2a8ec95e01178d1e2a2a387d66a00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140000000000000000000000012332e3d78c6cc4a1a0c4dae81535bc000065fa80300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000d51cfff1e9a1af7c000000000000000000000000000000000000000000000000d51cfff1e9a1af7c000000000000000000000000000000000000000000000000d51cfff1e9a1af7c000000000000000000000000000000000000000000000000d51cfff1e9a1af7c0000000000000000000000000000000000000000000000000000000000000000040001020300000000000000000000000000000000000000000000000000000000f89b949054f0d5f352fafe6ebf0ec14654da0362dc96caf863a00109fc6f55cf40689f02fbaad7af7fe7bbac8a3d2186600afc7d3e10cac60271a00000000000000000000000000000000000000000000000000000000000011eb6a00000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000652d2a70f89b949054f0d5f352fafe6ebf0ec14654da0362dc96caf863a00559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5fa00000000000000000000000000000000000000000000000d51cfff1e9a1af7c00a00000000000000000000000000000000000000000000000000000000000011eb6a000000000000000000000000000000000000000000000000000000000652d2a70","0x02f901e50183f8156cb9010000000000000000000000000000000000000000000000000000004000000000000000000000000000001000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000800000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8dbf8d994bbbf9614de2b788a66d970b552a79fae6419abdce1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000001c062a100000000000000000000000000000000000000000000000000000000652d2a6c000000000000000000000000000000000000000000000000000000000000000853414e442f555344000000000000000000000000000000000000000000000000","0x02f901e50183f8ae31b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000f8dbf8d994e5d686595da780e6fbe88c31b77c1225974c89fbe1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000024df3d91e000000000000000000000000000000000000000000000000000000000652d2a6d00000000000000000000000000000000000000000000000000000000000000074554482f55534400000000000000000000000000000000000000000000000000","0x02f901e50183f93c06b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200f8dbf8d99439f46d72bb20c7bcb8a2cdf52630fac1496e859ae1a0a7fc99ed7617309ee23f63ae90196a1e490d362e6f6a547a59bc809ee2291782b8a000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000005f4f04b00000000000000000000000000000000000000000000000000000000652d2a6e0000000000000000000000000000000000000000000000000000000000000008555344432f555344000000000000000000000000000000000000000000000000","0x02f901090183f9a412b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f901c80183faf748b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000080000000000000004000000000800000000000000000000000000000000000000000000000200000000000000000400000000010000000000000000000000000000000000000000000000004800200000000000000000004000000010000000000000000000000000000000f8bef8bc94e5ff3b57695079f808a24256734483cd3889fa9ef884a0a7aaf2512769da4e444e3de247be2564225c2e7a8f74cfe528e46e17d24868e2a08a767b2e89133b95f135e6803d3b75eb52b9636707f38d986de63283fd028beba0000000000000000000000000000000000000000000000000000000000000803ca000000000000000000000000000000000000000000000000000000000003c1c98a000000000000000000000000000000000000000000000000000000000652d2a70","0x02f901090183fb5cb4b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f901090183fbb880b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f901090183fdf200b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f901090183fe5538b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f901090183febd24b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0xf90246018401009066b9010000000000000002000000000000000000000000000000000000800000000000000000000000000000000000000800000000000000000000000000000000000000000100000000000000000008020000000000040000000000000000000000000000000000000008000000000000000000100000000000000000800010800000000000000000000000000000010000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000002000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040000000004000000000000044f9013af89b9470e53130c4638aa80d5a8abf12983f66e0b1d05ff863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000003e62eb1d9f503f1db36bcfcabdaa7488718eee09a0000000000000000000000000e8c84a631d71e1bb7083d3a82a3a74870a286b97a0000000000000000000000000000000000000000000000000016345785d8a0000f89b943e62eb1d9f503f1db36bcfcabdaa7488718eee09f863a0cb339b570a7f0b25afa7333371ff11192092a0aeace12b671f4c212f2815c6fea0000000000000000000000000000000000000000000000000000000000000235aa0000000000000000000000000e8c84a631d71e1bb7083d3a82a3a74870a286b97a0191ae0366d4470dec94ac0ad040496453fecc903ffbad13da54e39498f84b0ff","0x02f9010a01840100f0f6b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f9010a0184010158f2b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f9010a01840101d1feb9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f9010a0184010239f6b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f9010a01840102a1f2b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f90365018401048fdfb9010000000002000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000020000000000000002000000000000000000800000008000000000000040000000000000000002000000000000000000000000000100000000200000000000000200000000010000800000000000000000000000008000000000000000000000000000000000000000004000000000000000000000000800000000000000000000008000000002000000000000002000000000000000000000000000000000000800000000400000000000000000000002000000000000000000000004000000000000000000000000200f90259f89b948f6d296024766b919473f0ef3b1f7addd3f710dff863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000003dd070f9ee183bd667700d668b35b8932438118ea0000000000000000000000000f2ce1c36503401e5fcdecb17b53ac20939ac05d6a000000000000000000000000000000000000000000000000000000000000004d6f89b94d87ba7a50b2e7e660f678a895e4b72e7cb4ccd9cf863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000f2ce1c36503401e5fcdecb17b53ac20939ac05d6a00000000000000000000000003dd070f9ee183bd667700d668b35b8932438118ea00000000000000000000000000000000000000000000000000000000000550ab9f9011c943dd070f9ee183bd667700d668b35b8932438118ef863a0c42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67a0000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564a0000000000000000000000000f2ce1c36503401e5fcdecb17b53ac20939ac05d6b8a0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2a0000000000000000000000000000000000000000000000000000000000550ab90000000000000000000000000000000000000042fb2bb8fcdc72e6c302336a2800000000000000000000000000000000000000000000000000000000609fce5a000000000000000000000000000000000000000000000000000000000001487c","0x02f9010a01840105994fb9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f9010a01840106126bb9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0xf9018601840106f418b9010000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000001000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000010f87bf87994b33a774f60c3eeea880c09bd56f18def648f8fbbe1a0b78ebc573f1f889ca9e1e0fb62c843c836f3d3a2e1f43ef62940e9b894f4ea4cb8400000000000000000000000000000000000000000000000000e507b8392b34d0000000000000000000000000000000000000000000000000000000000652d2a70","0x02f9010a018401075be8b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f901c901840108af12b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000100000000000000040000000000000000000000000000000000000000000000020000000000000000000000000000000000080000000100000000000000000000000000000000000000200000000000000000000000000000000000000004000020000800000000000000000000000000000000000000000000000000000000000000000000000000002000400000000000000000000000000000000000040000000000000000000001000000000000000000000000000000000000000000040000f8bef8bc943f97a3e25166de26eef93ad91e382215b21fecf7f884a0a7aaf2512769da4e444e3de247be2564225c2e7a8f74cfe528e46e17d24868e2a048f9d6c5064b083c5c5f17c6f18f8ac529863c506fc2d65b5ebb26571dfa1ec0a00000000000000000000000000000000000000000000000000000000000007097a0000000000000000000000000000000000000000000000000000000000034c740a000000000000000000000000000000000000000000000000000000000652d2a70","0x02f9010a01840109284ab9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f9010a01840109a406b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f9010a0184010a1d2eb9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f9010a0184010a8536b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f9010a0184010aead2b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f9010a0184010b52b2b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f9010a0184010bc95ab9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0x02f9010a0184010c428ab9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0","0xf901a80184010cc606b9010000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000080000000000000020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000040001000000000000000000000000000000000000000002000000008000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000f89df89b94ccb2505976e9d2fd355c73c3f1a004446d1dfedaf863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000c813edb526830d24a2ce5801d9ef5026a3967529a00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000a"]} diff --git a/go/proxyd/tools/mockserver/node2.yml b/go/proxyd/tools/mockserver/node2.yml new file mode 100644 index 0000000000..b94ee7af25 --- /dev/null +++ b/go/proxyd/tools/mockserver/node2.yml @@ -0,0 +1,44 @@ +- method: eth_getBlockByNumber + block: latest + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash2", + "number": "0x2" + } + } +- method: eth_getBlockByNumber + block: 0x1 + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash1", + "number": "0x1" + } + } +- method: eth_getBlockByNumber + block: 0x2 + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash2", + "number": "0x2" + } + } +- method: eth_getBlockByNumber + block: 0x3 + response: > + { + "jsonrpc": "2.0", + "id": 67, + "result": { + "hash": "hash3", + "number": "0x3" + } + } \ No newline at end of file diff --git a/integration-tests/contracts/MockGovernorBravoDelegate.sol b/integration-tests/contracts/MockGovernorBravoDelegate.sol index d22f9bd308..4fbe8e1d10 100644 --- a/integration-tests/contracts/MockGovernorBravoDelegate.sol +++ b/integration-tests/contracts/MockGovernorBravoDelegate.sol @@ -2,7 +2,7 @@ pragma solidity ^0.5.16; pragma experimental ABIEncoderV2; -import "@boba/contracts/contracts/DAO/governance/GovernorBravoDelegate.sol"; +import "@bobanetwork/contracts/contracts/DAO/governance/GovernorBravoDelegate.sol"; interface IMockGovernorBravoDelegate { @@ -37,4 +37,4 @@ contract MockGovernorBravoDelegate is GovernorBravoDelegate { emit VotingPeriodSet(oldVotingPeriod, votingPeriod); } -} \ No newline at end of file +} diff --git a/integration-tests/contracts/MockTimelock.sol b/integration-tests/contracts/MockTimelock.sol index e8857c2d13..7937c63ee5 100644 --- a/integration-tests/contracts/MockTimelock.sol +++ b/integration-tests/contracts/MockTimelock.sol @@ -1,7 +1,7 @@ //SPDX-License-Identifier: UNLICENSED pragma solidity ^0.5.16; -import "@boba/contracts/contracts/DAO/governance/Timelock.sol"; +import "@bobanetwork/contracts/contracts/DAO/governance/Timelock.sol"; import { IMockGovernorBravoDelegate } from "./MockGovernorBravoDelegate.sol"; contract MockTimelock is Timelock { @@ -26,4 +26,4 @@ contract MockTimelock is Timelock { require(msg.sender == owner); IMockGovernorBravoDelegate(governor)._setVotingDelayMock(value); } -} \ No newline at end of file +} diff --git a/integration-tests/contracts/TestExtraDataL1StandardERC721.sol b/integration-tests/contracts/TestExtraDataL1StandardERC721.sol index b6ff4b72da..84e2a8817f 100644 --- a/integration-tests/contracts/TestExtraDataL1StandardERC721.sol +++ b/integration-tests/contracts/TestExtraDataL1StandardERC721.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity >0.7.5; -import "@boba/contracts/contracts/standards/L1StandardERC721.sol"; +import "@bobanetwork/contracts/contracts/standards/L1StandardERC721.sol"; /** * Sample L1 representation of TestExtraDataERC721 diff --git a/integration-tests/contracts/TestExtraDataL2StandardERC721.sol b/integration-tests/contracts/TestExtraDataL2StandardERC721.sol index 4be1ecbf88..15b2df6af4 100644 --- a/integration-tests/contracts/TestExtraDataL2StandardERC721.sol +++ b/integration-tests/contracts/TestExtraDataL2StandardERC721.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity >0.7.5; -import "@boba/contracts/contracts/standards/L2StandardERC721.sol"; +import "@bobanetwork/contracts/contracts/standards/L2StandardERC721.sol"; /** * Sample L2 representation of TestExtraDataERC721 diff --git a/integration-tests/contracts/TestFailingMintL1StandardERC1155.sol b/integration-tests/contracts/TestFailingMintL1StandardERC1155.sol index e401e24bd8..2e9f1e70ec 100644 --- a/integration-tests/contracts/TestFailingMintL1StandardERC1155.sol +++ b/integration-tests/contracts/TestFailingMintL1StandardERC1155.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity >0.7.5; -import "@boba/contracts/contracts/standards/L1StandardERC1155.sol"; +import "@bobanetwork/contracts/contracts/standards/L1StandardERC1155.sol"; /** * A Failing mint L1ERC1155 contract diff --git a/integration-tests/contracts/TestFailingMintL1StandardERC721.sol b/integration-tests/contracts/TestFailingMintL1StandardERC721.sol index f7208ec34a..fa10d117ae 100644 --- a/integration-tests/contracts/TestFailingMintL1StandardERC721.sol +++ b/integration-tests/contracts/TestFailingMintL1StandardERC721.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity >0.7.5; -import "@boba/contracts/contracts/standards/L1StandardERC721.sol"; +import "@bobanetwork/contracts/contracts/standards/L1StandardERC721.sol"; /** * A Failing mint L1ERC721 contract diff --git a/integration-tests/contracts/TestFailingMintL2StandardERC1155.sol b/integration-tests/contracts/TestFailingMintL2StandardERC1155.sol index 0896e56896..5b25dfff70 100644 --- a/integration-tests/contracts/TestFailingMintL2StandardERC1155.sol +++ b/integration-tests/contracts/TestFailingMintL2StandardERC1155.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity >0.7.5; -import "@boba/contracts/contracts/standards/L2StandardERC1155.sol"; +import "@bobanetwork/contracts/contracts/standards/L2StandardERC1155.sol"; /** * A Failing mint L2ERC1155 contract diff --git a/integration-tests/contracts/TestFailingMintL2StandardERC721.sol b/integration-tests/contracts/TestFailingMintL2StandardERC721.sol index 44c6998861..3d838d5901 100644 --- a/integration-tests/contracts/TestFailingMintL2StandardERC721.sol +++ b/integration-tests/contracts/TestFailingMintL2StandardERC721.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity >0.7.5; -import "@boba/contracts/contracts/standards/L2StandardERC721.sol"; +import "@bobanetwork/contracts/contracts/standards/L2StandardERC721.sol"; /** * A Failing mint L2ERC721 contract diff --git a/integration-tests/contracts/TestUniqueDataL1StandardERC721.sol b/integration-tests/contracts/TestUniqueDataL1StandardERC721.sol index 507f5135b5..ec4ec2c801 100644 --- a/integration-tests/contracts/TestUniqueDataL1StandardERC721.sol +++ b/integration-tests/contracts/TestUniqueDataL1StandardERC721.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity >0.7.5; -import "@boba/contracts/contracts/standards/L1StandardERC721.sol"; +import "@bobanetwork/contracts/contracts/standards/L1StandardERC721.sol"; /** * Sample L1 representation of TestUniqueDataERC721 diff --git a/integration-tests/contracts/TestUniqueDataL2StandardERC721.sol b/integration-tests/contracts/TestUniqueDataL2StandardERC721.sol index 55ec5703a6..313ee0f808 100644 --- a/integration-tests/contracts/TestUniqueDataL2StandardERC721.sol +++ b/integration-tests/contracts/TestUniqueDataL2StandardERC721.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity >0.7.5; -import "@boba/contracts/contracts/standards/L2StandardERC721.sol"; +import "@bobanetwork/contracts/contracts/standards/L2StandardERC721.sol"; /** * Sample L2 representation of TestUniqueDataERC721 diff --git a/integration-tests/package.json b/integration-tests/package.json index 2001fec9a2..63505012c4 100644 --- a/integration-tests/package.json +++ b/integration-tests/package.json @@ -20,13 +20,13 @@ "devDependencies": { "@babel/eslint-parser": "^7.18.2", "@bobanetwork/accountabstraction": "*", - "@boba/api": "0.0.1", - "@boba/contracts": "0.0.1", - "@boba/teleportation": "1.0.0", + "@bobanetwork/api": "0.0.1", + "@bobanetwork/teleportation": "1.0.0", + "@bobanetwork/contracts": "0.0.2", "@bobanetwork/bundler_sdk": "*", - "@eth-optimism/contracts": "^0.5.11", + "@bobanetwork/core_contracts": "^0.5.13", "@eth-optimism/core-utils": "0.8.1", - "@eth-optimism/sdk": "1.0.1", + "@bobanetwork/sdk": "1.0.7", "@ethersproject/abstract-provider": "^5.5.0", "@ethersproject/providers": "^5.5.3", "@ethersproject/transactions": "^5.5.0", diff --git a/integration-tests/test/alt-l2/basic-l1-l2-communication.spec.ts b/integration-tests/test/alt-l2/basic-l1-l2-communication.spec.ts index 6b971ead98..6fba86bdd0 100644 --- a/integration-tests/test/alt-l2/basic-l1-l2-communication.spec.ts +++ b/integration-tests/test/alt-l2/basic-l1-l2-communication.spec.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { Contract, ContractFactory } from 'ethers' import { ethers } from 'hardhat' -import { MessageDirection, MessageStatus } from '@eth-optimism/sdk' +import { MessageDirection, MessageStatus } from '@bobanetwork/sdk' import { applyL1ToL2Alias, awaitCondition, diff --git a/integration-tests/test/alt-l2/basic_nft.spec.ts b/integration-tests/test/alt-l2/basic_nft.spec.ts index 425f80088b..f638730021 100644 --- a/integration-tests/test/alt-l2/basic_nft.spec.ts +++ b/integration-tests/test/alt-l2/basic_nft.spec.ts @@ -5,7 +5,7 @@ const expect = chai.expect import { Contract, BigNumber } from 'ethers' -import { getBobaContractAt, deployBobaContractCore } from '@boba/contracts' +import { getBobaContractAt, deployBobaContractCore } from '@bobanetwork/contracts' import { OptimismEnv } from './shared/env' diff --git a/integration-tests/test/alt-l2/boba-api.spec.ts b/integration-tests/test/alt-l2/boba-api.spec.ts index 431a955383..548ef85a60 100644 --- a/integration-tests/test/alt-l2/boba-api.spec.ts +++ b/integration-tests/test/alt-l2/boba-api.spec.ts @@ -4,8 +4,8 @@ chai.use(chaiAsPromised) /* Imports: External */ import { ethers, BigNumber, Contract, Wallet } from 'ethers' -import { predeploys, getContractFactory } from '@eth-optimism/contracts' -import { mainnetSwapNativeTokenForBOBA } from '@boba/api' +import { predeploys, getContractFactory } from '@bobanetwork/core_contracts' +import { mainnetSwapNativeTokenForBOBA } from '@bobanetwork/api' import ethSigUtil from 'eth-sig-util' import util from 'util' diff --git a/integration-tests/test/alt-l2/boba-fee-payment.spec.ts b/integration-tests/test/alt-l2/boba-fee-payment.spec.ts index 798f668068..d0b977e350 100644 --- a/integration-tests/test/alt-l2/boba-fee-payment.spec.ts +++ b/integration-tests/test/alt-l2/boba-fee-payment.spec.ts @@ -4,7 +4,7 @@ chai.use(chaiAsPromised) import { ethers } from 'hardhat' import { BigNumber, Contract, utils, ContractFactory } from 'ethers' import ethSigUtil from 'eth-sig-util' -import { predeploys, getContractFactory } from '@eth-optimism/contracts' +import { predeploys, getContractFactory } from '@bobanetwork/core_contracts' /* Imports: Internal */ import { OptimismEnv } from './shared/env' diff --git a/integration-tests/test/alt-l2/boba_aa_alt_fee_token.spec.ts b/integration-tests/test/alt-l2/boba_aa_alt_fee_token.spec.ts index d1b6016904..cbf2fc39d2 100644 --- a/integration-tests/test/alt-l2/boba_aa_alt_fee_token.spec.ts +++ b/integration-tests/test/alt-l2/boba_aa_alt_fee_token.spec.ts @@ -9,12 +9,12 @@ import { getFilteredLogIndex } from './shared/utils' import { OptimismEnv } from './shared/env' import { hexConcat, hexZeroPad, parseEther } from 'ethers/lib/utils' -import { predeploys } from '@eth-optimism/contracts' +import { predeploys } from '@bobanetwork/core_contracts' // use local sdk import { PaymasterAPI, SimpleAccountAPI } from "@bobanetwork/bundler_sdk"; import SimpleAccountJson from '@bobanetwork/accountabstraction/artifacts/contracts/samples/SimpleAccount.sol/SimpleAccount.json' import SimpleAccountFactoryJson from '@bobanetwork/accountabstraction/artifacts/contracts/samples/SimpleAccountFactory.sol/SimpleAccountFactory.json' -import L2StandardERC20Json from '@eth-optimism/contracts/artifacts/contracts/standards/L2StandardERC20.sol/L2StandardERC20.json' +import L2StandardERC20Json from '@bobanetwork/core_contracts/artifacts/contracts/standards/L2StandardERC20.sol/L2StandardERC20.json' import EntryPointJson from '@bobanetwork/accountabstraction/artifacts/contracts/core/EntryPoint.sol/EntryPoint.json' import SampleRecipientJson from '../../artifacts/contracts/SampleRecipient.sol/SampleRecipient.json' import { HttpRpcClient } from '@bobanetwork/bundler_sdk/dist/HttpRpcClient' diff --git a/integration-tests/test/alt-l2/boba_turing_credit.spec.ts b/integration-tests/test/alt-l2/boba_turing_credit.spec.ts index 067675787f..0081537e58 100644 --- a/integration-tests/test/alt-l2/boba_turing_credit.spec.ts +++ b/integration-tests/test/alt-l2/boba_turing_credit.spec.ts @@ -4,8 +4,8 @@ chai.use(chaiAsPromised) import { Contract, BigNumber, utils, ContractFactory } from 'ethers' import { ethers } from 'hardhat' -import { getContractFactory } from '@eth-optimism/contracts' -import { getBobaContractAt } from '@boba/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' +import { getBobaContractAt } from '@bobanetwork/contracts' import { OptimismEnv } from './shared/env' import { verifyStateRoots } from './shared/state-root-verification' diff --git a/integration-tests/test/alt-l2/bobalink.spec.ts b/integration-tests/test/alt-l2/bobalink.spec.ts index 15b47854ef..69912cf62d 100644 --- a/integration-tests/test/alt-l2/bobalink.spec.ts +++ b/integration-tests/test/alt-l2/bobalink.spec.ts @@ -3,9 +3,9 @@ import chaiAsPromised from 'chai-as-promised' chai.use(chaiAsPromised) import { ethers } from 'hardhat' import { Contract, ContractFactory, BigNumber, utils } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' -import { getBobaContractAt } from '@boba/contracts' -import { bobaLinkGetQuote } from '@boba/api' +import { getContractFactory } from '@bobanetwork/core_contracts' +import { getBobaContractAt } from '@bobanetwork/contracts' +import { bobaLinkGetQuote } from '@bobanetwork/api' import util from 'util' /* eslint-disable */ diff --git a/integration-tests/test/alt-l2/bridged-tokens.spec.ts b/integration-tests/test/alt-l2/bridged-tokens.spec.ts index 74bfebb8be..83cc68849f 100644 --- a/integration-tests/test/alt-l2/bridged-tokens.spec.ts +++ b/integration-tests/test/alt-l2/bridged-tokens.spec.ts @@ -1,7 +1,7 @@ import { BigNumber, Contract, ContractFactory, utils, Wallet } from 'ethers' import { ethers } from 'hardhat' -import { getContractFactory } from '@eth-optimism/contracts' -import { MessageStatus } from '@eth-optimism/sdk' +import { getContractFactory } from '@bobanetwork/core_contracts' +import { MessageStatus } from '@bobanetwork/sdk' import { expect } from './shared/setup' import { OptimismEnv } from './shared/env' diff --git a/integration-tests/test/alt-l2/erc1155_bridge.spec.ts b/integration-tests/test/alt-l2/erc1155_bridge.spec.ts index f09467d379..c6f9f5b7ed 100644 --- a/integration-tests/test/alt-l2/erc1155_bridge.spec.ts +++ b/integration-tests/test/alt-l2/erc1155_bridge.spec.ts @@ -7,7 +7,7 @@ import { getBobaContractAt, getBobaContractABI, deployBobaContractCore, -} from '@boba/contracts' +} from '@bobanetwork/contracts' import { getFilteredLogIndex } from './shared/utils' import { OptimismEnv } from './shared/env' diff --git a/integration-tests/test/alt-l2/erc20bridge.spec.ts b/integration-tests/test/alt-l2/erc20bridge.spec.ts index 36ef8fae55..4477a8b463 100644 --- a/integration-tests/test/alt-l2/erc20bridge.spec.ts +++ b/integration-tests/test/alt-l2/erc20bridge.spec.ts @@ -4,7 +4,7 @@ chai.use(chaiAsPromised) const expect = chai.expect import { Contract, utils, Wallet } from 'ethers' -import { getBobaContractAt } from '@boba/contracts' +import { getBobaContractAt } from '@bobanetwork/contracts' import { OptimismEnv } from './shared/env' diff --git a/integration-tests/test/alt-l2/fee-payment.spec.ts b/integration-tests/test/alt-l2/fee-payment.spec.ts index de20a1ad2d..fdc2315751 100644 --- a/integration-tests/test/alt-l2/fee-payment.spec.ts +++ b/integration-tests/test/alt-l2/fee-payment.spec.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { ethers, BigNumber, Contract, utils } from 'ethers' -import { predeploys, getContractFactory } from '@eth-optimism/contracts' -import { deployBobaContractCore } from '@boba/contracts' +import { predeploys, getContractFactory } from '@bobanetwork/core_contracts' +import { deployBobaContractCore } from '@bobanetwork/contracts' /* Imports: Internal */ import { expect } from './shared/setup' diff --git a/integration-tests/test/alt-l2/mrf_lp.spec.ts b/integration-tests/test/alt-l2/mrf_lp.spec.ts index 7e976e30b7..5a93948768 100644 --- a/integration-tests/test/alt-l2/mrf_lp.spec.ts +++ b/integration-tests/test/alt-l2/mrf_lp.spec.ts @@ -3,12 +3,12 @@ import chaiAsPromised from 'chai-as-promised' chai.use(chaiAsPromised) import { ethers } from 'hardhat' import { Contract, BigNumber, utils } from 'ethers' -import { getContractFactory, predeploys } from '@eth-optimism/contracts' +import { getContractFactory, predeploys } from '@bobanetwork/core_contracts' import { deployBobaContractCore, getBobaContractABI, getBobaContractAt, -} from '@boba/contracts' +} from '@bobanetwork/contracts' import { expectLogs, getGasLimitOption } from './shared/utils' import { OptimismEnv } from './shared/env' diff --git a/integration-tests/test/alt-l2/mrf_message.spec.ts b/integration-tests/test/alt-l2/mrf_message.spec.ts index 727af6db24..e5e14e86eb 100644 --- a/integration-tests/test/alt-l2/mrf_message.spec.ts +++ b/integration-tests/test/alt-l2/mrf_message.spec.ts @@ -2,7 +2,7 @@ import chai from 'chai' import chaiAsPromised from 'chai-as-promised' chai.use(chaiAsPromised) import { Contract } from 'ethers' -import { getBobaContractAt } from '@boba/contracts' +import { getBobaContractAt } from '@bobanetwork/contracts' import { OptimismEnv } from './shared/env' diff --git a/integration-tests/test/alt-l2/native-boba-ovm-calls.spec.ts b/integration-tests/test/alt-l2/native-boba-ovm-calls.spec.ts index c0f9f62c43..66c36acc11 100644 --- a/integration-tests/test/alt-l2/native-boba-ovm-calls.spec.ts +++ b/integration-tests/test/alt-l2/native-boba-ovm-calls.spec.ts @@ -4,7 +4,7 @@ import chai, { expect } from 'chai' import { encodeSolidityRevertMessage, approveERC20 } from './shared/utils' import { OptimismEnv } from './shared/env' import { solidity } from 'ethereum-waffle' -import { getContractFactory, predeploys } from '@eth-optimism/contracts' +import { getContractFactory, predeploys } from '@bobanetwork/core_contracts' chai.use(solidity) diff --git a/integration-tests/test/alt-l2/native-boba.spec.ts b/integration-tests/test/alt-l2/native-boba.spec.ts index dbe1ed5b81..cd2659c146 100644 --- a/integration-tests/test/alt-l2/native-boba.spec.ts +++ b/integration-tests/test/alt-l2/native-boba.spec.ts @@ -1,6 +1,6 @@ /* Imports: External */ import { Wallet, utils, BigNumber, Contract } from 'ethers' -import { predeploys, getContractFactory } from '@eth-optimism/contracts' +import { predeploys, getContractFactory } from '@bobanetwork/core_contracts' import { expectApprox } from '@eth-optimism/core-utils' /* Imports: Internal */ diff --git a/integration-tests/test/alt-l2/nft_bridge.spec.ts b/integration-tests/test/alt-l2/nft_bridge.spec.ts index 23b5f9470c..227a79177c 100644 --- a/integration-tests/test/alt-l2/nft_bridge.spec.ts +++ b/integration-tests/test/alt-l2/nft_bridge.spec.ts @@ -7,7 +7,7 @@ import { deployBobaContractCore, getBobaContractABI, getBobaContractAt, -} from '@boba/contracts' +} from '@bobanetwork/contracts' import { getFilteredLogIndex } from './shared/utils' import { OptimismEnv } from './shared/env' diff --git a/integration-tests/test/alt-l2/ovmcontext.spec.ts b/integration-tests/test/alt-l2/ovmcontext.spec.ts index c159a61de5..a752249ddc 100644 --- a/integration-tests/test/alt-l2/ovmcontext.spec.ts +++ b/integration-tests/test/alt-l2/ovmcontext.spec.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { ethers } from 'hardhat' import { expectApprox } from '@eth-optimism/core-utils' -import { predeploys } from '@eth-optimism/contracts' +import { predeploys } from '@bobanetwork/core_contracts' import { Contract, BigNumber } from 'ethers' /* Imports: Internal */ diff --git a/integration-tests/test/alt-l2/queue-ingestion.spec.ts b/integration-tests/test/alt-l2/queue-ingestion.spec.ts index 8011558c45..2c9c86b9a4 100644 --- a/integration-tests/test/alt-l2/queue-ingestion.spec.ts +++ b/integration-tests/test/alt-l2/queue-ingestion.spec.ts @@ -1,7 +1,7 @@ /* Imports: Internal */ import { providers } from 'ethers' import { applyL1ToL2Alias } from '@eth-optimism/core-utils' -import { asL2Provider } from '@eth-optimism/sdk' +import { asL2Provider } from '@bobanetwork/sdk' /* Imports: External */ import { expect } from './shared/setup' diff --git a/integration-tests/test/alt-l2/routed_exit_fee.spec.ts b/integration-tests/test/alt-l2/routed_exit_fee.spec.ts index eeef4df110..30945b6b7b 100644 --- a/integration-tests/test/alt-l2/routed_exit_fee.spec.ts +++ b/integration-tests/test/alt-l2/routed_exit_fee.spec.ts @@ -2,8 +2,8 @@ import chai, { expect } from 'chai' import chaiAsPromised from 'chai-as-promised' chai.use(chaiAsPromised) import { Contract, ContractFactory, BigNumber, utils, ethers } from 'ethers' -import { getContractFactory, predeploys } from '@eth-optimism/contracts' -import { deployBobaContractCore, getBobaContractAt } from '@boba/contracts' +import { getContractFactory, predeploys } from '@bobanetwork/core_contracts' +import { deployBobaContractCore, getBobaContractAt } from '@bobanetwork/contracts' import { OptimismEnv } from './shared/env' import { approveERC20 } from './shared/utils' diff --git a/integration-tests/test/alt-l2/rpc.spec.ts b/integration-tests/test/alt-l2/rpc.spec.ts index 5e3834f745..2857250f21 100644 --- a/integration-tests/test/alt-l2/rpc.spec.ts +++ b/integration-tests/test/alt-l2/rpc.spec.ts @@ -1,6 +1,6 @@ /* Imports: External */ import { expectApprox, sleep } from '@eth-optimism/core-utils' -import { predeploys, getContractFactory } from '@eth-optimism/contracts' +import { predeploys, getContractFactory } from '@bobanetwork/core_contracts' import { Wallet, BigNumber, Contract, ContractFactory, constants } from 'ethers' import { serialize } from '@ethersproject/transactions' import { ethers } from 'hardhat' diff --git a/integration-tests/test/alt-l2/selfdestruct.spec.ts b/integration-tests/test/alt-l2/selfdestruct.spec.ts index d66e51c639..033360dbdd 100644 --- a/integration-tests/test/alt-l2/selfdestruct.spec.ts +++ b/integration-tests/test/alt-l2/selfdestruct.spec.ts @@ -4,7 +4,7 @@ chai.use(chaiAsPromised) const expect = chai.expect import { ethers } from 'hardhat' import { BigNumber, Contract, utils } from 'ethers' -import { predeploys, getContractFactory } from '@eth-optimism/contracts' +import { predeploys, getContractFactory } from '@bobanetwork/core_contracts' import { OptimismEnv } from './shared/env' diff --git a/integration-tests/test/alt-l2/shared/env.ts b/integration-tests/test/alt-l2/shared/env.ts index 342b8e735a..c47e4ef7f9 100644 --- a/integration-tests/test/alt-l2/shared/env.ts +++ b/integration-tests/test/alt-l2/shared/env.ts @@ -9,7 +9,7 @@ import { CrossChainMessenger, MessageStatus, MessageDirection, -} from '@eth-optimism/sdk' +} from '@bobanetwork/sdk' /* Imports: Internal */ import { diff --git a/integration-tests/test/alt-l2/shared/state-root-verification.ts b/integration-tests/test/alt-l2/shared/state-root-verification.ts index 3154e4376b..62561d884a 100644 --- a/integration-tests/test/alt-l2/shared/state-root-verification.ts +++ b/integration-tests/test/alt-l2/shared/state-root-verification.ts @@ -2,7 +2,7 @@ import chai, { expect } from 'chai' import chaiAsPromised from 'chai-as-promised' chai.use(chaiAsPromised) import { Contract, utils } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { sleep } from '@eth-optimism/core-utils' diff --git a/integration-tests/test/alt-l2/shared/utils.ts b/integration-tests/test/alt-l2/shared/utils.ts index fee5a13c50..cfd56a7e06 100644 --- a/integration-tests/test/alt-l2/shared/utils.ts +++ b/integration-tests/test/alt-l2/shared/utils.ts @@ -8,9 +8,9 @@ import { utils, constants, } from 'ethers' -import { getContractInterface, predeploys } from '@eth-optimism/contracts' +import { getContractInterface, predeploys } from '@bobanetwork/core_contracts' import { remove0x, sleep } from '@eth-optimism/core-utils' -import { asL2Provider } from '@eth-optimism/sdk' +import { asL2Provider } from '@bobanetwork/sdk' import { cleanEnv, str, num, bool, makeValidator } from 'envalid' import dotenv from 'dotenv' import { expectEvent } from '@openzeppelin/test-helpers' diff --git a/integration-tests/test/alt-l2/stress-tests.spec.ts b/integration-tests/test/alt-l2/stress-tests.spec.ts index a6960ed024..7b04a84eeb 100644 --- a/integration-tests/test/alt-l2/stress-tests.spec.ts +++ b/integration-tests/test/alt-l2/stress-tests.spec.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { Contract, Wallet, utils } from 'ethers' import { ethers } from 'hardhat' -import { getContractFactory, predeploys } from '@eth-optimism/contracts' +import { getContractFactory, predeploys } from '@bobanetwork/core_contracts' /* Imports: Internal */ import { expect } from './shared/setup' diff --git a/integration-tests/test/alt-l2/teleportation.spec.ts b/integration-tests/test/alt-l2/teleportation.spec.ts index a2c4125887..8add4c23d1 100644 --- a/integration-tests/test/alt-l2/teleportation.spec.ts +++ b/integration-tests/test/alt-l2/teleportation.spec.ts @@ -1,7 +1,7 @@ -import { expect } from '@boba/teleportation/test/setup' +import {expect} from '@bobanetwork/teleportation/test/setup' /* External Imports */ -import { ethers } from 'hardhat' +import {ethers} from 'hardhat' import { BigNumber, Contract, @@ -10,22 +10,23 @@ import { utils, Wallet, } from 'ethers' -import { orderBy } from 'lodash' +import {orderBy} from 'lodash' /* Imports: Artifacts */ -import TeleportationJson from '@boba/contracts/artifacts/contracts/Teleportation.sol/Teleportation.json' -import L1ERC20Json from '@boba/contracts/artifacts/contracts/test-helpers/L1ERC20.sol/L1ERC20.json' +import TeleportationJson from '@bobanetwork/contracts/artifacts/contracts/Teleportation.sol/Teleportation.json' +import L1ERC20Json from '@bobanetwork/contracts/artifacts/contracts/test-helpers/L1ERC20.sol/L1ERC20.json' /* Imports: Interface */ -import { ChainInfo } from '@boba/teleportation/src/utils/types' +import {ChainInfo} from '@bobanetwork/teleportation/src/utils/types' /* Imports: Core */ -import { TeleportationService } from '@boba/teleportation/src/service' +import {TeleportationService} from '@bobanetwork/teleportation/src/service' import { AppDataSource, historyDataRepository, -} from '@boba/teleportation/src/data-source' -import { OptimismEnv } from './shared/env' +} from '@bobanetwork/teleportation/src/data-source' +import {OptimismEnv} from './shared/env' +import {Asset} from "@bobanetwork/teleportation/src"; describe('teleportation', () => { let env: OptimismEnv @@ -61,19 +62,25 @@ describe('teleportation', () => { }) let chainId: number - let chainIdBnb: number + let chainIdBobaBnb: number let Factory__Teleportation: ContractFactory let Teleportation: Contract let TeleportationBNB: Contract let Factory__L2BOBA: ContractFactory let L2BOBA: Contract - let L2BobaOnBobaBnb: Contract + let L2BNBOnBobaBnb: Contract let L2BNBOnBobaEth: Contract + // Here to have an easy way to modify globally + const airdropConfig = { + airdropAmountWei: ethers.utils.parseEther('1'), + airdropCooldownSeconds: 1000, + } + before(async () => { chainId = (await ethers.provider.getNetwork()).chainId - chainIdBnb = chainId + 1 + chainIdBobaBnb = chainId + 1 Factory__Teleportation = new ethers.ContractFactory( TeleportationJson.abi, @@ -127,8 +134,8 @@ describe('teleportation', () => { teleportationAddress: Teleportation.address, height: 0, supportedAssets: { - [L2BOBA.address?.toLowerCase()]: 'BOBA', - [ethers.constants.AddressZero?.toLowerCase()]: 'ETH', + [L2BOBA.address?.toLowerCase()]: Asset.BOBA, + [ethers.constants.AddressZero?.toLowerCase()]: Asset.ETH, }, }, // bnb will be added in routing tests to have cleaner before hooks @@ -136,8 +143,8 @@ describe('teleportation', () => { selectedBobaChainsBnb = selectedBobaChains }) - const startTeleportationService = async (useBnb?: boolean) => { - const chainIdToUse = useBnb ? chainIdBnb : chainId + const startTeleportationService = async (useBnb?: boolean, airdropEnabled?: boolean) => { + const chainIdToUse = useBnb ? chainIdBobaBnb : chainId return new TeleportationService({ l2RpcProvider: ethers.provider, @@ -159,6 +166,10 @@ describe('teleportation', () => { awsKmsKeyId: process.env.TELEPORTATION_AWS_KMS_KEY_ID ?? '3', awsKmsEndpoint: process.env.TELEPORTATION_AWS_KMS_ENDPOINT ?? 'http://kms:8888/', awsKmsRegion: process.env.TELEPORTATION_AWS_KMS_REGION ?? 'us-east-1', + disableDisburserCheck: true, + }, + airdropConfig: { + ...airdropConfig, airdropEnabled, }, }) } @@ -548,7 +559,7 @@ describe('teleportation', () => { const teleportationService = await startTeleportationService() await teleportationService.init() - await historyDataRepository.delete({ chainId }) + await historyDataRepository.delete({chainId}) const latestBlock = await ethers.provider.getBlockNumber() const depositTeleportations = { @@ -580,14 +591,14 @@ describe('teleportation', () => { await Teleportation.deployTransaction.wait() // deploy other token for routing tests - L2BobaOnBobaBnb = await Factory__L2BOBA.deploy( + L2BNBOnBobaBnb = await Factory__L2BOBA.deploy( utils.parseEther('100000000000'), 'BOBA', 'BOBA', 18 ) - await L2BobaOnBobaBnb.deployTransaction.wait() - await L2BobaOnBobaBnb.transfer(address1, utils.parseEther('100000000')) + await L2BNBOnBobaBnb.deployTransaction.wait() + await L2BNBOnBobaBnb.transfer(address1, utils.parseEther('100000000')) // deploy other token for routing tests L2BNBOnBobaEth = await Factory__L2BOBA.deploy( @@ -604,7 +615,7 @@ describe('teleportation', () => { // add the supported chain & token await TeleportationBNB.addSupportedToken( - L2BobaOnBobaBnb.address, + L2BNBOnBobaBnb.address, chainId, defaultMinDepositAmount, defaultMaxDepositAmount, @@ -621,14 +632,14 @@ describe('teleportation', () => { // add support on previous network await Teleportation.addSupportedToken( L2BNBOnBobaEth.address, - chainIdBnb, + chainIdBobaBnb, defaultMinDepositAmount, defaultMaxDepositAmount, defaultMaxTransferPerDay ) await Teleportation.addSupportedToken( L2BOBA.address, - chainIdBnb, + chainIdBobaBnb, defaultMinDepositAmount, defaultMaxDepositAmount, defaultMaxTransferPerDay @@ -641,7 +652,7 @@ describe('teleportation', () => { // mock BNB network & overwrite prev network selectedBobaChains = [ { - chainId: chainIdBnb, + chainId: chainIdBobaBnb, url: 'http://localhost:8545', provider: ethers.provider, testnet: true, @@ -649,8 +660,8 @@ describe('teleportation', () => { teleportationAddress: TeleportationBNB.address, height: 0, supportedAssets: { - [L2BobaOnBobaBnb.address?.toLowerCase()]: 'BOBA', - [ethers.constants.AddressZero?.toLowerCase()]: 'BNB', // simulate BNB for native to token teleport + [L2BNBOnBobaBnb.address?.toLowerCase()]: Asset.BOBA, + [ethers.constants.AddressZero?.toLowerCase()]: Asset.BNB, // simulate BNB for native to token teleport }, }, ] @@ -664,9 +675,9 @@ describe('teleportation', () => { teleportationAddress: Teleportation.address, height: 0, supportedAssets: { - [L2BOBA.address?.toLowerCase()]: 'BOBA', - [ethers.constants.AddressZero?.toLowerCase()]: 'ETH', - [L2BNBOnBobaEth.address?.toLowerCase()]: 'BNB', + [L2BOBA.address?.toLowerCase()]: Asset.BOBA, + [ethers.constants.AddressZero?.toLowerCase()]: Asset.ETH, + [L2BNBOnBobaEth.address?.toLowerCase()]: Asset.BNB, }, }, ] @@ -678,12 +689,12 @@ describe('teleportation', () => { // deposit token const preBlockNumber = await ethers.provider.getBlockNumber() - await L2BobaOnBobaBnb.connect(signer).approve( + await L2BNBOnBobaBnb.connect(signer).approve( TeleportationBNB.address, utils.parseEther('10') ) await TeleportationBNB.connect(signer).teleportAsset( - L2BobaOnBobaBnb.address, + L2BNBOnBobaBnb.address, utils.parseEther('10'), chainId // toChainId ) @@ -703,7 +714,7 @@ describe('teleportation', () => { let disbursement = [] for (const event of events) { - const sourceChainId = chainIdBnb // event.args.sourceChainId -> (is correct, but we were mocking a fake chainId for testing) + const sourceChainId = chainIdBobaBnb // event.args.sourceChainId -> (is correct, but we were mocking a fake chainId for testing) const depositId = event.args.depositId const amount = event.args.amount const token = event.args.token @@ -765,7 +776,7 @@ describe('teleportation', () => { ethers.constants.AddressZero, // send native BNB utils.parseEther('10'), chainId, // toChainId - { value: utils.parseEther('10') } + {value: utils.parseEther('10')} ) const blockNumber = await ethers.provider.getBlockNumber() @@ -783,7 +794,7 @@ describe('teleportation', () => { let disbursement = [] for (const event of events) { - const sourceChainId = chainIdBnb // event.args.sourceChainId -> (is correct, but we were mocking a fake chainId for testing) + const sourceChainId = chainIdBobaBnb // event.args.sourceChainId -> (is correct, but we were mocking a fake chainId for testing) const depositId = event.args.depositId const amount = event.args.amount const token = event.args.token @@ -847,7 +858,7 @@ describe('teleportation', () => { await Teleportation.connect(signer).teleportAsset( L2BNBOnBobaEth.address, // send BNB as token utils.parseEther('10'), - chainIdBnb // toChainId + chainIdBobaBnb // toChainId ) const blockNumber = await ethers.provider.getBlockNumber() @@ -896,7 +907,7 @@ describe('teleportation', () => { disbursement = orderBy(disbursement, ['depositId'], ['asc']) const bnbChainInfo = selectedBobaChains.find( - (c) => c.chainId === chainIdBnb + (c) => c.chainId === chainIdBobaBnb ) if (!bnbChainInfo) { throw new Error('BNB provider not configured!') @@ -909,7 +920,7 @@ describe('teleportation', () => { await teleportationServiceBnb._disburseTx( disbursement, - chainIdBnb, + chainIdBobaBnb, blockNumber ) @@ -928,4 +939,585 @@ describe('teleportation', () => { ) }) }) + + describe('airdrop', () => { + before(async () => { + Factory__Teleportation = new ethers.ContractFactory( + TeleportationJson.abi, + TeleportationJson.bytecode, + wallet1 + ) + + Teleportation = await Factory__Teleportation.deploy() + await Teleportation.deployTransaction.wait() + + Factory__L2BOBA = new ethers.ContractFactory( + L1ERC20Json.abi, + L1ERC20Json.bytecode, + signer + ) + L2BOBA = await Factory__L2BOBA.deploy( + utils.parseEther('100000000000'), + 'BOBA', + 'BOBA', + 18 + ) + await L2BOBA.deployTransaction.wait() + await L2BOBA.transfer(address1, utils.parseEther('100000000')) + + // intialize the teleportation contract + await Teleportation.initialize() + + + TeleportationBNB = await Factory__Teleportation.deploy() + await Teleportation.deployTransaction.wait() + + // deploy other token for routing tests + L2BNBOnBobaBnb = await Factory__L2BOBA.deploy( + utils.parseEther('100000000000'), + 'BOBA', + 'BOBA', + 18 + ) + await L2BNBOnBobaBnb.deployTransaction.wait() + await L2BNBOnBobaBnb.transfer(address1, utils.parseEther('100000000')) + + // deploy other token for routing tests + L2BNBOnBobaEth = await Factory__L2BOBA.deploy( + utils.parseEther('100000000000'), + 'BNB', + 'BNB', + 18 + ) + await L2BNBOnBobaEth.deployTransaction.wait() + await L2BNBOnBobaEth.transfer(address1, utils.parseEther('100000000')) + + // intialize the teleportation contract + await TeleportationBNB.initialize() + + // add the supported chain & token + await TeleportationBNB.addSupportedToken( + L2BNBOnBobaBnb.address, + chainId, + defaultMinDepositAmount, + defaultMaxDepositAmount, + defaultMaxTransferPerDay + ) + await TeleportationBNB.addSupportedToken( + ethers.constants.AddressZero, + chainId, + defaultMinDepositAmount, + defaultMaxDepositAmount, + defaultMaxTransferPerDay + ) + + // add support on previous network + await Teleportation.addSupportedToken( + L2BNBOnBobaEth.address, + chainIdBobaBnb, + defaultMinDepositAmount, + defaultMaxDepositAmount, + defaultMaxTransferPerDay + ) + await Teleportation.addSupportedToken( + L2BOBA.address, + chainIdBobaBnb, + defaultMinDepositAmount, + defaultMaxDepositAmount, + defaultMaxTransferPerDay + ) + + console.log( + `Teleportation on ETH: ${Teleportation.address} / on BNB: ${TeleportationBNB.address}` + ) + + // mock BNB network & overwrite prev network + selectedBobaChains = [ + { + chainId: chainIdBobaBnb, + url: 'http://localhost:8545', + provider: ethers.provider, + testnet: true, + name: 'localhost:bnb', + teleportationAddress: TeleportationBNB.address, + height: 0, + supportedAssets: { + [L2BNBOnBobaBnb.address?.toLowerCase()]: Asset.BNB, + [ethers.constants.AddressZero]: Asset.BOBA, // simulate BNB for native to token teleport + }, + }, + ] + selectedBobaChainsBnb = [ + { + chainId, + url: 'http://localhost:8545', + provider: ethers.provider, + testnet: true, + name: 'localhost', + teleportationAddress: Teleportation.address, + height: 0, + supportedAssets: { + [L2BOBA.address?.toLowerCase()]: Asset.BOBA, + [ethers.constants.AddressZero]: Asset.ETH, + [L2BNBOnBobaEth.address?.toLowerCase()]: Asset.BNB, + }, + }, + ] + }) + + it('receive gas on airdrop', async () => { + const teleportationServiceBnb = await startTeleportationService(true) + await teleportationServiceBnb.init() + + // deposit token + const preBlockNumber = await ethers.provider.getBlockNumber() + await L2BNBOnBobaBnb.connect(signer).approve( + TeleportationBNB.address, + utils.parseEther('10') + ) + await TeleportationBNB.connect(signer).teleportAsset( + L2BNBOnBobaBnb.address, + utils.parseEther('10'), + chainId // toChainId + ) + + const blockNumber = await ethers.provider.getBlockNumber() + const events = await teleportationServiceBnb._getEvents( + TeleportationBNB, + TeleportationBNB.filters.AssetReceived(), + preBlockNumber, + blockNumber + ) + + expect(events.length).to.be.gt(0, 'Event length must be greater than 0') + + const teleportationServiceEth = await startTeleportationService(false, true) + await teleportationServiceEth.init() + + // random address to ensure balance = 0 to be eligible for airdrop + const randAddress = ethers.Wallet.createRandom().address + + const lastEvent = events[events.length - 1] + const sourceChainId = chainIdBobaBnb // event.args.sourceChainId -> (is correct, but we were mocking a fake chainId for testing) + const depositId = lastEvent.args.depositId + const amount = lastEvent.args.amount + const token = lastEvent.args.token + const emitter = lastEvent.args.emitter + + const receivingChainTokenAddr = + teleportationServiceEth._getSupportedDestChainTokenAddrBySourceChainTokenAddr( + token, + sourceChainId + ) + expect(receivingChainTokenAddr).to.be.eq( + L2BNBOnBobaEth.address?.toLowerCase(), + 'BNB token address on BNB not correctly routed' + ) + + let disbursement = [ + { + token: receivingChainTokenAddr, + amount: amount.toString(), + addr: randAddress, + depositId: depositId.toNumber(), + sourceChainId: sourceChainId.toString(), + }, + ] + + console.log('Added disbursement: ', disbursement) + + disbursement = orderBy(disbursement, ['depositId'], ['asc']) + + const preNativeBalance = await ethers.provider.getBalance(address1) + const preSignerNativeBalance = await ethers.provider.getBalance(randAddress) + const preTokenBalance = await L2BNBOnBobaBnb.balanceOf(address1) + const preSignerTokenBalance = await L2BNBOnBobaBnb.balanceOf(randAddress) + + await teleportationServiceEth._disburseTx( + disbursement, + chainId, + blockNumber + ) + + const postNativeBalance = await ethers.provider.getBalance(address1) + const postSignerNativeBalance = await ethers.provider.getBalance(randAddress) + const postTokenBalance = await L2BNBOnBobaEth.balanceOf(address1) + const postSignerTokenBalance = await L2BNBOnBobaEth.balanceOf(randAddress) + + expect(preTokenBalance.sub(postTokenBalance)).to.be.eq( + utils.parseEther('10') + ) + expect(postSignerTokenBalance.sub(preSignerTokenBalance)).to.be.eq( + utils.parseEther('10') + ) + const gasDelta = ethers.utils.parseEther('0.003') + expect(preNativeBalance.sub(postNativeBalance)).to.be.closeTo(airdropConfig.airdropAmountWei, gasDelta) + expect(postSignerNativeBalance.sub(preSignerNativeBalance)).to.be.closeTo( + airdropConfig.airdropAmountWei, gasDelta + ) + }) + + it('should not receive gas on airdrop when airdrop disabled (e.g. for L1)', async () => { + const teleportationServiceBnb = await startTeleportationService(true) + await teleportationServiceBnb.init() + + // deposit token + const preBlockNumber = await ethers.provider.getBlockNumber() + await L2BNBOnBobaBnb.connect(signer).approve( + TeleportationBNB.address, + utils.parseEther('10') + ) + await TeleportationBNB.connect(signer).teleportAsset( + L2BNBOnBobaBnb.address, + utils.parseEther('10'), + chainId // toChainId + ) + + const blockNumber = await ethers.provider.getBlockNumber() + const events = await teleportationServiceBnb._getEvents( + TeleportationBNB, + TeleportationBNB.filters.AssetReceived(), + preBlockNumber, + blockNumber + ) + + expect(events.length).to.be.gt(0, 'Event length must be greater than 0') + + const teleportationServiceEth = await startTeleportationService(false, false) + await teleportationServiceEth.init() + + // random address to ensure balance = 0 to be eligible for airdrop + const randAddress = ethers.Wallet.createRandom().address + + const lastEvent = events[events.length - 1] + const sourceChainId = chainIdBobaBnb // event.args.sourceChainId -> (is correct, but we were mocking a fake chainId for testing) + const depositId = lastEvent.args.depositId + const amount = lastEvent.args.amount + const token = lastEvent.args.token + const emitter = lastEvent.args.emitter + + const receivingChainTokenAddr = + teleportationServiceEth._getSupportedDestChainTokenAddrBySourceChainTokenAddr( + token, + sourceChainId + ) + expect(receivingChainTokenAddr).to.be.eq( + L2BNBOnBobaEth.address?.toLowerCase(), + 'BNB token address on BNB not correctly routed' + ) + + let disbursement = [ + { + token: receivingChainTokenAddr, + amount: amount.toString(), + addr: randAddress, + depositId: depositId.toNumber(), + sourceChainId: sourceChainId.toString(), + }, + ] + + console.log('Added disbursement: ', disbursement) + + disbursement = orderBy(disbursement, ['depositId'], ['asc']) + + const preNativeBalance = await ethers.provider.getBalance(address1) + const preSignerNativeBalance = await ethers.provider.getBalance(randAddress) + const preTokenBalance = await L2BNBOnBobaEth.balanceOf(address1) + const preSignerTokenBalance = await L2BNBOnBobaEth.balanceOf(randAddress) + + await teleportationServiceEth._disburseTx( + disbursement, + chainId, + blockNumber + ) + + const postNativeBalance = await ethers.provider.getBalance(address1) + const postSignerNativeBalance = await ethers.provider.getBalance(randAddress) + const postTokenBalance = await L2BNBOnBobaEth.balanceOf(address1) + const postSignerTokenBalance = await L2BNBOnBobaEth.balanceOf(randAddress) + + expect(preTokenBalance.sub(postTokenBalance)).to.be.eq( + utils.parseEther('10') + ) + expect(postSignerTokenBalance.sub(preSignerTokenBalance)).to.be.eq( + utils.parseEther('10') + ) + const gasDelta = ethers.utils.parseEther('0.003') + expect(preNativeBalance.sub(postNativeBalance)).to.be.closeTo('0', gasDelta) + expect(postSignerNativeBalance.sub(preSignerNativeBalance)).to.be.closeTo( + '0', gasDelta + ) + }) + + it('should not airdrop if user has gas on destination network', async () => { + const teleportationServiceBnb = await startTeleportationService(true) + await teleportationServiceBnb.init() + + // deposit token + const preBlockNumber = await ethers.provider.getBlockNumber() + await L2BNBOnBobaBnb.connect(signer).approve( + TeleportationBNB.address, + utils.parseEther('10') + ) + await TeleportationBNB.connect(signer).teleportAsset( + L2BNBOnBobaBnb.address, + utils.parseEther('10'), + chainId // toChainId + ) + + const blockNumber = await ethers.provider.getBlockNumber() + const events = await teleportationServiceBnb._getEvents( + TeleportationBNB, + TeleportationBNB.filters.AssetReceived(), + preBlockNumber, + blockNumber + ) + + expect(events.length).to.be.gt(0, 'Event length must be greater than 0') + + const teleportationServiceEth = await startTeleportationService(false, true) + await teleportationServiceEth.init() + + const lastEvent = events[events.length - 1] + const sourceChainId = chainIdBobaBnb // event.args.sourceChainId -> (is correct, but we were mocking a fake chainId for testing) + const depositId = lastEvent.args.depositId + const amount = lastEvent.args.amount + const token = lastEvent.args.token + const emitter = lastEvent.args.emitter + + const receivingChainTokenAddr = + teleportationServiceEth._getSupportedDestChainTokenAddrBySourceChainTokenAddr( + token, + sourceChainId + ) + expect(receivingChainTokenAddr).to.be.eq( + L2BNBOnBobaEth.address?.toLowerCase(), + 'BNB token address on BNB not correctly routed' + ) + + let disbursement = [ + { + token: receivingChainTokenAddr, + amount: amount.toString(), + addr: emitter, + depositId: depositId.toNumber(), + sourceChainId: sourceChainId.toString(), + }, + ] + + console.log('Added disbursement: ', disbursement) + + disbursement = orderBy(disbursement, ['depositId'], ['asc']) + + const preNativeBalance = await ethers.provider.getBalance(address1) + const preSignerNativeBalance = await ethers.provider.getBalance(signerAddr) + const preTokenBalance = await L2BNBOnBobaEth.balanceOf(address1) + const preSignerTokenBalance = await L2BNBOnBobaEth.balanceOf(signerAddr) + + await teleportationServiceEth._disburseTx( + disbursement, + chainId, + blockNumber + ) + + const postNativeBalance = await ethers.provider.getBalance(address1) + const postSignerNativeBalance = await ethers.provider.getBalance(signerAddr) + const postTokenBalance = await L2BNBOnBobaEth.balanceOf(address1) + const postSignerTokenBalance = await L2BNBOnBobaEth.balanceOf(signerAddr) + + expect(preTokenBalance.sub(postTokenBalance)).to.be.eq( + utils.parseEther('10') + ) + expect(postSignerTokenBalance.sub(preSignerTokenBalance)).to.be.eq( + utils.parseEther('10') + ) + const gasDelta = ethers.utils.parseEther('0.003') + expect(preNativeBalance.sub(postNativeBalance)).to.be.closeTo('0', gasDelta) + expect(postSignerNativeBalance.sub(preSignerNativeBalance)).to.be.closeTo( + '0', gasDelta + ) + }) + + it('should not airdrop if user bridges asset that is native on destination network', async () => { + const teleportationServiceETH = await startTeleportationService(false) + await teleportationServiceETH.init() + + // deposit token + const amountToBridge = utils.parseEther('10') + const preBlockNumber = await ethers.provider.getBlockNumber() + await L2BOBA.connect(signer).approve( + Teleportation.address, + amountToBridge + ) + await Teleportation.connect(signer).teleportAsset( + L2BOBA.address, + amountToBridge, + chainIdBobaBnb // toChainId + ) + + const blockNumber = await ethers.provider.getBlockNumber() + const events = await teleportationServiceETH._getEvents( + Teleportation, + Teleportation.filters.AssetReceived(), + preBlockNumber, + blockNumber + ) + + expect(events.length).to.be.gt(0, 'Event length must be greater than 0') + + const teleportationServiceBnb = await startTeleportationService(true, true) + await teleportationServiceBnb.init() + + // random address to ensure balance = 0 to be eligible for airdrop + const randAddress = ethers.Wallet.createRandom().address + const lastEvent = events[events.length - 1] + const sourceChainId = lastEvent.args.sourceChainId + const depositId = lastEvent.args.depositId + const amount = lastEvent.args.amount + const token = lastEvent.args.token + const emitter = lastEvent.args.emitter + + const receivingChainTokenAddr = + teleportationServiceBnb._getSupportedDestChainTokenAddrBySourceChainTokenAddr( + token, + sourceChainId + ) + expect(receivingChainTokenAddr).to.be.eq( + ethers.constants.AddressZero, + 'BOBA token address on ETH not correctly routed' + ) + + let disbursement = [ + { + token: receivingChainTokenAddr, + amount: amount.toString(), + addr: randAddress, + depositId: depositId.toNumber(), + sourceChainId: sourceChainId.toString(), + }, + ] + + console.log('Added disbursement: ', disbursement) + + disbursement = orderBy(disbursement, ['depositId'], ['asc']) + + const preNativeBalance = await ethers.provider.getBalance(address1) + const preSignerNativeBalance = await ethers.provider.getBalance(randAddress) + + await teleportationServiceBnb._disburseTx( + disbursement, + chainId, + blockNumber + ) + + const postNativeBalance = await ethers.provider.getBalance(address1) + const postSignerNativeBalance = await ethers.provider.getBalance(randAddress) + + const gasDelta = ethers.utils.parseEther('0.003') + expect(preNativeBalance.sub(postNativeBalance)).to.be.closeTo(amountToBridge, gasDelta) + expect(postSignerNativeBalance.sub(preSignerNativeBalance)).to.be.eq(amountToBridge) + }) + + it('should not airdrop within cooldown period', async () => { + const teleportationServiceBnb = await startTeleportationService(true) + await teleportationServiceBnb.init() + + // deposit token + const preBlockNumber = await ethers.provider.getBlockNumber() + await L2BNBOnBobaBnb.connect(signer).approve( + TeleportationBNB.address, + utils.parseEther('20') + ) + await TeleportationBNB.connect(signer).teleportAsset( + L2BNBOnBobaBnb.address, + utils.parseEther('10'), + chainId // toChainId + ) + + const blockNumber = await ethers.provider.getBlockNumber() + const events = await teleportationServiceBnb._getEvents( + TeleportationBNB, + TeleportationBNB.filters.AssetReceived(), + preBlockNumber, + blockNumber + ) + + expect(events.length).to.be.gt(0, 'Event length must be greater than 0') + + const teleportationServiceEth = await startTeleportationService(false, true) + await teleportationServiceEth.init() + + const lastEvent = events[events.length - 1] + const randWallet = ethers.Wallet.createRandom().connect(Teleportation.provider) + const randAddress = randWallet.address + const sourceChainId = chainIdBobaBnb // event.args.sourceChainId -> (is correct, but we were mocking a fake chainId for testing) + const depositId = lastEvent.args.depositId + const amount = lastEvent.args.amount + const token = lastEvent.args.token + const emitter = lastEvent.args.emitter + + const receivingChainTokenAddr = + teleportationServiceEth._getSupportedDestChainTokenAddrBySourceChainTokenAddr( + token, + sourceChainId + ) + expect(receivingChainTokenAddr).to.be.eq( + L2BNBOnBobaEth.address?.toLowerCase(), + 'BNB token address on BNB not correctly routed' + ) + + let disbursement = [ + { + token: receivingChainTokenAddr, + amount: amount.toString(), + addr: randAddress, + depositId: depositId.toNumber(), + sourceChainId: sourceChainId.toString(), + }, + ] + + console.log('Added disbursements: ', disbursement) + + disbursement = orderBy(disbursement, ['depositId'], ['asc']) + + const preNativeBalance = await ethers.provider.getBalance(address1) + const preSignerNativeBalance = await ethers.provider.getBalance(randAddress) + const preTokenBalance = await L2BNBOnBobaEth.balanceOf(address1) + const preSignerTokenBalance = await L2BNBOnBobaEth.balanceOf(randAddress) + + await teleportationServiceEth._disburseTx( + disbursement, + chainId, + blockNumber + ) + + // disburse again to trigger cooldown period + await TeleportationBNB.connect(signer).teleportAsset( + L2BNBOnBobaBnb.address, + utils.parseEther('10'), + chainId // toChainId + ) + disbursement[0].depositId += 1; + await teleportationServiceEth._disburseTx( + disbursement, + chainId, + blockNumber + ) + + const postNativeBalance = await ethers.provider.getBalance(address1) + const postSignerNativeBalance = await ethers.provider.getBalance(randAddress) + const postTokenBalance = await L2BNBOnBobaEth.balanceOf(address1) + const postSignerTokenBalance = await L2BNBOnBobaEth.balanceOf(randAddress) + + expect(preTokenBalance.sub(postTokenBalance)).to.be.eq( + utils.parseEther('20') + ) + expect(postSignerTokenBalance.sub(preSignerTokenBalance)).to.be.eq( + utils.parseEther('20') + ) + const gasDelta = ethers.utils.parseEther('0.003') + expect(preNativeBalance.sub(postNativeBalance)).to.be.closeTo(airdropConfig.airdropAmountWei, gasDelta) + expect(postSignerNativeBalance.sub(preSignerNativeBalance)).to.be.eq(airdropConfig.airdropAmountWei) + }) + }) }) diff --git a/integration-tests/test/alt-l2/turing.spec.ts b/integration-tests/test/alt-l2/turing.spec.ts index 3b1c506d6e..936d7fd537 100644 --- a/integration-tests/test/alt-l2/turing.spec.ts +++ b/integration-tests/test/alt-l2/turing.spec.ts @@ -1,7 +1,7 @@ import { ethers } from 'hardhat' import { Contract, utils } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' -import { getBobaContractAt } from '@boba/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' +import { getBobaContractAt } from '@bobanetwork/contracts' import chai, { expect } from 'chai' import { solidity } from 'ethereum-waffle' chai.use(solidity) diff --git a/integration-tests/test/alt-l2/whitelist.spec.ts b/integration-tests/test/alt-l2/whitelist.spec.ts index 2f56c57ae6..5f78f30362 100644 --- a/integration-tests/test/alt-l2/whitelist.spec.ts +++ b/integration-tests/test/alt-l2/whitelist.spec.ts @@ -3,7 +3,7 @@ import { ContractFactory } from 'ethers' import { ethers } from 'hardhat' import chai, { expect } from 'chai' import { solidity } from 'ethereum-waffle' -import { predeploys } from '@eth-optimism/contracts' +import { predeploys } from '@bobanetwork/core_contracts' /* Imports: Internal */ import { OptimismEnv } from './shared/env' diff --git a/integration-tests/test/eth-l2/basic-l1-l2-communication.spec.ts b/integration-tests/test/eth-l2/basic-l1-l2-communication.spec.ts index 6b971ead98..6fba86bdd0 100644 --- a/integration-tests/test/eth-l2/basic-l1-l2-communication.spec.ts +++ b/integration-tests/test/eth-l2/basic-l1-l2-communication.spec.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { Contract, ContractFactory } from 'ethers' import { ethers } from 'hardhat' -import { MessageDirection, MessageStatus } from '@eth-optimism/sdk' +import { MessageDirection, MessageStatus } from '@bobanetwork/sdk' import { applyL1ToL2Alias, awaitCondition, diff --git a/integration-tests/test/eth-l2/basic_nft.spec.ts b/integration-tests/test/eth-l2/basic_nft.spec.ts index 0900dfda3e..5a34f2f653 100644 --- a/integration-tests/test/eth-l2/basic_nft.spec.ts +++ b/integration-tests/test/eth-l2/basic_nft.spec.ts @@ -5,7 +5,7 @@ const expect = chai.expect import { Contract, ContractFactory, BigNumber } from 'ethers' -import { getBobaContractAt, deployBobaContractCore } from '@boba/contracts' +import { getBobaContractAt, deployBobaContractCore } from '@bobanetwork/contracts' import { OptimismEnv } from './shared/env' diff --git a/integration-tests/test/eth-l2/boba-api.spec.ts b/integration-tests/test/eth-l2/boba-api.spec.ts index 91e976b1b6..1c5600ffe9 100644 --- a/integration-tests/test/eth-l2/boba-api.spec.ts +++ b/integration-tests/test/eth-l2/boba-api.spec.ts @@ -4,10 +4,10 @@ chai.use(chaiAsPromised) /* Imports: External */ import { ethers, BigNumber, Contract, Wallet } from 'ethers' -import { predeploys, getContractFactory } from '@eth-optimism/contracts' +import { predeploys, getContractFactory } from '@bobanetwork/core_contracts' import ethSigUtil from 'eth-sig-util' import util from 'util' -import { mainnetSwapBOBAForETH } from '@boba/api' +import { mainnetSwapBOBAForETH } from '@bobanetwork/api' /* Imports: Internal */ diff --git a/integration-tests/test/eth-l2/boba-fee-payment.spec.ts b/integration-tests/test/eth-l2/boba-fee-payment.spec.ts index c2d4a8fab1..329a053a40 100644 --- a/integration-tests/test/eth-l2/boba-fee-payment.spec.ts +++ b/integration-tests/test/eth-l2/boba-fee-payment.spec.ts @@ -3,7 +3,7 @@ import chaiAsPromised from 'chai-as-promised' chai.use(chaiAsPromised) import { ethers } from 'hardhat' import { BigNumber, Contract, utils, ContractFactory } from 'ethers' -import { predeploys, getContractFactory } from '@eth-optimism/contracts' +import { predeploys, getContractFactory } from '@bobanetwork/core_contracts' import ethSigUtil from 'eth-sig-util' /* Imports: Internal */ diff --git a/integration-tests/test/eth-l2/boba_aa_fee_alt_token.spec.ts b/integration-tests/test/eth-l2/boba_aa_fee_alt_token.spec.ts index a4576216df..d289916d9f 100644 --- a/integration-tests/test/eth-l2/boba_aa_fee_alt_token.spec.ts +++ b/integration-tests/test/eth-l2/boba_aa_fee_alt_token.spec.ts @@ -13,7 +13,7 @@ import { hexConcat, hexZeroPad, parseEther } from 'ethers/lib/utils' import { PaymasterAPI, SimpleAccountAPI } from "@bobanetwork/bundler_sdk"; import SenderCreatorJson from '@bobanetwork/accountabstraction/artifacts/contracts/core/SenderCreator.sol/SenderCreator.json' import SimpleAccountFactoryJson from '@bobanetwork/accountabstraction/artifacts/contracts/samples/SimpleAccountFactory.sol/SimpleAccountFactory.json' -import L2StandardERC20Json from '@eth-optimism/contracts/artifacts/contracts/standards/L2StandardERC20.sol/L2StandardERC20.json' +import L2StandardERC20Json from '@bobanetwork/core_contracts/artifacts/contracts/standards/L2StandardERC20.sol/L2StandardERC20.json' import EntryPointJson from '@bobanetwork/accountabstraction/artifacts/contracts/core/EntryPoint.sol/EntryPoint.json' import SampleRecipientJson from '../../artifacts/contracts/SampleRecipient.sol/SampleRecipient.json' import { HttpRpcClient } from '@bobanetwork/bundler_sdk/dist/HttpRpcClient' diff --git a/integration-tests/test/eth-l2/boba_aa_fee_boba.spec.ts b/integration-tests/test/eth-l2/boba_aa_fee_boba.spec.ts index b13781675a..eff82b86fd 100644 --- a/integration-tests/test/eth-l2/boba_aa_fee_boba.spec.ts +++ b/integration-tests/test/eth-l2/boba_aa_fee_boba.spec.ts @@ -13,7 +13,7 @@ import { hexConcat, hexZeroPad, parseEther } from 'ethers/lib/utils' import { PaymasterAPI, SimpleAccountAPI } from '@bobanetwork/bundler_sdk' import SimpleAccountFactoryJson from '@bobanetwork/accountabstraction/artifacts/contracts/samples/SimpleAccountFactory.sol/SimpleAccountFactory.json' import MockFeedRegistryJson from '@bobanetwork/accountabstraction/artifacts/contracts/test/mocks/MockFeedRegistry.sol/MockFeedRegistry.json' -import L2GovernanceERC20Json from '@boba/contracts/artifacts/contracts/standards/L2GovernanceERC20.sol/L2GovernanceERC20.json' +import L2GovernanceERC20Json from '@bobanetwork/contracts/artifacts/contracts/standards/L2GovernanceERC20.sol/L2GovernanceERC20.json' import EntryPointJson from '@bobanetwork/accountabstraction/artifacts/contracts/core/EntryPoint.sol/EntryPoint.json' import SampleRecipientJson from '../../artifacts/contracts/SampleRecipient.sol/SampleRecipient.json' import { HttpRpcClient } from '@bobanetwork/bundler_sdk/dist/HttpRpcClient' diff --git a/integration-tests/test/eth-l2/boba_turing_credit.spec.ts b/integration-tests/test/eth-l2/boba_turing_credit.spec.ts index 438461f97a..830dd88e73 100644 --- a/integration-tests/test/eth-l2/boba_turing_credit.spec.ts +++ b/integration-tests/test/eth-l2/boba_turing_credit.spec.ts @@ -4,8 +4,8 @@ chai.use(chaiAsPromised) import { Contract, BigNumber, utils, ContractFactory } from 'ethers' import { ethers } from 'hardhat' -import { getContractFactory } from '@eth-optimism/contracts' -import { getBobaContractAt } from '@boba/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' +import { getBobaContractAt } from '@bobanetwork/contracts' import { OptimismEnv } from './shared/env' import { verifyStateRoots } from './shared/state-root-verification' diff --git a/integration-tests/test/eth-l2/bobalink.spec.ts b/integration-tests/test/eth-l2/bobalink.spec.ts index f34257ba04..8e44861af4 100644 --- a/integration-tests/test/eth-l2/bobalink.spec.ts +++ b/integration-tests/test/eth-l2/bobalink.spec.ts @@ -3,9 +3,9 @@ import chaiAsPromised from 'chai-as-promised' chai.use(chaiAsPromised) import { ethers } from 'hardhat' import { Contract, ContractFactory, BigNumber, utils } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' -import { getBobaContractAt } from '@boba/contracts' -import { bobaLinkGetQuote } from '@boba/api' +import { getContractFactory } from '@bobanetwork/core_contracts' +import { getBobaContractAt } from '@bobanetwork/contracts' +import { bobaLinkGetQuote } from '@bobanetwork/api' import util from 'util' /* eslint-disable */ diff --git a/integration-tests/test/eth-l2/bridged-tokens.spec.ts b/integration-tests/test/eth-l2/bridged-tokens.spec.ts index 74bfebb8be..83cc68849f 100644 --- a/integration-tests/test/eth-l2/bridged-tokens.spec.ts +++ b/integration-tests/test/eth-l2/bridged-tokens.spec.ts @@ -1,7 +1,7 @@ import { BigNumber, Contract, ContractFactory, utils, Wallet } from 'ethers' import { ethers } from 'hardhat' -import { getContractFactory } from '@eth-optimism/contracts' -import { MessageStatus } from '@eth-optimism/sdk' +import { getContractFactory } from '@bobanetwork/core_contracts' +import { MessageStatus } from '@bobanetwork/sdk' import { expect } from './shared/setup' import { OptimismEnv } from './shared/env' diff --git a/integration-tests/test/eth-l2/erc1155_bridge.spec.ts b/integration-tests/test/eth-l2/erc1155_bridge.spec.ts index 918bbdb332..0eae93920f 100644 --- a/integration-tests/test/eth-l2/erc1155_bridge.spec.ts +++ b/integration-tests/test/eth-l2/erc1155_bridge.spec.ts @@ -7,7 +7,7 @@ import { getBobaContractAt, getBobaContractABI, deployBobaContractCore, -} from '@boba/contracts' +} from '@bobanetwork/contracts' import { getFilteredLogIndex } from './shared/utils' import { OptimismEnv } from './shared/env' diff --git a/integration-tests/test/eth-l2/erc20bridge.spec.ts b/integration-tests/test/eth-l2/erc20bridge.spec.ts index 36ef8fae55..4477a8b463 100644 --- a/integration-tests/test/eth-l2/erc20bridge.spec.ts +++ b/integration-tests/test/eth-l2/erc20bridge.spec.ts @@ -4,7 +4,7 @@ chai.use(chaiAsPromised) const expect = chai.expect import { Contract, utils, Wallet } from 'ethers' -import { getBobaContractAt } from '@boba/contracts' +import { getBobaContractAt } from '@bobanetwork/contracts' import { OptimismEnv } from './shared/env' diff --git a/integration-tests/test/eth-l2/fee-payment.spec.ts b/integration-tests/test/eth-l2/fee-payment.spec.ts index f276489a07..c3fe4ba2e6 100644 --- a/integration-tests/test/eth-l2/fee-payment.spec.ts +++ b/integration-tests/test/eth-l2/fee-payment.spec.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { ethers, BigNumber, Contract, utils } from 'ethers' -import { predeploys, getContractFactory } from '@eth-optimism/contracts' -import { deployBobaContractCore } from '@boba/contracts' +import { predeploys, getContractFactory } from '@bobanetwork/core_contracts' +import { deployBobaContractCore } from '@bobanetwork/contracts' /* Imports: Internal */ import { expect } from './shared/setup' diff --git a/integration-tests/test/eth-l2/mrf_lp.spec.ts b/integration-tests/test/eth-l2/mrf_lp.spec.ts index 7b1e5d5d67..f91f6c0e25 100644 --- a/integration-tests/test/eth-l2/mrf_lp.spec.ts +++ b/integration-tests/test/eth-l2/mrf_lp.spec.ts @@ -3,12 +3,12 @@ import chaiAsPromised from 'chai-as-promised' chai.use(chaiAsPromised) import { ethers } from 'hardhat' import { Contract, ContractFactory, BigNumber, utils } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { deployBobaContractCore, getBobaContractABI, getBobaContractAt, -} from '@boba/contracts' +} from '@bobanetwork/contracts' import { expectLogs } from './shared/utils' import { OptimismEnv } from './shared/env' diff --git a/integration-tests/test/eth-l2/mrf_message.spec.ts b/integration-tests/test/eth-l2/mrf_message.spec.ts index 3c5c49f203..df54c3b441 100644 --- a/integration-tests/test/eth-l2/mrf_message.spec.ts +++ b/integration-tests/test/eth-l2/mrf_message.spec.ts @@ -2,7 +2,7 @@ import chai from 'chai' import chaiAsPromised from 'chai-as-promised' chai.use(chaiAsPromised) import { Contract } from 'ethers' -import { getBobaContractAt } from '@boba/contracts' +import { getBobaContractAt } from '@bobanetwork/contracts' import { OptimismEnv } from './shared/env' diff --git a/integration-tests/test/eth-l2/native-eth.spec.ts b/integration-tests/test/eth-l2/native-eth.spec.ts index 8ae2fdedb0..25f3632ee5 100644 --- a/integration-tests/test/eth-l2/native-eth.spec.ts +++ b/integration-tests/test/eth-l2/native-eth.spec.ts @@ -1,6 +1,6 @@ /* Imports: External */ import { Wallet, utils, BigNumber } from 'ethers' -import { predeploys } from '@eth-optimism/contracts' +import { predeploys } from '@bobanetwork/core_contracts' import { expectApprox } from '@eth-optimism/core-utils' /* Imports: Internal */ diff --git a/integration-tests/test/eth-l2/nft_bridge.spec.ts b/integration-tests/test/eth-l2/nft_bridge.spec.ts index 3a35824228..3af287bab8 100644 --- a/integration-tests/test/eth-l2/nft_bridge.spec.ts +++ b/integration-tests/test/eth-l2/nft_bridge.spec.ts @@ -7,7 +7,7 @@ import { deployBobaContractCore, getBobaContractABI, getBobaContractAt, -} from '@boba/contracts' +} from '@bobanetwork/contracts' import { getFilteredLogIndex } from './shared/utils' import { OptimismEnv } from './shared/env' diff --git a/integration-tests/test/eth-l2/ovmcontext.spec.ts b/integration-tests/test/eth-l2/ovmcontext.spec.ts index cca4b1d417..994bcae68e 100644 --- a/integration-tests/test/eth-l2/ovmcontext.spec.ts +++ b/integration-tests/test/eth-l2/ovmcontext.spec.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { ethers } from 'hardhat' import { expectApprox } from '@eth-optimism/core-utils' -import { predeploys } from '@eth-optimism/contracts' +import { predeploys } from '@bobanetwork/core_contracts' import { Contract, BigNumber } from 'ethers' /* Imports: Internal */ diff --git a/integration-tests/test/eth-l2/pool_dao_actions.spec.ts b/integration-tests/test/eth-l2/pool_dao_actions.spec.ts index 06ededbe5e..2f62caa049 100644 --- a/integration-tests/test/eth-l2/pool_dao_actions.spec.ts +++ b/integration-tests/test/eth-l2/pool_dao_actions.spec.ts @@ -3,8 +3,8 @@ import chaiAsPromised from 'chai-as-promised' chai.use(chaiAsPromised) import { ethers } from 'hardhat' import { Contract, ContractFactory, utils } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' -import { getBobaContractAt, deployBobaContractCore } from '@boba/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' +import { getBobaContractAt, deployBobaContractCore } from '@bobanetwork/contracts' import { OptimismEnv } from './shared/env' diff --git a/integration-tests/test/eth-l2/queue-ingestion.spec.ts b/integration-tests/test/eth-l2/queue-ingestion.spec.ts index 8011558c45..2c9c86b9a4 100644 --- a/integration-tests/test/eth-l2/queue-ingestion.spec.ts +++ b/integration-tests/test/eth-l2/queue-ingestion.spec.ts @@ -1,7 +1,7 @@ /* Imports: Internal */ import { providers } from 'ethers' import { applyL1ToL2Alias } from '@eth-optimism/core-utils' -import { asL2Provider } from '@eth-optimism/sdk' +import { asL2Provider } from '@bobanetwork/sdk' /* Imports: External */ import { expect } from './shared/setup' diff --git a/integration-tests/test/eth-l2/routed_exit_fee.spec.ts b/integration-tests/test/eth-l2/routed_exit_fee.spec.ts index 3c47dad15e..730956319a 100644 --- a/integration-tests/test/eth-l2/routed_exit_fee.spec.ts +++ b/integration-tests/test/eth-l2/routed_exit_fee.spec.ts @@ -2,8 +2,8 @@ import chai, { expect } from 'chai' import chaiAsPromised from 'chai-as-promised' chai.use(chaiAsPromised) import { Contract, ContractFactory, utils, ethers } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' -import { deployBobaContractCore, getBobaContractAt } from '@boba/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' +import { deployBobaContractCore, getBobaContractAt } from '@bobanetwork/contracts' import { OptimismEnv } from './shared/env' diff --git a/integration-tests/test/eth-l2/shared/env.ts b/integration-tests/test/eth-l2/shared/env.ts index a58e44898d..442b46c4aa 100644 --- a/integration-tests/test/eth-l2/shared/env.ts +++ b/integration-tests/test/eth-l2/shared/env.ts @@ -9,7 +9,7 @@ import { CrossChainMessenger, MessageStatus, MessageDirection, -} from '@eth-optimism/sdk' +} from '@bobanetwork/sdk' /* Imports: Internal */ import { diff --git a/integration-tests/test/eth-l2/shared/state-root-verification.ts b/integration-tests/test/eth-l2/shared/state-root-verification.ts index 91a63c3d3d..45c8516a47 100644 --- a/integration-tests/test/eth-l2/shared/state-root-verification.ts +++ b/integration-tests/test/eth-l2/shared/state-root-verification.ts @@ -2,7 +2,7 @@ import chai, { expect } from 'chai' import chaiAsPromised from 'chai-as-promised' chai.use(chaiAsPromised) import { Contract, utils } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { sleep } from '@eth-optimism/core-utils' diff --git a/integration-tests/test/eth-l2/shared/utils.ts b/integration-tests/test/eth-l2/shared/utils.ts index dedb6f525e..7c6ffe273a 100644 --- a/integration-tests/test/eth-l2/shared/utils.ts +++ b/integration-tests/test/eth-l2/shared/utils.ts @@ -8,13 +8,13 @@ import { utils, constants, } from 'ethers' -import { getContractInterface, predeploys } from '@eth-optimism/contracts' +import { getContractInterface, predeploys } from '@bobanetwork/core_contracts' import { remove0x, sleep } from '@eth-optimism/core-utils' import { CrossChainMessenger, NumberLike, asL2Provider, -} from '@eth-optimism/sdk' +} from '@bobanetwork/sdk' import { cleanEnv, str, num, bool, makeValidator } from 'envalid' import dotenv from 'dotenv' import { expectEvent } from '@openzeppelin/test-helpers' diff --git a/integration-tests/test/eth-l2/teleportation.spec.ts b/integration-tests/test/eth-l2/teleportation.spec.ts index a2c4125887..8add4c23d1 100644 --- a/integration-tests/test/eth-l2/teleportation.spec.ts +++ b/integration-tests/test/eth-l2/teleportation.spec.ts @@ -1,7 +1,7 @@ -import { expect } from '@boba/teleportation/test/setup' +import {expect} from '@bobanetwork/teleportation/test/setup' /* External Imports */ -import { ethers } from 'hardhat' +import {ethers} from 'hardhat' import { BigNumber, Contract, @@ -10,22 +10,23 @@ import { utils, Wallet, } from 'ethers' -import { orderBy } from 'lodash' +import {orderBy} from 'lodash' /* Imports: Artifacts */ -import TeleportationJson from '@boba/contracts/artifacts/contracts/Teleportation.sol/Teleportation.json' -import L1ERC20Json from '@boba/contracts/artifacts/contracts/test-helpers/L1ERC20.sol/L1ERC20.json' +import TeleportationJson from '@bobanetwork/contracts/artifacts/contracts/Teleportation.sol/Teleportation.json' +import L1ERC20Json from '@bobanetwork/contracts/artifacts/contracts/test-helpers/L1ERC20.sol/L1ERC20.json' /* Imports: Interface */ -import { ChainInfo } from '@boba/teleportation/src/utils/types' +import {ChainInfo} from '@bobanetwork/teleportation/src/utils/types' /* Imports: Core */ -import { TeleportationService } from '@boba/teleportation/src/service' +import {TeleportationService} from '@bobanetwork/teleportation/src/service' import { AppDataSource, historyDataRepository, -} from '@boba/teleportation/src/data-source' -import { OptimismEnv } from './shared/env' +} from '@bobanetwork/teleportation/src/data-source' +import {OptimismEnv} from './shared/env' +import {Asset} from "@bobanetwork/teleportation/src"; describe('teleportation', () => { let env: OptimismEnv @@ -61,19 +62,25 @@ describe('teleportation', () => { }) let chainId: number - let chainIdBnb: number + let chainIdBobaBnb: number let Factory__Teleportation: ContractFactory let Teleportation: Contract let TeleportationBNB: Contract let Factory__L2BOBA: ContractFactory let L2BOBA: Contract - let L2BobaOnBobaBnb: Contract + let L2BNBOnBobaBnb: Contract let L2BNBOnBobaEth: Contract + // Here to have an easy way to modify globally + const airdropConfig = { + airdropAmountWei: ethers.utils.parseEther('1'), + airdropCooldownSeconds: 1000, + } + before(async () => { chainId = (await ethers.provider.getNetwork()).chainId - chainIdBnb = chainId + 1 + chainIdBobaBnb = chainId + 1 Factory__Teleportation = new ethers.ContractFactory( TeleportationJson.abi, @@ -127,8 +134,8 @@ describe('teleportation', () => { teleportationAddress: Teleportation.address, height: 0, supportedAssets: { - [L2BOBA.address?.toLowerCase()]: 'BOBA', - [ethers.constants.AddressZero?.toLowerCase()]: 'ETH', + [L2BOBA.address?.toLowerCase()]: Asset.BOBA, + [ethers.constants.AddressZero?.toLowerCase()]: Asset.ETH, }, }, // bnb will be added in routing tests to have cleaner before hooks @@ -136,8 +143,8 @@ describe('teleportation', () => { selectedBobaChainsBnb = selectedBobaChains }) - const startTeleportationService = async (useBnb?: boolean) => { - const chainIdToUse = useBnb ? chainIdBnb : chainId + const startTeleportationService = async (useBnb?: boolean, airdropEnabled?: boolean) => { + const chainIdToUse = useBnb ? chainIdBobaBnb : chainId return new TeleportationService({ l2RpcProvider: ethers.provider, @@ -159,6 +166,10 @@ describe('teleportation', () => { awsKmsKeyId: process.env.TELEPORTATION_AWS_KMS_KEY_ID ?? '3', awsKmsEndpoint: process.env.TELEPORTATION_AWS_KMS_ENDPOINT ?? 'http://kms:8888/', awsKmsRegion: process.env.TELEPORTATION_AWS_KMS_REGION ?? 'us-east-1', + disableDisburserCheck: true, + }, + airdropConfig: { + ...airdropConfig, airdropEnabled, }, }) } @@ -548,7 +559,7 @@ describe('teleportation', () => { const teleportationService = await startTeleportationService() await teleportationService.init() - await historyDataRepository.delete({ chainId }) + await historyDataRepository.delete({chainId}) const latestBlock = await ethers.provider.getBlockNumber() const depositTeleportations = { @@ -580,14 +591,14 @@ describe('teleportation', () => { await Teleportation.deployTransaction.wait() // deploy other token for routing tests - L2BobaOnBobaBnb = await Factory__L2BOBA.deploy( + L2BNBOnBobaBnb = await Factory__L2BOBA.deploy( utils.parseEther('100000000000'), 'BOBA', 'BOBA', 18 ) - await L2BobaOnBobaBnb.deployTransaction.wait() - await L2BobaOnBobaBnb.transfer(address1, utils.parseEther('100000000')) + await L2BNBOnBobaBnb.deployTransaction.wait() + await L2BNBOnBobaBnb.transfer(address1, utils.parseEther('100000000')) // deploy other token for routing tests L2BNBOnBobaEth = await Factory__L2BOBA.deploy( @@ -604,7 +615,7 @@ describe('teleportation', () => { // add the supported chain & token await TeleportationBNB.addSupportedToken( - L2BobaOnBobaBnb.address, + L2BNBOnBobaBnb.address, chainId, defaultMinDepositAmount, defaultMaxDepositAmount, @@ -621,14 +632,14 @@ describe('teleportation', () => { // add support on previous network await Teleportation.addSupportedToken( L2BNBOnBobaEth.address, - chainIdBnb, + chainIdBobaBnb, defaultMinDepositAmount, defaultMaxDepositAmount, defaultMaxTransferPerDay ) await Teleportation.addSupportedToken( L2BOBA.address, - chainIdBnb, + chainIdBobaBnb, defaultMinDepositAmount, defaultMaxDepositAmount, defaultMaxTransferPerDay @@ -641,7 +652,7 @@ describe('teleportation', () => { // mock BNB network & overwrite prev network selectedBobaChains = [ { - chainId: chainIdBnb, + chainId: chainIdBobaBnb, url: 'http://localhost:8545', provider: ethers.provider, testnet: true, @@ -649,8 +660,8 @@ describe('teleportation', () => { teleportationAddress: TeleportationBNB.address, height: 0, supportedAssets: { - [L2BobaOnBobaBnb.address?.toLowerCase()]: 'BOBA', - [ethers.constants.AddressZero?.toLowerCase()]: 'BNB', // simulate BNB for native to token teleport + [L2BNBOnBobaBnb.address?.toLowerCase()]: Asset.BOBA, + [ethers.constants.AddressZero?.toLowerCase()]: Asset.BNB, // simulate BNB for native to token teleport }, }, ] @@ -664,9 +675,9 @@ describe('teleportation', () => { teleportationAddress: Teleportation.address, height: 0, supportedAssets: { - [L2BOBA.address?.toLowerCase()]: 'BOBA', - [ethers.constants.AddressZero?.toLowerCase()]: 'ETH', - [L2BNBOnBobaEth.address?.toLowerCase()]: 'BNB', + [L2BOBA.address?.toLowerCase()]: Asset.BOBA, + [ethers.constants.AddressZero?.toLowerCase()]: Asset.ETH, + [L2BNBOnBobaEth.address?.toLowerCase()]: Asset.BNB, }, }, ] @@ -678,12 +689,12 @@ describe('teleportation', () => { // deposit token const preBlockNumber = await ethers.provider.getBlockNumber() - await L2BobaOnBobaBnb.connect(signer).approve( + await L2BNBOnBobaBnb.connect(signer).approve( TeleportationBNB.address, utils.parseEther('10') ) await TeleportationBNB.connect(signer).teleportAsset( - L2BobaOnBobaBnb.address, + L2BNBOnBobaBnb.address, utils.parseEther('10'), chainId // toChainId ) @@ -703,7 +714,7 @@ describe('teleportation', () => { let disbursement = [] for (const event of events) { - const sourceChainId = chainIdBnb // event.args.sourceChainId -> (is correct, but we were mocking a fake chainId for testing) + const sourceChainId = chainIdBobaBnb // event.args.sourceChainId -> (is correct, but we were mocking a fake chainId for testing) const depositId = event.args.depositId const amount = event.args.amount const token = event.args.token @@ -765,7 +776,7 @@ describe('teleportation', () => { ethers.constants.AddressZero, // send native BNB utils.parseEther('10'), chainId, // toChainId - { value: utils.parseEther('10') } + {value: utils.parseEther('10')} ) const blockNumber = await ethers.provider.getBlockNumber() @@ -783,7 +794,7 @@ describe('teleportation', () => { let disbursement = [] for (const event of events) { - const sourceChainId = chainIdBnb // event.args.sourceChainId -> (is correct, but we were mocking a fake chainId for testing) + const sourceChainId = chainIdBobaBnb // event.args.sourceChainId -> (is correct, but we were mocking a fake chainId for testing) const depositId = event.args.depositId const amount = event.args.amount const token = event.args.token @@ -847,7 +858,7 @@ describe('teleportation', () => { await Teleportation.connect(signer).teleportAsset( L2BNBOnBobaEth.address, // send BNB as token utils.parseEther('10'), - chainIdBnb // toChainId + chainIdBobaBnb // toChainId ) const blockNumber = await ethers.provider.getBlockNumber() @@ -896,7 +907,7 @@ describe('teleportation', () => { disbursement = orderBy(disbursement, ['depositId'], ['asc']) const bnbChainInfo = selectedBobaChains.find( - (c) => c.chainId === chainIdBnb + (c) => c.chainId === chainIdBobaBnb ) if (!bnbChainInfo) { throw new Error('BNB provider not configured!') @@ -909,7 +920,7 @@ describe('teleportation', () => { await teleportationServiceBnb._disburseTx( disbursement, - chainIdBnb, + chainIdBobaBnb, blockNumber ) @@ -928,4 +939,585 @@ describe('teleportation', () => { ) }) }) + + describe('airdrop', () => { + before(async () => { + Factory__Teleportation = new ethers.ContractFactory( + TeleportationJson.abi, + TeleportationJson.bytecode, + wallet1 + ) + + Teleportation = await Factory__Teleportation.deploy() + await Teleportation.deployTransaction.wait() + + Factory__L2BOBA = new ethers.ContractFactory( + L1ERC20Json.abi, + L1ERC20Json.bytecode, + signer + ) + L2BOBA = await Factory__L2BOBA.deploy( + utils.parseEther('100000000000'), + 'BOBA', + 'BOBA', + 18 + ) + await L2BOBA.deployTransaction.wait() + await L2BOBA.transfer(address1, utils.parseEther('100000000')) + + // intialize the teleportation contract + await Teleportation.initialize() + + + TeleportationBNB = await Factory__Teleportation.deploy() + await Teleportation.deployTransaction.wait() + + // deploy other token for routing tests + L2BNBOnBobaBnb = await Factory__L2BOBA.deploy( + utils.parseEther('100000000000'), + 'BOBA', + 'BOBA', + 18 + ) + await L2BNBOnBobaBnb.deployTransaction.wait() + await L2BNBOnBobaBnb.transfer(address1, utils.parseEther('100000000')) + + // deploy other token for routing tests + L2BNBOnBobaEth = await Factory__L2BOBA.deploy( + utils.parseEther('100000000000'), + 'BNB', + 'BNB', + 18 + ) + await L2BNBOnBobaEth.deployTransaction.wait() + await L2BNBOnBobaEth.transfer(address1, utils.parseEther('100000000')) + + // intialize the teleportation contract + await TeleportationBNB.initialize() + + // add the supported chain & token + await TeleportationBNB.addSupportedToken( + L2BNBOnBobaBnb.address, + chainId, + defaultMinDepositAmount, + defaultMaxDepositAmount, + defaultMaxTransferPerDay + ) + await TeleportationBNB.addSupportedToken( + ethers.constants.AddressZero, + chainId, + defaultMinDepositAmount, + defaultMaxDepositAmount, + defaultMaxTransferPerDay + ) + + // add support on previous network + await Teleportation.addSupportedToken( + L2BNBOnBobaEth.address, + chainIdBobaBnb, + defaultMinDepositAmount, + defaultMaxDepositAmount, + defaultMaxTransferPerDay + ) + await Teleportation.addSupportedToken( + L2BOBA.address, + chainIdBobaBnb, + defaultMinDepositAmount, + defaultMaxDepositAmount, + defaultMaxTransferPerDay + ) + + console.log( + `Teleportation on ETH: ${Teleportation.address} / on BNB: ${TeleportationBNB.address}` + ) + + // mock BNB network & overwrite prev network + selectedBobaChains = [ + { + chainId: chainIdBobaBnb, + url: 'http://localhost:8545', + provider: ethers.provider, + testnet: true, + name: 'localhost:bnb', + teleportationAddress: TeleportationBNB.address, + height: 0, + supportedAssets: { + [L2BNBOnBobaBnb.address?.toLowerCase()]: Asset.BNB, + [ethers.constants.AddressZero]: Asset.BOBA, // simulate BNB for native to token teleport + }, + }, + ] + selectedBobaChainsBnb = [ + { + chainId, + url: 'http://localhost:8545', + provider: ethers.provider, + testnet: true, + name: 'localhost', + teleportationAddress: Teleportation.address, + height: 0, + supportedAssets: { + [L2BOBA.address?.toLowerCase()]: Asset.BOBA, + [ethers.constants.AddressZero]: Asset.ETH, + [L2BNBOnBobaEth.address?.toLowerCase()]: Asset.BNB, + }, + }, + ] + }) + + it('receive gas on airdrop', async () => { + const teleportationServiceBnb = await startTeleportationService(true) + await teleportationServiceBnb.init() + + // deposit token + const preBlockNumber = await ethers.provider.getBlockNumber() + await L2BNBOnBobaBnb.connect(signer).approve( + TeleportationBNB.address, + utils.parseEther('10') + ) + await TeleportationBNB.connect(signer).teleportAsset( + L2BNBOnBobaBnb.address, + utils.parseEther('10'), + chainId // toChainId + ) + + const blockNumber = await ethers.provider.getBlockNumber() + const events = await teleportationServiceBnb._getEvents( + TeleportationBNB, + TeleportationBNB.filters.AssetReceived(), + preBlockNumber, + blockNumber + ) + + expect(events.length).to.be.gt(0, 'Event length must be greater than 0') + + const teleportationServiceEth = await startTeleportationService(false, true) + await teleportationServiceEth.init() + + // random address to ensure balance = 0 to be eligible for airdrop + const randAddress = ethers.Wallet.createRandom().address + + const lastEvent = events[events.length - 1] + const sourceChainId = chainIdBobaBnb // event.args.sourceChainId -> (is correct, but we were mocking a fake chainId for testing) + const depositId = lastEvent.args.depositId + const amount = lastEvent.args.amount + const token = lastEvent.args.token + const emitter = lastEvent.args.emitter + + const receivingChainTokenAddr = + teleportationServiceEth._getSupportedDestChainTokenAddrBySourceChainTokenAddr( + token, + sourceChainId + ) + expect(receivingChainTokenAddr).to.be.eq( + L2BNBOnBobaEth.address?.toLowerCase(), + 'BNB token address on BNB not correctly routed' + ) + + let disbursement = [ + { + token: receivingChainTokenAddr, + amount: amount.toString(), + addr: randAddress, + depositId: depositId.toNumber(), + sourceChainId: sourceChainId.toString(), + }, + ] + + console.log('Added disbursement: ', disbursement) + + disbursement = orderBy(disbursement, ['depositId'], ['asc']) + + const preNativeBalance = await ethers.provider.getBalance(address1) + const preSignerNativeBalance = await ethers.provider.getBalance(randAddress) + const preTokenBalance = await L2BNBOnBobaBnb.balanceOf(address1) + const preSignerTokenBalance = await L2BNBOnBobaBnb.balanceOf(randAddress) + + await teleportationServiceEth._disburseTx( + disbursement, + chainId, + blockNumber + ) + + const postNativeBalance = await ethers.provider.getBalance(address1) + const postSignerNativeBalance = await ethers.provider.getBalance(randAddress) + const postTokenBalance = await L2BNBOnBobaEth.balanceOf(address1) + const postSignerTokenBalance = await L2BNBOnBobaEth.balanceOf(randAddress) + + expect(preTokenBalance.sub(postTokenBalance)).to.be.eq( + utils.parseEther('10') + ) + expect(postSignerTokenBalance.sub(preSignerTokenBalance)).to.be.eq( + utils.parseEther('10') + ) + const gasDelta = ethers.utils.parseEther('0.003') + expect(preNativeBalance.sub(postNativeBalance)).to.be.closeTo(airdropConfig.airdropAmountWei, gasDelta) + expect(postSignerNativeBalance.sub(preSignerNativeBalance)).to.be.closeTo( + airdropConfig.airdropAmountWei, gasDelta + ) + }) + + it('should not receive gas on airdrop when airdrop disabled (e.g. for L1)', async () => { + const teleportationServiceBnb = await startTeleportationService(true) + await teleportationServiceBnb.init() + + // deposit token + const preBlockNumber = await ethers.provider.getBlockNumber() + await L2BNBOnBobaBnb.connect(signer).approve( + TeleportationBNB.address, + utils.parseEther('10') + ) + await TeleportationBNB.connect(signer).teleportAsset( + L2BNBOnBobaBnb.address, + utils.parseEther('10'), + chainId // toChainId + ) + + const blockNumber = await ethers.provider.getBlockNumber() + const events = await teleportationServiceBnb._getEvents( + TeleportationBNB, + TeleportationBNB.filters.AssetReceived(), + preBlockNumber, + blockNumber + ) + + expect(events.length).to.be.gt(0, 'Event length must be greater than 0') + + const teleportationServiceEth = await startTeleportationService(false, false) + await teleportationServiceEth.init() + + // random address to ensure balance = 0 to be eligible for airdrop + const randAddress = ethers.Wallet.createRandom().address + + const lastEvent = events[events.length - 1] + const sourceChainId = chainIdBobaBnb // event.args.sourceChainId -> (is correct, but we were mocking a fake chainId for testing) + const depositId = lastEvent.args.depositId + const amount = lastEvent.args.amount + const token = lastEvent.args.token + const emitter = lastEvent.args.emitter + + const receivingChainTokenAddr = + teleportationServiceEth._getSupportedDestChainTokenAddrBySourceChainTokenAddr( + token, + sourceChainId + ) + expect(receivingChainTokenAddr).to.be.eq( + L2BNBOnBobaEth.address?.toLowerCase(), + 'BNB token address on BNB not correctly routed' + ) + + let disbursement = [ + { + token: receivingChainTokenAddr, + amount: amount.toString(), + addr: randAddress, + depositId: depositId.toNumber(), + sourceChainId: sourceChainId.toString(), + }, + ] + + console.log('Added disbursement: ', disbursement) + + disbursement = orderBy(disbursement, ['depositId'], ['asc']) + + const preNativeBalance = await ethers.provider.getBalance(address1) + const preSignerNativeBalance = await ethers.provider.getBalance(randAddress) + const preTokenBalance = await L2BNBOnBobaEth.balanceOf(address1) + const preSignerTokenBalance = await L2BNBOnBobaEth.balanceOf(randAddress) + + await teleportationServiceEth._disburseTx( + disbursement, + chainId, + blockNumber + ) + + const postNativeBalance = await ethers.provider.getBalance(address1) + const postSignerNativeBalance = await ethers.provider.getBalance(randAddress) + const postTokenBalance = await L2BNBOnBobaEth.balanceOf(address1) + const postSignerTokenBalance = await L2BNBOnBobaEth.balanceOf(randAddress) + + expect(preTokenBalance.sub(postTokenBalance)).to.be.eq( + utils.parseEther('10') + ) + expect(postSignerTokenBalance.sub(preSignerTokenBalance)).to.be.eq( + utils.parseEther('10') + ) + const gasDelta = ethers.utils.parseEther('0.003') + expect(preNativeBalance.sub(postNativeBalance)).to.be.closeTo('0', gasDelta) + expect(postSignerNativeBalance.sub(preSignerNativeBalance)).to.be.closeTo( + '0', gasDelta + ) + }) + + it('should not airdrop if user has gas on destination network', async () => { + const teleportationServiceBnb = await startTeleportationService(true) + await teleportationServiceBnb.init() + + // deposit token + const preBlockNumber = await ethers.provider.getBlockNumber() + await L2BNBOnBobaBnb.connect(signer).approve( + TeleportationBNB.address, + utils.parseEther('10') + ) + await TeleportationBNB.connect(signer).teleportAsset( + L2BNBOnBobaBnb.address, + utils.parseEther('10'), + chainId // toChainId + ) + + const blockNumber = await ethers.provider.getBlockNumber() + const events = await teleportationServiceBnb._getEvents( + TeleportationBNB, + TeleportationBNB.filters.AssetReceived(), + preBlockNumber, + blockNumber + ) + + expect(events.length).to.be.gt(0, 'Event length must be greater than 0') + + const teleportationServiceEth = await startTeleportationService(false, true) + await teleportationServiceEth.init() + + const lastEvent = events[events.length - 1] + const sourceChainId = chainIdBobaBnb // event.args.sourceChainId -> (is correct, but we were mocking a fake chainId for testing) + const depositId = lastEvent.args.depositId + const amount = lastEvent.args.amount + const token = lastEvent.args.token + const emitter = lastEvent.args.emitter + + const receivingChainTokenAddr = + teleportationServiceEth._getSupportedDestChainTokenAddrBySourceChainTokenAddr( + token, + sourceChainId + ) + expect(receivingChainTokenAddr).to.be.eq( + L2BNBOnBobaEth.address?.toLowerCase(), + 'BNB token address on BNB not correctly routed' + ) + + let disbursement = [ + { + token: receivingChainTokenAddr, + amount: amount.toString(), + addr: emitter, + depositId: depositId.toNumber(), + sourceChainId: sourceChainId.toString(), + }, + ] + + console.log('Added disbursement: ', disbursement) + + disbursement = orderBy(disbursement, ['depositId'], ['asc']) + + const preNativeBalance = await ethers.provider.getBalance(address1) + const preSignerNativeBalance = await ethers.provider.getBalance(signerAddr) + const preTokenBalance = await L2BNBOnBobaEth.balanceOf(address1) + const preSignerTokenBalance = await L2BNBOnBobaEth.balanceOf(signerAddr) + + await teleportationServiceEth._disburseTx( + disbursement, + chainId, + blockNumber + ) + + const postNativeBalance = await ethers.provider.getBalance(address1) + const postSignerNativeBalance = await ethers.provider.getBalance(signerAddr) + const postTokenBalance = await L2BNBOnBobaEth.balanceOf(address1) + const postSignerTokenBalance = await L2BNBOnBobaEth.balanceOf(signerAddr) + + expect(preTokenBalance.sub(postTokenBalance)).to.be.eq( + utils.parseEther('10') + ) + expect(postSignerTokenBalance.sub(preSignerTokenBalance)).to.be.eq( + utils.parseEther('10') + ) + const gasDelta = ethers.utils.parseEther('0.003') + expect(preNativeBalance.sub(postNativeBalance)).to.be.closeTo('0', gasDelta) + expect(postSignerNativeBalance.sub(preSignerNativeBalance)).to.be.closeTo( + '0', gasDelta + ) + }) + + it('should not airdrop if user bridges asset that is native on destination network', async () => { + const teleportationServiceETH = await startTeleportationService(false) + await teleportationServiceETH.init() + + // deposit token + const amountToBridge = utils.parseEther('10') + const preBlockNumber = await ethers.provider.getBlockNumber() + await L2BOBA.connect(signer).approve( + Teleportation.address, + amountToBridge + ) + await Teleportation.connect(signer).teleportAsset( + L2BOBA.address, + amountToBridge, + chainIdBobaBnb // toChainId + ) + + const blockNumber = await ethers.provider.getBlockNumber() + const events = await teleportationServiceETH._getEvents( + Teleportation, + Teleportation.filters.AssetReceived(), + preBlockNumber, + blockNumber + ) + + expect(events.length).to.be.gt(0, 'Event length must be greater than 0') + + const teleportationServiceBnb = await startTeleportationService(true, true) + await teleportationServiceBnb.init() + + // random address to ensure balance = 0 to be eligible for airdrop + const randAddress = ethers.Wallet.createRandom().address + const lastEvent = events[events.length - 1] + const sourceChainId = lastEvent.args.sourceChainId + const depositId = lastEvent.args.depositId + const amount = lastEvent.args.amount + const token = lastEvent.args.token + const emitter = lastEvent.args.emitter + + const receivingChainTokenAddr = + teleportationServiceBnb._getSupportedDestChainTokenAddrBySourceChainTokenAddr( + token, + sourceChainId + ) + expect(receivingChainTokenAddr).to.be.eq( + ethers.constants.AddressZero, + 'BOBA token address on ETH not correctly routed' + ) + + let disbursement = [ + { + token: receivingChainTokenAddr, + amount: amount.toString(), + addr: randAddress, + depositId: depositId.toNumber(), + sourceChainId: sourceChainId.toString(), + }, + ] + + console.log('Added disbursement: ', disbursement) + + disbursement = orderBy(disbursement, ['depositId'], ['asc']) + + const preNativeBalance = await ethers.provider.getBalance(address1) + const preSignerNativeBalance = await ethers.provider.getBalance(randAddress) + + await teleportationServiceBnb._disburseTx( + disbursement, + chainId, + blockNumber + ) + + const postNativeBalance = await ethers.provider.getBalance(address1) + const postSignerNativeBalance = await ethers.provider.getBalance(randAddress) + + const gasDelta = ethers.utils.parseEther('0.003') + expect(preNativeBalance.sub(postNativeBalance)).to.be.closeTo(amountToBridge, gasDelta) + expect(postSignerNativeBalance.sub(preSignerNativeBalance)).to.be.eq(amountToBridge) + }) + + it('should not airdrop within cooldown period', async () => { + const teleportationServiceBnb = await startTeleportationService(true) + await teleportationServiceBnb.init() + + // deposit token + const preBlockNumber = await ethers.provider.getBlockNumber() + await L2BNBOnBobaBnb.connect(signer).approve( + TeleportationBNB.address, + utils.parseEther('20') + ) + await TeleportationBNB.connect(signer).teleportAsset( + L2BNBOnBobaBnb.address, + utils.parseEther('10'), + chainId // toChainId + ) + + const blockNumber = await ethers.provider.getBlockNumber() + const events = await teleportationServiceBnb._getEvents( + TeleportationBNB, + TeleportationBNB.filters.AssetReceived(), + preBlockNumber, + blockNumber + ) + + expect(events.length).to.be.gt(0, 'Event length must be greater than 0') + + const teleportationServiceEth = await startTeleportationService(false, true) + await teleportationServiceEth.init() + + const lastEvent = events[events.length - 1] + const randWallet = ethers.Wallet.createRandom().connect(Teleportation.provider) + const randAddress = randWallet.address + const sourceChainId = chainIdBobaBnb // event.args.sourceChainId -> (is correct, but we were mocking a fake chainId for testing) + const depositId = lastEvent.args.depositId + const amount = lastEvent.args.amount + const token = lastEvent.args.token + const emitter = lastEvent.args.emitter + + const receivingChainTokenAddr = + teleportationServiceEth._getSupportedDestChainTokenAddrBySourceChainTokenAddr( + token, + sourceChainId + ) + expect(receivingChainTokenAddr).to.be.eq( + L2BNBOnBobaEth.address?.toLowerCase(), + 'BNB token address on BNB not correctly routed' + ) + + let disbursement = [ + { + token: receivingChainTokenAddr, + amount: amount.toString(), + addr: randAddress, + depositId: depositId.toNumber(), + sourceChainId: sourceChainId.toString(), + }, + ] + + console.log('Added disbursements: ', disbursement) + + disbursement = orderBy(disbursement, ['depositId'], ['asc']) + + const preNativeBalance = await ethers.provider.getBalance(address1) + const preSignerNativeBalance = await ethers.provider.getBalance(randAddress) + const preTokenBalance = await L2BNBOnBobaEth.balanceOf(address1) + const preSignerTokenBalance = await L2BNBOnBobaEth.balanceOf(randAddress) + + await teleportationServiceEth._disburseTx( + disbursement, + chainId, + blockNumber + ) + + // disburse again to trigger cooldown period + await TeleportationBNB.connect(signer).teleportAsset( + L2BNBOnBobaBnb.address, + utils.parseEther('10'), + chainId // toChainId + ) + disbursement[0].depositId += 1; + await teleportationServiceEth._disburseTx( + disbursement, + chainId, + blockNumber + ) + + const postNativeBalance = await ethers.provider.getBalance(address1) + const postSignerNativeBalance = await ethers.provider.getBalance(randAddress) + const postTokenBalance = await L2BNBOnBobaEth.balanceOf(address1) + const postSignerTokenBalance = await L2BNBOnBobaEth.balanceOf(randAddress) + + expect(preTokenBalance.sub(postTokenBalance)).to.be.eq( + utils.parseEther('20') + ) + expect(postSignerTokenBalance.sub(preSignerTokenBalance)).to.be.eq( + utils.parseEther('20') + ) + const gasDelta = ethers.utils.parseEther('0.003') + expect(preNativeBalance.sub(postNativeBalance)).to.be.closeTo(airdropConfig.airdropAmountWei, gasDelta) + expect(postSignerNativeBalance.sub(preSignerNativeBalance)).to.be.eq(airdropConfig.airdropAmountWei) + }) + }) }) diff --git a/integration-tests/test/eth-l2/turing.spec.ts b/integration-tests/test/eth-l2/turing.spec.ts index c82df5adeb..0eca6b2363 100644 --- a/integration-tests/test/eth-l2/turing.spec.ts +++ b/integration-tests/test/eth-l2/turing.spec.ts @@ -1,7 +1,7 @@ import { ethers } from 'hardhat' import { Contract, ContractFactory, utils } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' -import { getBobaContractAt } from '@boba/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' +import { getBobaContractAt } from '@bobanetwork/contracts' import chai, { expect } from 'chai' import { solidity } from 'ethereum-waffle' chai.use(solidity) @@ -73,45 +73,48 @@ describe('Turing 256 Bit Random Number Test', async () => { ).attach(L1StandardBridgeAddress) /* eslint-disable */ const http = require('http') - const ip = require("ip") + const ip = require('ip') // start local server - const server = module.exports = http.createServer(async function (req, res) { - - if (req.headers['content-type'] === 'application/json') { - - let body = ''; - - req.on('data', function (chunk) { - body += chunk.toString() - }) - - req.on('end', async function () { - const jsonBody = JSON.parse(body) - const input = JSON.parse(body).params[0] - let result - - const args = utils.defaultAbiCoder.decode(['uint256','uint256'], input) - if (req.url === "/echo") { - const randomPrice = Math.floor(Math.random() * 1000) - result = input - let response = { - "jsonrpc": "2.0", - "id": jsonBody.id, - "result": result + const server = (module.exports = http + .createServer(async function (req, res) { + if (req.headers['content-type'] === 'application/json') { + let body = '' + + req.on('data', function (chunk) { + body += chunk.toString() + }) + + req.on('end', async function () { + const jsonBody = JSON.parse(body) + const input = JSON.parse(body).params[0] + let result + + const args = utils.defaultAbiCoder.decode( + ['uint256', 'uint256'], + input + ) + if (req.url === '/echo') { + const randomPrice = Math.floor(Math.random() * 1000) + result = input + let response = { + jsonrpc: '2.0', + id: jsonBody.id, + result: result, + } + res.end(JSON.stringify(response)) + server.emit('success', body) + } else { + res.writeHead(400, { 'Content-Type': 'text/plain' }) + res.end('Bad request') } - res.end(JSON.stringify(response)) - server.emit('success', body) - } else { - res.writeHead(400, { 'Content-Type': 'text/plain' }) - res.end('Bad request') - } - }); - } else { - console.log("Other request:", req) - res.writeHead(400, { 'Content-Type': 'text/plain' }) - res.end('Expected content-type: application/json') - } - }).listen(apiPort) + }) + } else { + console.log('Other request:', req) + res.writeHead(400, { 'Content-Type': 'text/plain' }) + res.end('Expected content-type: application/json') + } + }) + .listen(apiPort)) URL = `http://${ip.address()}:${apiPort}/echo` /* eslint-enable */ }) @@ -264,16 +267,26 @@ describe('Turing 256 Bit Random Number Test', async () => { } catch (e) { expect(e.error.toString()).to.contain('SERVER_ERROR') } + try { + await random.MixedInput(URL, 123, 999, { gasLimit: 11_000_000 }) + } catch (e) { + expect(e.error.toString()).to.contain('SERVER_ERROR') + } }) // Should reject a 2nd call from a different EVM depth. it('should disallow nested Turing calls', async () => { try { - const tr = await random.NestedRandom(1) + await random.estimateGas.NestedRandom(1) expect(1).to.equal(0) } catch (e) { expect(e.error.toString()).to.contain('SERVER_ERROR') } + try { + const tr = await random.NestedRandom(1, { gasLimit: 11_000_000 }) + } catch (e) { + expect(e.error.toString()).to.contain('SERVER_ERROR') + } }) it('should allow repeated Random calls (legacy support)', async () => { diff --git a/integration-tests/test/eth-l2/whitelist.spec.ts b/integration-tests/test/eth-l2/whitelist.spec.ts index 2f56c57ae6..5f78f30362 100644 --- a/integration-tests/test/eth-l2/whitelist.spec.ts +++ b/integration-tests/test/eth-l2/whitelist.spec.ts @@ -3,7 +3,7 @@ import { ContractFactory } from 'ethers' import { ethers } from 'hardhat' import chai, { expect } from 'chai' import { solidity } from 'ethereum-waffle' -import { predeploys } from '@eth-optimism/contracts' +import { predeploys } from '@bobanetwork/core_contracts' /* Imports: Internal */ import { OptimismEnv } from './shared/env' diff --git a/integration-tests/test/eth-l2/xBoba.spec.ts b/integration-tests/test/eth-l2/xBoba.spec.ts index 3d3c2eaa7a..beb9586a89 100644 --- a/integration-tests/test/eth-l2/xBoba.spec.ts +++ b/integration-tests/test/eth-l2/xBoba.spec.ts @@ -3,8 +3,8 @@ import chaiAsPromised from 'chai-as-promised' chai.use(chaiAsPromised) import { Contract, ContractFactory, utils, BigNumber, constants } from 'ethers' -import xL2GovernanceERC20 from '@boba/contracts/artifacts/contracts/standards/xL2GovernanceERC20.sol/xL2GovernanceERC20.json' -import xL2GovernanceERC20Helper from '@boba/contracts/artifacts/contracts/test-helpers/xL2GovernanceERC20Helper.sol/xL2GovernanceERC20Helper.json' +import xL2GovernanceERC20 from '@bobanetwork/contracts/artifacts/contracts/standards/xL2GovernanceERC20.sol/xL2GovernanceERC20.json' +import xL2GovernanceERC20Helper from '@bobanetwork/contracts/artifacts/contracts/test-helpers/xL2GovernanceERC20Helper.sol/xL2GovernanceERC20Helper.json' import { OptimismEnv } from './shared/env' diff --git a/l2geth/core/state_processor.go b/l2geth/core/state_processor.go index e62fb363eb..45f366451e 100644 --- a/l2geth/core/state_processor.go +++ b/l2geth/core/state_processor.go @@ -124,6 +124,11 @@ func ApplyTransaction(config *params.ChainConfig, bc ChainContext, author *commo } } + p2 := msg.GasPrice() + if vmenv.ChainConfig().IsTuringCharge2Fork(vmenv.BlockNumber) && p2.BitLen() > 0 { + vmenv.Context.TuringGasMul = float64(l1GasPrice.Uint64()) / float64(p2.Uint64()) + } + // Determine the L2 Boba fee if users chose BOBA as the fee token feeTokenSelection := statedb.GetFeeTokenSelection(msg.From()) diff --git a/l2geth/core/vm/evm.go b/l2geth/core/vm/evm.go index e7039f115b..9f1fdb71ad 100644 --- a/l2geth/core/vm/evm.go +++ b/l2geth/core/vm/evm.go @@ -749,6 +749,31 @@ func (evm *EVM) Call(caller ContractRef, addr common.Address, input []byte, gas // We are in Verifier/Replica mode // Turing for this Transaction has already been run elsewhere - replay using // information from the EVM context + if evm.Context.TuringInput == nil { + evm.Context.TuringInput = make([]byte, len(input)) + copy(evm.Context.TuringInput, input) + evm.Context.TuringVMDepth = evm.depth + } else if !bytes.Equal(input, evm.Context.TuringInput) || evm.depth != evm.Context.TuringVMDepth { + log.Debug("TURING ERROR: evm.Context.Turing already set") + return nil, gas, ErrTuringDepth + } + + // For compatibility, only apply a charge beyond the legacy size limit + if isTuring2 { + if len(evm.Context.Turing) > 160 { + feePerByte := evm.Context.TuringGasMul * 500.0 / 32.0 + turingGas = uint64(float64(len(evm.Context.Turing)) * feePerByte) + } + + if contract.Gas <= turingGas { + log.Debug("TURING ERROR: Insufficient gas for calldata", "have", contract.Gas, "need", turingGas) + return nil, 0, ErrTuringTooLong + } else { + log.Debug("TURING Deducting calldata gas", "had", contract.Gas, "len", len(evm.Context.Turing), "Mul", evm.Context.TuringGasMul, "deducting", turingGas) + contract.UseGas(turingGas) + } + } + ret, err = run(evm, contract, evm.Context.Turing, false) log.Trace("TURING REPLAY", "evm.Context.Turing", evm.Context.Turing) } diff --git a/l2geth/params/config.go b/l2geth/params/config.go index 2524d13640..b54c7c0e37 100644 --- a/l2geth/params/config.go +++ b/l2geth/params/config.go @@ -305,6 +305,36 @@ var ( // Enable the conditional logic to prevent Turing balances from reaching zero BobaOperaTestnetTuringChargeForkNum = big.NewInt(3000) + + // Enable the conditional logic to fix bug in charging for L1 Turing calldata + BobaMainnetTuringCharge2ForkNum = big.NewInt(1064000) + + // Enable the conditional logic to fix bug in charging for L1 Turing calldata + BobaGoerliTuringCharge2ForkNum = big.NewInt(114000) + + // Enable the conditional logic to fix bug in charging for L1 Turing calldata + BobaMoonbeamTuringCharge2ForkNum = big.NewInt(1580000) + + // Enable the conditional logic to fix bug in charging for L1 Turing calldata + BobaMoonbaseTuringCharge2ForkNum = big.NewInt(350000) + + // Enable the conditional logic to fix bug in charging for L1 Turing calldata + BobaAvaxTuringCharge2ForkNum = big.NewInt(101200) + + // Enable the conditional logic to fix bug in charging for L1 Turing calldata + BobaFujiTuringCharge2ForkNum = big.NewInt(4000) + + // Enable the conditional logic to fix bug in charging for L1 Turing calldata + BobaBnbTuringCharge2ForkNum = big.NewInt(25740000) + + // Enable the conditional logic to fix bug in charging for L1 Turing calldata + BobaBnbTestnetTuringCharge2ForkNum = big.NewInt(428000) + + // Enable the conditional logic to fix bug in charging for L1 Turing calldata + BobaOperaTuringCharge2ForkNum = big.NewInt(80000) + + // Enable the conditional logic to fix bug in charging for L1 Turing calldata + BobaOperaTestnetTuringCharge2ForkNum = big.NewInt(3000) ) // TrustedCheckpoint represents a set of post-processed trie roots (CHT and @@ -567,6 +597,43 @@ func (c *ChainConfig) IsTuringChargeFork(num *big.Int) bool { return true } +func (c *ChainConfig) IsTuringCharge2Fork(num *big.Int) bool { + if c.ChainID == nil { + return true + } + if c.ChainID.Cmp(OpMainnetChainID) == 0 { + return isForked(BobaMainnetTuringCharge2ForkNum, num) + } + if c.ChainID.Cmp(OpGoerliChainID) == 0 { + return isForked(BobaGoerliTuringCharge2ForkNum, num) + } + if c.ChainID.Cmp(OpMoonbeamChainID) == 0 { + return isForked(BobaMoonbeamTuringCharge2ForkNum, num) + } + if c.ChainID.Cmp(OpMoonbaseChainID) == 0 { + return isForked(BobaMoonbaseTuringCharge2ForkNum, num) + } + if c.ChainID.Cmp(OpBnbChainID) == 0 { + return isForked(BobaBnbTuringCharge2ForkNum, num) + } + if c.ChainID.Cmp(OpBnbTestnetChainID) == 0 { + return isForked(BobaBnbTestnetTuringCharge2ForkNum, num) + } + if c.ChainID.Cmp(OpAvaxChainID) == 0 { + return isForked(BobaAvaxTuringCharge2ForkNum, num) + } + if c.ChainID.Cmp(OpFujiChainID) == 0 { + return isForked(BobaFujiTuringCharge2ForkNum, num) + } + if c.ChainID.Cmp(OpOperaChainID) == 0 { + return isForked(BobaOperaTuringCharge2ForkNum, num) + } + if c.ChainID.Cmp(OpOperaTestnetChainID) == 0 { + return isForked(BobaOperaTestnetTuringCharge2ForkNum, num) + } + return true +} + func (c *ChainConfig) IsEthereumL2() bool { if os.Getenv("IS_ETHEREUM_L2") == "true" { return true diff --git a/ops/docker-compose.yml b/ops/docker-compose.yml index 3138c279c3..ad6d4cb804 100644 --- a/ops/docker-compose.yml +++ b/ops/docker-compose.yml @@ -107,6 +107,7 @@ services: - l1_chain - dtl image: bobanetwork/deployer:latest + restart: on-failure build: context: .. dockerfile: ./ops/docker/Dockerfile.packages @@ -147,6 +148,7 @@ services: - dtl - l2geth image: bobanetwork/boba_deployer:latest + restart: on-failure build: context: .. dockerfile: ./ops/docker/Dockerfile.packages @@ -416,7 +418,7 @@ services: environment: L1_NODE_WEB3_URL: http://l1_chain:8545 L1_CONFIRMATIONS: 8 - L2_NODE_WEB3_URL: http://l2geth:8545 + L2_NODE_WEB3_URL: http://replica:8545 L2_CHECK_INTERVAL: 10 VERIFIER_WEB3_URL: http://verifier:8545 ADDRESS_MANAGER_ADDRESS: "0x5FbDB2315678afecb367f032d93F642f64180aa3" diff --git a/ops/docker/Dockerfile.boba_gas-price-oracle b/ops/docker/Dockerfile.boba_gas-price-oracle index 217c5ae1bc..d21d018b9e 100644 --- a/ops/docker/Dockerfile.boba_gas-price-oracle +++ b/ops/docker/Dockerfile.boba_gas-price-oracle @@ -7,7 +7,7 @@ WORKDIR /opt/optimism/ COPY --from=builder /optimism/*.json /optimism/yarn.lock ./ COPY --from=builder /optimism/node_modules ./node_modules # copy @boba package -COPY --from=builder /optimism/packages/boba/contracts ./node_modules/@boba/contracts +COPY --from=builder /optimism/packages/boba/contracts ./node_modules/@bobanetwork/contracts # copy deps (would have been nice if docker followed the symlinks required) COPY --from=builder /optimism/packages/core-utils/package.json ./packages/core-utils/package.json diff --git a/ops/docker/Dockerfile.bobalink b/ops/docker/Dockerfile.bobalink index 86977c231a..3b3eeb275c 100644 --- a/ops/docker/Dockerfile.bobalink +++ b/ops/docker/Dockerfile.bobalink @@ -12,7 +12,7 @@ COPY --from=builder /optimism/yarn.lock . COPY --from=builder /optimism/node_modules ./node_modules # copy @boba package -COPY --from=builder /optimism/packages/boba/contracts ./node_modules/@boba/contracts +COPY --from=builder /optimism/packages/boba/contracts ./node_modules/@bobanetwork/contracts # copy deps (would have been nice if docker followed the symlinks required) COPY --from=builder /optimism/packages/core-utils/package.json ./packages/core-utils/package.json diff --git a/ops/docker/Dockerfile.packages b/ops/docker/Dockerfile.packages index 3f239cfe8d..3297cc39fb 100644 --- a/ops/docker/Dockerfile.packages +++ b/ops/docker/Dockerfile.packages @@ -16,7 +16,26 @@ ADD ${SOLC_PREFIX}solc-linux-amd64-v0.8.11+commit.d7f03943 ./solc-v0.8.11+commi ADD ${SOLC_PREFIX}solc-linux-amd64-v0.8.15+commit.e14f2714 ./solc-v0.8.15+commit.e14f2714 ADD ${SOLC_PREFIX}solc-linux-amd64-v0.8.17+commit.8df45f5f ./solc-v0.8.17+commit.8df45f5f -FROM node:16-buster-slim as base +FROM node:18.17.1-bullseye-slim as base +# Base: install deps +RUN apt-get update && apt-get install -y \ + curl \ + jq \ + python3 \ + ca-certificates \ + git \ + g++ \ + make \ + gcc \ + musl-dev \ + bash \ + # the following 4 deps are needed for node-hid + # which is a deep sub dependency of ethers to install + # correctly + pkg-config \ + libusb-1.0-0-dev \ + libudev-dev \ + --no-install-recommends ARG BUILDPLATFORM RUN echo "Build Platform: $BUILDPLATFORM" @@ -26,8 +45,8 @@ RUN if echo $BUILDPLATFORM | grep -i "amd64" ; then \ apt-get update -y && apt-get install -y git curl bash jq ; \ elif echo $BUILDPLATFORM | grep -i "arm64" ; then \ echo "Building for Mac ($BUILDPLATFORM)" ; \ - apt-get update -y && apt-get install -y git curl bash jq python3.7 make gcc libudev-dev libusb-1.0-0-dev g++ pkg-config libc6-amd64-cross ; \ - update-alternatives --install /usr/bin/python python /usr/bin/python3.7 10 ; \ + apt-get update -y && apt-get install -y git curl bash jq python3 make gcc libudev-dev libusb-1.0-0-dev g++ pkg-config libc6-amd64-cross ; \ + update-alternatives --install /usr/bin/python python /usr/bin/python3 10 ; \ elif echo "\"`uname -a`\"" | grep -q -E -i "aarch" ; then \ apt-get update -y && apt-get install -y git curl bash jq python make gcc libudev-dev libusb-1.0-0-dev g++ pkg-config ; \ echo "Building for aarch64 GNU/Linux" ; \ @@ -89,7 +108,7 @@ COPY --from=downloader solc-v0.8.17+commit.8df45f5f /root/.cache/hardhat-nodejs/ RUN chmod +x /root/.cache/hardhat-nodejs/compilers-v2/linux-amd64/* # build it! -RUN yarn build +RUN yarn && yarn install && yarn build FROM base as packages WORKDIR /opt/optimism @@ -104,6 +123,8 @@ COPY --from=builder /opt/optimism/packages/boba/bundler_sdk ./packages/boba/bund COPY --from=builder /opt/optimism/packages/contracts ./packages/contracts COPY --from=builder /opt/optimism/packages/boba/contracts ./packages/boba/contracts COPY --from=builder /opt/optimism/packages/boba/turing ./packages/boba/turing +COPY --from=builder /opt/optimism/packages/boba/bobalink ./packages/boba/bobalink +COPY --from=builder /opt/optimism/packages/boba/gas-price-oracle ./packages/boba/gas-price-oracle FROM packages as deployer WORKDIR /opt/optimism/packages/contracts @@ -111,6 +132,8 @@ COPY ./ops/scripts/deployer.sh . CMD ["yarn", "run", "deploy"] FROM packages as boba_deployer +COPY --from=builder /opt/optimism/packages/boba/gas-price-oracle ./gas-price-oracle +COPY --from=builder /opt/optimism/packages/boba/bobalink ./bobalink WORKDIR /opt/optimism/packages/boba/contracts ENTRYPOINT ["./scripts/wait-for-l1-and-l2.sh", "./scripts/deployer.sh"] diff --git a/ops/docker/Dockerfile.teleportation b/ops/docker/Dockerfile.teleportation index 083ebd352d..889c65f65a 100644 --- a/ops/docker/Dockerfile.teleportation +++ b/ops/docker/Dockerfile.teleportation @@ -12,7 +12,7 @@ COPY --from=builder /optimism/yarn.lock . COPY --from=builder /optimism/node_modules ./node_modules # copy @boba package -COPY --from=builder /optimism/packages/boba/contracts ./node_modules/@boba/contracts +COPY --from=builder /optimism/packages/boba/contracts ./node_modules/@bobanetwork/contracts # copy deps (would have been nice if docker followed the symlinks required) COPY --from=builder /optimism/packages/core-utils/package.json ./packages/core-utils/package.json diff --git a/ops_boba/api/package.json b/ops_boba/api/package.json index 2ceb7eaa89..8a901db1f9 100644 --- a/ops_boba/api/package.json +++ b/ops_boba/api/package.json @@ -1,5 +1,5 @@ { - "name": "@boba/api", + "name": "@bobanetwork/api", "version": "0.0.1", "description": "BOBA API", "private": true, diff --git a/ops_boba/monitor/package.json b/ops_boba/monitor/package.json index cf927b7216..0424d8fefd 100644 --- a/ops_boba/monitor/package.json +++ b/ops_boba/monitor/package.json @@ -1,5 +1,5 @@ { - "name": "@boba/monitor", + "name": "@bobanetwork/monitor", "version": "1.0.0", "description": "boba monitor", "main": "index.js", @@ -10,12 +10,12 @@ }, "license": "MIT", "dependencies": { - "@boba/contracts": "0.0.1", - "@boba/register": "0.0.1", + "@bobanetwork/contracts": "0.0.2", + "@bobanetwork/register": "0.0.2", "@eth-optimism/common-ts": "0.2.2", - "@eth-optimism/contracts": "^0.5.11", + "@bobanetwork/core_contracts": "^0.5.13", "@eth-optimism/core-utils": "0.8.1", - "@eth-optimism/sdk": "1.0.1", + "@bobanetwork/sdk": "1.0.7", "@nomiclabs/hardhat-ethers": "^2.0.2", "@nomiclabs/hardhat-waffle": "^2.0.1", "chai": "^4.3.4", diff --git a/ops_boba/monitor/services/blockMonitor.js b/ops_boba/monitor/services/blockMonitor.js index 0ac600c0f3..daf5a42067 100644 --- a/ops_boba/monitor/services/blockMonitor.js +++ b/ops_boba/monitor/services/blockMonitor.js @@ -5,7 +5,7 @@ const DatabaseService = require('./database.service') const GlobalEnv = require('./utils/globalEnv') const fetch = require('node-fetch') const { sleep } = require('@eth-optimism/core-utils') -const { getRelayedMessageEventsFromGraph } = require('@eth-optimism/sdk') +const { getRelayedMessageEventsFromGraph } = require('@bobanetwork/sdk') const { orderBy } = require('lodash') class BlockMonitorService extends GlobalEnv { diff --git a/ops_boba/monitor/services/layerZeroBridge.js b/ops_boba/monitor/services/layerZeroBridge.js index 174360003c..0cae9504d4 100644 --- a/ops_boba/monitor/services/layerZeroBridge.js +++ b/ops_boba/monitor/services/layerZeroBridge.js @@ -6,11 +6,11 @@ const GlobalEnv = require('./utils/globalEnv') const fetch = require('node-fetch') const { sleep } = require('@eth-optimism/core-utils') -const EthBridgeJson = require('@boba/contracts/artifacts/contracts/lzTokenBridge/EthBridge.sol/EthBridge.json') -const AltL1Bridge = require('@boba/contracts/artifacts/contracts/lzTokenBridge/AltL1Bridge.sol/AltL1Bridge.json') +const EthBridgeJson = require('@bobanetwork/contracts/artifacts/contracts/lzTokenBridge/EthBridge.sol/EthBridge.json') +const AltL1Bridge = require('@bobanetwork/contracts/artifacts/contracts/lzTokenBridge/AltL1Bridge.sol/AltL1Bridge.json') -const layerZeroMainnetAddresses = require('@boba/register/addresses/layerZeroMainnet.json') -const layerZeroTestnetAddresses = require('@boba/register/addresses/layerZeroTestnet.json') +const layerZeroMainnetAddresses = require('@bobanetwork/register/addresses/layerZeroMainnet.json') +const layerZeroTestnetAddresses = require('@bobanetwork/register/addresses/layerZeroTestnet.json') class LayerZeroBridgeMonitor extends GlobalEnv { constructor() { diff --git a/ops_boba/monitor/services/utils/globalEnv.js b/ops_boba/monitor/services/utils/globalEnv.js index ca8c632b55..c80b3fc538 100644 --- a/ops_boba/monitor/services/utils/globalEnv.js +++ b/ops_boba/monitor/services/utils/globalEnv.js @@ -1,9 +1,9 @@ #!/usr/bin/env node const ethers = require('ethers') -const { getContractFactory } = require('@eth-optimism/contracts') -const { getBobaContractAt, getBobaContractABI } = require('@boba/contracts') -const { CrossChainMessenger, isChainIDForGraph } = require('@eth-optimism/sdk') +const { getContractFactory } = require('@bobanetwork/core_contracts') +const { getBobaContractAt, getBobaContractABI } = require('@bobanetwork/contracts') +const { CrossChainMessenger, isChainIDForGraph } = require('@bobanetwork/sdk') const { Logger } = require('@eth-optimism/common-ts') const fetch = require('node-fetch') diff --git a/ops_boba/monitor/test/bobaStrawMonitor.spec.js b/ops_boba/monitor/test/bobaStrawMonitor.spec.js index f7c987bd87..3191e8308b 100644 --- a/ops_boba/monitor/test/bobaStrawMonitor.spec.js +++ b/ops_boba/monitor/test/bobaStrawMonitor.spec.js @@ -3,8 +3,8 @@ const { expect } = require('./setup') const bobaStrawMonitorService = require('../services/bobaStrawMonitor') const { formatBigNumberToEther } = require('../services/utils/utils') -const FluxAggregatorJson = require('@boba/contracts/artifacts/contracts/oracle/FluxAggregator.sol/FluxAggregator.json') -const L1ERC20Json = require('@boba/contracts/artifacts/contracts/test-helpers/L1ERC20.sol/L1ERC20.json') +const FluxAggregatorJson = require('@bobanetwork/contracts/artifacts/contracts/oracle/FluxAggregator.sol/FluxAggregator.json') +const L1ERC20Json = require('@bobanetwork/contracts/artifacts/contracts/test-helpers/L1ERC20.sol/L1ERC20.json') let service let FluxAggregator diff --git a/packages/boba/account-abstraction/bin/deploy.ts b/packages/boba/account-abstraction/bin/deploy.ts index 4b57636826..14654570c4 100644 --- a/packages/boba/account-abstraction/bin/deploy.ts +++ b/packages/boba/account-abstraction/bin/deploy.ts @@ -1,5 +1,5 @@ import { Wallet, providers } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' /* eslint-disable */ require('dotenv').config() diff --git a/packages/boba/bobalink/.depcheckrc b/packages/boba/bobalink/.depcheckrc new file mode 100644 index 0000000000..bb5175620f --- /dev/null +++ b/packages/boba/bobalink/.depcheckrc @@ -0,0 +1,5 @@ +ignores: [ + "@ethersproject/rlp", + "@ethersproject/contracts", + "@sentry/node" +] diff --git a/packages/boba/bobalink/package.json b/packages/boba/bobalink/package.json index e7440924fa..2e56661f50 100644 --- a/packages/boba/bobalink/package.json +++ b/packages/boba/bobalink/package.json @@ -1,5 +1,5 @@ { - "name": "@boba/bobalink", + "name": "@bobanetwork/bobalink", "version": "1.0.0", "description": "BOBA Link Service", "main": "dist/src/index", @@ -19,7 +19,10 @@ }, "license": "MIT", "devDependencies": { - "@boba/contracts": "0.0.1", + "@sentry/node": "^7.30.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/contracts": "^5.4.1", + "@bobanetwork/contracts": "0.0.2", "@eth-optimism/core-utils": "0.8.1", "@types/mocha": "^8.2.2", "@nomiclabs/hardhat-ethers": "^2.0.2", @@ -32,6 +35,8 @@ "chai": "^4.3.4" }, "dependencies": { + "@ethersproject/contracts": "^5.4.1", + "@sentry/node": "^7.30.0", "@eth-optimism/common-ts": "0.2.2", "bcfg": "^0.2.1", "dotenv": "^8.2.0", diff --git a/packages/boba/bobalink/src/service.ts b/packages/boba/bobalink/src/service.ts index 0bb85fabc0..ccafcd0dc9 100644 --- a/packages/boba/bobalink/src/service.ts +++ b/packages/boba/bobalink/src/service.ts @@ -4,7 +4,7 @@ import { Contract, Wallet, BigNumber, providers } from 'ethers' /* Imports: Internal */ import { sleep } from '@eth-optimism/core-utils' import { BaseService } from '@eth-optimism/common-ts' -import { getBobaContractABI } from '@boba/contracts' +import { getBobaContractABI } from '@bobanetwork/contracts' /* Imports: Inteface */ import { diff --git a/packages/boba/bobalink/test/bobalink.spec.ts b/packages/boba/bobalink/test/bobalink.spec.ts index f975ac4348..0f86255c0c 100644 --- a/packages/boba/bobalink/test/bobalink.spec.ts +++ b/packages/boba/bobalink/test/bobalink.spec.ts @@ -5,9 +5,9 @@ import { ethers } from 'hardhat' import { ContractFactory, Contract, Signer, Wallet, utils } from 'ethers' /* Imports: Artifacts */ -import FluxAggregatorJson from '@boba/contracts/artifacts/contracts/oracle/FluxAggregator.sol/FluxAggregator.json' -import FluxAggregatorHCJson from '@boba/contracts/artifacts/contracts/oracle/FluxAggregatorHC.sol/FluxAggregatorHC.json' -import L1ERC20Json from '@boba/contracts/artifacts/contracts/test-helpers/L1ERC20.sol/L1ERC20.json' +import FluxAggregatorJson from '@bobanetwork/contracts/artifacts/contracts/oracle/FluxAggregator.sol/FluxAggregator.json' +import FluxAggregatorHCJson from '@bobanetwork/contracts/artifacts/contracts/oracle/FluxAggregatorHC.sol/FluxAggregatorHC.json' +import L1ERC20Json from '@bobanetwork/contracts/artifacts/contracts/test-helpers/L1ERC20.sol/L1ERC20.json' /* Imports: Interface */ import { BobaLinkPairs } from '../src/utils/types' diff --git a/packages/boba/bundler/package.json b/packages/boba/bundler/package.json index fdce7c064e..833675b075 100644 --- a/packages/boba/bundler/package.json +++ b/packages/boba/bundler/package.json @@ -1,6 +1,6 @@ { "private": true, - "name": "@boba/bundler", + "name": "@bobanetwork/bundler", "version": "0.2.0", "author": "Dror Tirosh", "license": "MIT", diff --git a/packages/boba/bundler/src/runBundler.ts b/packages/boba/bundler/src/runBundler.ts index 85e7bcd6b9..b36a29b708 100644 --- a/packages/boba/bundler/src/runBundler.ts +++ b/packages/boba/bundler/src/runBundler.ts @@ -5,7 +5,7 @@ import fs from 'fs' import { Command } from 'commander' import { erc4337RuntimeVersion } from '@bobanetwork/bundler_utils' import { ethers, Wallet } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { BundlerServer } from './BundlerServer' import { UserOpMethodHandler } from './UserOpMethodHandler' import { diff --git a/packages/boba/contracts/bin/deploy.ts b/packages/boba/contracts/bin/deploy.ts index cb971afbe9..acfb012708 100644 --- a/packages/boba/contracts/bin/deploy.ts +++ b/packages/boba/contracts/bin/deploy.ts @@ -1,6 +1,6 @@ import { Wallet, providers } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' -import { supportedLocalTestnet } from '@eth-optimism/contracts/src/local-network-config' +import { getContractFactory } from '@bobanetwork/core_contracts' +import { supportedLocalTestnet } from '@bobanetwork/core_contracts/src/local-network-config' /* eslint-disable */ require('dotenv').config() diff --git a/packages/boba/contracts/contracts/DiscretionaryExitBurn.sol b/packages/boba/contracts/contracts/DiscretionaryExitBurn.sol index e2b153a741..2b3138987c 100644 --- a/packages/boba/contracts/contracts/DiscretionaryExitBurn.sol +++ b/packages/boba/contracts/contracts/DiscretionaryExitBurn.sol @@ -1,10 +1,10 @@ // SPDX-License-Identifier: MIT pragma solidity >0.7.5; -import "@eth-optimism/contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; +import "@bobanetwork/core_contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; -import "@eth-optimism/contracts/contracts/L2/messaging/IL2ERC20Bridge.sol"; -import "@eth-optimism/contracts/contracts/L2/predeploys/OVM_GasPriceOracle.sol"; +import "@bobanetwork/core_contracts/contracts/L2/messaging/IL2ERC20Bridge.sol"; +import "@bobanetwork/core_contracts/contracts/L2/predeploys/OVM_GasPriceOracle.sol"; import '@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol'; import '@openzeppelin/contracts/utils/math/SafeMath.sol'; @@ -65,4 +65,4 @@ contract DiscretionaryExitBurn { // call withdrawTo on the l2Bridge IL2ERC20Bridge(l2Bridge).withdrawTo(_l2Token, msg.sender, _amount, _l1Gas, _data); } -} \ No newline at end of file +} diff --git a/packages/boba/contracts/contracts/DiscretionaryExitFee.sol b/packages/boba/contracts/contracts/DiscretionaryExitFee.sol index 1145f63253..ceb5b2f976 100644 --- a/packages/boba/contracts/contracts/DiscretionaryExitFee.sol +++ b/packages/boba/contracts/contracts/DiscretionaryExitFee.sol @@ -1,10 +1,10 @@ // SPDX-License-Identifier: MIT pragma solidity >0.7.5; -import "@eth-optimism/contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; +import "@bobanetwork/core_contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; -import "@eth-optimism/contracts/contracts/L2/messaging/IL2ERC20Bridge.sol"; -import "@eth-optimism/contracts/contracts/L2/predeploys/OVM_GasPriceOracle.sol"; +import "@bobanetwork/core_contracts/contracts/L2/messaging/IL2ERC20Bridge.sol"; +import "@bobanetwork/core_contracts/contracts/L2/predeploys/OVM_GasPriceOracle.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/utils/math/SafeMath.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; diff --git a/packages/boba/contracts/contracts/DiscretionaryExitFeeAltL1.sol b/packages/boba/contracts/contracts/DiscretionaryExitFeeAltL1.sol index b973df2f07..67d01f35f9 100644 --- a/packages/boba/contracts/contracts/DiscretionaryExitFeeAltL1.sol +++ b/packages/boba/contracts/contracts/DiscretionaryExitFeeAltL1.sol @@ -1,10 +1,10 @@ // SPDX-License-Identifier: MIT pragma solidity >0.7.5; -import "@eth-optimism/contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; +import "@bobanetwork/core_contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; -import "@eth-optimism/contracts/contracts/L2/messaging/IL2ERC20Bridge.sol"; -import "@eth-optimism/contracts/contracts/L2/predeploys/OVM_GasPriceOracle.sol"; +import "@bobanetwork/core_contracts/contracts/L2/messaging/IL2ERC20Bridge.sol"; +import "@bobanetwork/core_contracts/contracts/L2/predeploys/OVM_GasPriceOracle.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/utils/math/SafeMath.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; diff --git a/packages/boba/contracts/contracts/ERC1155Bridges/L1ERC1155Bridge.sol b/packages/boba/contracts/contracts/ERC1155Bridges/L1ERC1155Bridge.sol index 073a5670ba..75f4c10e9d 100644 --- a/packages/boba/contracts/contracts/ERC1155Bridges/L1ERC1155Bridge.sol +++ b/packages/boba/contracts/contracts/ERC1155Bridges/L1ERC1155Bridge.sol @@ -11,8 +11,8 @@ import { IERC1155 } from "@openzeppelin/contracts/token/ERC1155/IERC1155.sol"; import { IERC1155MetadataURI } from "@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol"; /* Library Imports */ -import { CrossDomainEnabled } from "@eth-optimism/contracts/contracts/libraries/bridge/CrossDomainEnabled.sol"; -import { Lib_PredeployAddresses } from "@eth-optimism/contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; +import { CrossDomainEnabled } from "@bobanetwork/core_contracts/contracts/libraries/bridge/CrossDomainEnabled.sol"; +import { Lib_PredeployAddresses } from "@bobanetwork/core_contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; import { SafeMath } from "@openzeppelin/contracts/utils/math/SafeMath.sol"; import { Address } from "@openzeppelin/contracts/utils/Address.sol"; import { ERC1155Holder } from "@openzeppelin/contracts/token/ERC1155/utils/ERC1155Holder.sol"; diff --git a/packages/boba/contracts/contracts/ERC1155Bridges/L2ERC1155Bridge.sol b/packages/boba/contracts/contracts/ERC1155Bridges/L2ERC1155Bridge.sol index aebd332ca0..aba7e4600f 100644 --- a/packages/boba/contracts/contracts/ERC1155Bridges/L2ERC1155Bridge.sol +++ b/packages/boba/contracts/contracts/ERC1155Bridges/L2ERC1155Bridge.sol @@ -11,9 +11,9 @@ import { IERC1155MetadataURI } from "@openzeppelin/contracts/token/ERC1155/exten /* Library Imports */ import { ERC165Checker } from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol"; -import { CrossDomainEnabled } from "@eth-optimism/contracts/contracts/libraries/bridge/CrossDomainEnabled.sol"; +import { CrossDomainEnabled } from "@bobanetwork/core_contracts/contracts/libraries/bridge/CrossDomainEnabled.sol"; import { ERC1155Holder } from "@openzeppelin/contracts/token/ERC1155/utils/ERC1155Holder.sol"; -import "@eth-optimism/contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; +import "@bobanetwork/core_contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; /* Contract Imports */ import { IL2StandardERC1155 } from "../standards/IL2StandardERC1155.sol"; @@ -21,7 +21,7 @@ import { IL2StandardERC1155 } from "../standards/IL2StandardERC1155.sol"; /* External Imports */ import '@openzeppelin/contracts/utils/math/SafeMath.sol'; import '@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol'; -import "@eth-optimism/contracts/contracts/L2/predeploys/OVM_GasPriceOracle.sol"; +import "@bobanetwork/core_contracts/contracts/L2/predeploys/OVM_GasPriceOracle.sol"; import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; diff --git a/packages/boba/contracts/contracts/ERC1155Bridges/L2ERC1155BridgeAltL1.sol b/packages/boba/contracts/contracts/ERC1155Bridges/L2ERC1155BridgeAltL1.sol index fe98dacd57..d450d07e01 100644 --- a/packages/boba/contracts/contracts/ERC1155Bridges/L2ERC1155BridgeAltL1.sol +++ b/packages/boba/contracts/contracts/ERC1155Bridges/L2ERC1155BridgeAltL1.sol @@ -11,9 +11,9 @@ import { IERC1155MetadataURI } from "@openzeppelin/contracts/token/ERC1155/exten /* Library Imports */ import { ERC165Checker } from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol"; -import { CrossDomainEnabled } from "@eth-optimism/contracts/contracts/libraries/bridge/CrossDomainEnabled.sol"; +import { CrossDomainEnabled } from "@bobanetwork/core_contracts/contracts/libraries/bridge/CrossDomainEnabled.sol"; import { ERC1155Holder } from "@openzeppelin/contracts/token/ERC1155/utils/ERC1155Holder.sol"; -import "@eth-optimism/contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; +import "@bobanetwork/core_contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; /* Contract Imports */ import { IL2StandardERC1155 } from "../standards/IL2StandardERC1155.sol"; @@ -21,7 +21,7 @@ import { IL2StandardERC1155 } from "../standards/IL2StandardERC1155.sol"; /* External Imports */ import '@openzeppelin/contracts/utils/math/SafeMath.sol'; import '@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol'; -import "@eth-optimism/contracts/contracts/L2/predeploys/OVM_GasPriceOracle.sol"; +import "@bobanetwork/core_contracts/contracts/L2/predeploys/OVM_GasPriceOracle.sol"; import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; diff --git a/packages/boba/contracts/contracts/ERC721Bridges/L1NFTBridge.sol b/packages/boba/contracts/contracts/ERC721Bridges/L1NFTBridge.sol index a98c143298..322c092213 100644 --- a/packages/boba/contracts/contracts/ERC721Bridges/L1NFTBridge.sol +++ b/packages/boba/contracts/contracts/ERC721Bridges/L1NFTBridge.sol @@ -11,8 +11,8 @@ import { IERC721 } from "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import { IERC721Metadata } from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol"; /* Library Imports */ -import { CrossDomainEnabled } from "@eth-optimism/contracts/contracts/libraries/bridge/CrossDomainEnabled.sol"; -import { Lib_PredeployAddresses } from "@eth-optimism/contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; +import { CrossDomainEnabled } from "@bobanetwork/core_contracts/contracts/libraries/bridge/CrossDomainEnabled.sol"; +import { Lib_PredeployAddresses } from "@bobanetwork/core_contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; import { SafeMath } from "@openzeppelin/contracts/utils/math/SafeMath.sol"; import { Address } from "@openzeppelin/contracts/utils/Address.sol"; import { ERC721Holder } from "@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol"; diff --git a/packages/boba/contracts/contracts/ERC721Bridges/L2NFTBridge.sol b/packages/boba/contracts/contracts/ERC721Bridges/L2NFTBridge.sol index cc0a90e1b7..41b73ecceb 100644 --- a/packages/boba/contracts/contracts/ERC721Bridges/L2NFTBridge.sol +++ b/packages/boba/contracts/contracts/ERC721Bridges/L2NFTBridge.sol @@ -11,9 +11,9 @@ import { IERC721Metadata } from "@openzeppelin/contracts/token/ERC721/extensions /* Library Imports */ import { ERC165Checker } from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol"; -import { CrossDomainEnabled } from "@eth-optimism/contracts/contracts/libraries/bridge/CrossDomainEnabled.sol"; +import { CrossDomainEnabled } from "@bobanetwork/core_contracts/contracts/libraries/bridge/CrossDomainEnabled.sol"; import { ERC721Holder } from "@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol"; -import "@eth-optimism/contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; +import "@bobanetwork/core_contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; /* Contract Imports */ import { IL2StandardERC721 } from "../standards/IL2StandardERC721.sol"; @@ -22,7 +22,7 @@ import { iSupportBridgeExtraData } from "./interfaces/iSupportBridgeExtraData.so /* External Imports */ import '@openzeppelin/contracts/utils/math/SafeMath.sol'; import '@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol'; -import "@eth-optimism/contracts/contracts/L2/predeploys/OVM_GasPriceOracle.sol"; +import "@bobanetwork/core_contracts/contracts/L2/predeploys/OVM_GasPriceOracle.sol"; import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; diff --git a/packages/boba/contracts/contracts/ERC721Bridges/L2NFTBridgeAltL1.sol b/packages/boba/contracts/contracts/ERC721Bridges/L2NFTBridgeAltL1.sol index 83bdbc442b..66a71619a8 100644 --- a/packages/boba/contracts/contracts/ERC721Bridges/L2NFTBridgeAltL1.sol +++ b/packages/boba/contracts/contracts/ERC721Bridges/L2NFTBridgeAltL1.sol @@ -11,9 +11,9 @@ import { IERC721Metadata } from "@openzeppelin/contracts/token/ERC721/extensions /* Library Imports */ import { ERC165Checker } from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol"; -import { CrossDomainEnabled } from "@eth-optimism/contracts/contracts/libraries/bridge/CrossDomainEnabled.sol"; +import { CrossDomainEnabled } from "@bobanetwork/core_contracts/contracts/libraries/bridge/CrossDomainEnabled.sol"; import { ERC721Holder } from "@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol"; -import "@eth-optimism/contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; +import "@bobanetwork/core_contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; /* Contract Imports */ import { IL2StandardERC721 } from "../standards/IL2StandardERC721.sol"; @@ -22,7 +22,7 @@ import { iSupportBridgeExtraData } from "./interfaces/iSupportBridgeExtraData.so /* External Imports */ import '@openzeppelin/contracts/utils/math/SafeMath.sol'; import '@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol'; -import "@eth-optimism/contracts/contracts/L2/predeploys/OVM_GasPriceOracle.sol"; +import "@bobanetwork/core_contracts/contracts/L2/predeploys/OVM_GasPriceOracle.sol"; import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; diff --git a/packages/boba/contracts/contracts/IL1CrossDomainMessengerFast.sol b/packages/boba/contracts/contracts/IL1CrossDomainMessengerFast.sol index 1b1c465bd9..cf48f7af13 100644 --- a/packages/boba/contracts/contracts/IL1CrossDomainMessengerFast.sol +++ b/packages/boba/contracts/contracts/IL1CrossDomainMessengerFast.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.9; /* Interface Imports */ -import { IL1CrossDomainMessenger } from "@eth-optimism/contracts/contracts/L1/messaging/IL1CrossDomainMessenger.sol"; +import { IL1CrossDomainMessenger } from "@bobanetwork/core_contracts/contracts/L1/messaging/IL1CrossDomainMessenger.sol"; /** * @title IL1CrossDomainMessengerFast diff --git a/packages/boba/contracts/contracts/L1CrossDomainMessengerFast.sol b/packages/boba/contracts/contracts/L1CrossDomainMessengerFast.sol index 3c9fb71f6d..b725f58358 100644 --- a/packages/boba/contracts/contracts/L1CrossDomainMessengerFast.sol +++ b/packages/boba/contracts/contracts/L1CrossDomainMessengerFast.sol @@ -2,20 +2,20 @@ pragma solidity >0.8.8; /* Library Imports */ -import { AddressAliasHelper } from "@eth-optimism/contracts/contracts/standards/AddressAliasHelper.sol"; -import { Lib_AddressResolver } from "@eth-optimism/contracts/contracts/libraries/resolver/Lib_AddressResolver.sol"; -import { Lib_OVMCodec } from "@eth-optimism/contracts/contracts/libraries/codec/Lib_OVMCodec.sol"; -import { Lib_AddressManager } from "@eth-optimism/contracts/contracts/libraries/resolver/Lib_AddressManager.sol"; -import { Lib_SecureMerkleTrie } from "@eth-optimism/contracts/contracts/libraries/trie/Lib_SecureMerkleTrie.sol"; -import { Lib_DefaultValues } from "@eth-optimism/contracts/contracts/libraries/constants/Lib_DefaultValues.sol"; -import { Lib_PredeployAddresses } from "@eth-optimism/contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; -import { Lib_CrossDomainUtils } from "@eth-optimism/contracts/contracts/libraries/bridge/Lib_CrossDomainUtils.sol"; +import { AddressAliasHelper } from "@bobanetwork/core_contracts/contracts/standards/AddressAliasHelper.sol"; +import { Lib_AddressResolver } from "@bobanetwork/core_contracts/contracts/libraries/resolver/Lib_AddressResolver.sol"; +import { Lib_OVMCodec } from "@bobanetwork/core_contracts/contracts/libraries/codec/Lib_OVMCodec.sol"; +import { Lib_AddressManager } from "@bobanetwork/core_contracts/contracts/libraries/resolver/Lib_AddressManager.sol"; +import { Lib_SecureMerkleTrie } from "@bobanetwork/core_contracts/contracts/libraries/trie/Lib_SecureMerkleTrie.sol"; +import { Lib_DefaultValues } from "@bobanetwork/core_contracts/contracts/libraries/constants/Lib_DefaultValues.sol"; +import { Lib_PredeployAddresses } from "@bobanetwork/core_contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; +import { Lib_CrossDomainUtils } from "@bobanetwork/core_contracts/contracts/libraries/bridge/Lib_CrossDomainUtils.sol"; /* Interface Imports */ -import { IL1CrossDomainMessenger } from "@eth-optimism/contracts/contracts/L1/messaging/IL1CrossDomainMessenger.sol"; +import { IL1CrossDomainMessenger } from "@bobanetwork/core_contracts/contracts/L1/messaging/IL1CrossDomainMessenger.sol"; import { IL1DepositHash } from "./IL1DepositHash.sol"; -import { ICanonicalTransactionChain } from "@eth-optimism/contracts/contracts/L1/rollup/ICanonicalTransactionChain.sol"; -import { IStateCommitmentChain } from "@eth-optimism/contracts/contracts/L1/rollup/IStateCommitmentChain.sol"; +import { ICanonicalTransactionChain } from "@bobanetwork/core_contracts/contracts/L1/rollup/ICanonicalTransactionChain.sol"; +import { IStateCommitmentChain } from "@bobanetwork/core_contracts/contracts/L1/rollup/IStateCommitmentChain.sol"; /* External Imports */ import { OwnableUpgradeable } from diff --git a/packages/boba/contracts/contracts/L1MultiMessageRelayerFast.sol b/packages/boba/contracts/contracts/L1MultiMessageRelayerFast.sol index 2128918457..2f397e26df 100644 --- a/packages/boba/contracts/contracts/L1MultiMessageRelayerFast.sol +++ b/packages/boba/contracts/contracts/L1MultiMessageRelayerFast.sol @@ -6,7 +6,7 @@ pragma experimental ABIEncoderV2; import { IL1CrossDomainMessengerFast } from "./IL1CrossDomainMessengerFast.sol"; /* Library Imports */ -import { Lib_AddressResolver } from "@eth-optimism/contracts/contracts/libraries/resolver/Lib_AddressResolver.sol"; +import { Lib_AddressResolver } from "@bobanetwork/core_contracts/contracts/libraries/resolver/Lib_AddressResolver.sol"; /** * @title L1MultiMessageRelayerFast diff --git a/packages/boba/contracts/contracts/LP/L1LiquidityPool.sol b/packages/boba/contracts/contracts/LP/L1LiquidityPool.sol index c1a582c2d9..4fc16f19dd 100644 --- a/packages/boba/contracts/contracts/LP/L1LiquidityPool.sol +++ b/packages/boba/contracts/contracts/LP/L1LiquidityPool.sol @@ -12,7 +12,7 @@ import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable. import "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol"; /* External Imports */ -import "@eth-optimism/contracts/contracts/L1/messaging/L1StandardBridge.sol"; +import "@bobanetwork/core_contracts/contracts/L1/messaging/L1StandardBridge.sol"; /** * @dev An L1 LiquidityPool implementation diff --git a/packages/boba/contracts/contracts/LP/L1LiquidityPoolAltL1.sol b/packages/boba/contracts/contracts/LP/L1LiquidityPoolAltL1.sol index 8731b2882b..52b81a5fc7 100644 --- a/packages/boba/contracts/contracts/LP/L1LiquidityPoolAltL1.sol +++ b/packages/boba/contracts/contracts/LP/L1LiquidityPoolAltL1.sol @@ -12,7 +12,7 @@ import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable. import "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol"; /* External Imports */ -import "@eth-optimism/contracts/contracts/L1/messaging/L1StandardBridgeAltL1.sol"; +import "@bobanetwork/core_contracts/contracts/L1/messaging/L1StandardBridgeAltL1.sol"; /** * @dev An L1 LiquidityPool implementation diff --git a/packages/boba/contracts/contracts/LP/L2LiquidityPool.sol b/packages/boba/contracts/contracts/LP/L2LiquidityPool.sol index 620d966cb3..429ea65e71 100644 --- a/packages/boba/contracts/contracts/LP/L2LiquidityPool.sol +++ b/packages/boba/contracts/contracts/LP/L2LiquidityPool.sol @@ -4,16 +4,16 @@ pragma solidity 0.8.9; import "./interfaces/iL1LiquidityPool.sol"; /* Library Imports */ -import "@eth-optimism/contracts/contracts/libraries/bridge/CrossDomainEnabled.sol"; -import "@eth-optimism/contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; +import "@bobanetwork/core_contracts/contracts/libraries/bridge/CrossDomainEnabled.sol"; +import "@bobanetwork/core_contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; /* External Imports */ import '@openzeppelin/contracts/utils/math/SafeMath.sol'; import '@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol'; import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol"; -import "@eth-optimism/contracts/contracts/L2/predeploys/OVM_GasPriceOracle.sol"; -import "@eth-optimism/contracts/contracts/L2/messaging/L2StandardBridge.sol"; +import "@bobanetwork/core_contracts/contracts/L2/predeploys/OVM_GasPriceOracle.sol"; +import "@bobanetwork/core_contracts/contracts/L2/messaging/L2StandardBridge.sol"; /* External Imports */ import "../standards/xL2GovernanceERC20.sol"; diff --git a/packages/boba/contracts/contracts/LP/L2LiquidityPoolAltL1.sol b/packages/boba/contracts/contracts/LP/L2LiquidityPoolAltL1.sol index 5590753ca8..30c84c5304 100644 --- a/packages/boba/contracts/contracts/LP/L2LiquidityPoolAltL1.sol +++ b/packages/boba/contracts/contracts/LP/L2LiquidityPoolAltL1.sol @@ -4,16 +4,16 @@ pragma solidity 0.8.9; import "./interfaces/iL1LiquidityPool.sol"; /* Library Imports */ -import "@eth-optimism/contracts/contracts/libraries/bridge/CrossDomainEnabled.sol"; -import "@eth-optimism/contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; +import "@bobanetwork/core_contracts/contracts/libraries/bridge/CrossDomainEnabled.sol"; +import "@bobanetwork/core_contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol"; /* External Imports */ import '@openzeppelin/contracts/utils/math/SafeMath.sol'; import '@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol'; import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol"; -import "@eth-optimism/contracts/contracts/L2/predeploys/OVM_GasPriceOracle.sol"; -import "@eth-optimism/contracts/contracts/L2/messaging/L2StandardBridgeAltL1.sol"; +import "@bobanetwork/core_contracts/contracts/L2/predeploys/OVM_GasPriceOracle.sol"; +import "@bobanetwork/core_contracts/contracts/L2/messaging/L2StandardBridgeAltL1.sol"; /* External Imports */ import "../standards/xL2GovernanceERC20.sol"; diff --git a/packages/boba/contracts/contracts/libraries/CrossDomainEnabledFast.sol b/packages/boba/contracts/contracts/libraries/CrossDomainEnabledFast.sol index df569dd8dd..af28a88681 100644 --- a/packages/boba/contracts/contracts/libraries/CrossDomainEnabledFast.sol +++ b/packages/boba/contracts/contracts/libraries/CrossDomainEnabledFast.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity >0.7.5; /* Interface Imports */ -import { ICrossDomainMessenger } from "@eth-optimism/contracts/contracts/libraries/bridge/ICrossDomainMessenger.sol"; +import { ICrossDomainMessenger } from "@bobanetwork/core_contracts/contracts/libraries/bridge/ICrossDomainMessenger.sol"; /** * @title CrossDomainEnabledFast diff --git a/packages/boba/contracts/contracts/lzTokenBridge/AltL1Bridge.sol b/packages/boba/contracts/contracts/lzTokenBridge/AltL1Bridge.sol index 777cd6199b..66da3f8d57 100644 --- a/packages/boba/contracts/contracts/lzTokenBridge/AltL1Bridge.sol +++ b/packages/boba/contracts/contracts/lzTokenBridge/AltL1Bridge.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.9; /* Library Imports */ import { ERC165Checker } from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol"; -import { IL2StandardERC20 } from "@eth-optimism/contracts/contracts/standards/IL2StandardERC20.sol"; +import { IL2StandardERC20 } from "@bobanetwork/core_contracts/contracts/standards/IL2StandardERC20.sol"; import { IAltL1Bridge } from "./interfaces/IAltL1Bridge.sol"; import "./lzApp/NonblockingLzApp.sol"; diff --git a/packages/boba/contracts/contracts/standards/L2GovernanceERC20.sol b/packages/boba/contracts/contracts/standards/L2GovernanceERC20.sol index 7b640e7c34..bd02a08f5f 100644 --- a/packages/boba/contracts/contracts/standards/L2GovernanceERC20.sol +++ b/packages/boba/contracts/contracts/standards/L2GovernanceERC20.sol @@ -5,7 +5,7 @@ import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import { ERC20Permit } from "@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol"; import { ERC20Votes } from "@openzeppelin/contracts/token/ERC20/extensions/regenesis/ERC20VotesRegenesis.sol"; import { ERC20VotesComp } from "@openzeppelin/contracts/token/ERC20/extensions/regenesis/ERC20VotesCompRegenesis.sol"; -import { IL2StandardERC20 } from "@eth-optimism/contracts/contracts/standards/IL2StandardERC20.sol"; +import { IL2StandardERC20 } from "@bobanetwork/core_contracts/contracts/standards/IL2StandardERC20.sol"; contract L2GovernanceERC20 is IL2StandardERC20, ERC20, ERC20Permit, ERC20Votes, ERC20VotesComp { address public l1Token; diff --git a/packages/boba/contracts/contracts/test-helpers/Message/L2Message.sol b/packages/boba/contracts/contracts/test-helpers/Message/L2Message.sol index af698bce69..81161f7b77 100644 --- a/packages/boba/contracts/contracts/test-helpers/Message/L2Message.sol +++ b/packages/boba/contracts/contracts/test-helpers/Message/L2Message.sol @@ -2,7 +2,7 @@ pragma solidity >0.7.5; /* Library Imports */ -import { CrossDomainEnabled } from "@eth-optimism/contracts/contracts/libraries/bridge/CrossDomainEnabled.sol"; +import { CrossDomainEnabled } from "@bobanetwork/core_contracts/contracts/libraries/bridge/CrossDomainEnabled.sol"; import { L1Message } from "./L1Message.sol"; contract L2Message is CrossDomainEnabled { diff --git a/packages/boba/contracts/deploy/000-Messenger.deploy.ts b/packages/boba/contracts/deploy/000-Messenger.deploy.ts index 13f470285a..a738b0d8d3 100644 --- a/packages/boba/contracts/deploy/000-Messenger.deploy.ts +++ b/packages/boba/contracts/deploy/000-Messenger.deploy.ts @@ -1,5 +1,5 @@ import { Contract } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { DeployFunction } from 'hardhat-deploy/dist/types' import { deployBobaContract, diff --git a/packages/boba/contracts/deploy/001-Proxy_Messenger.deploy.ts b/packages/boba/contracts/deploy/001-Proxy_Messenger.deploy.ts index aa32d78a37..3cb8382e41 100644 --- a/packages/boba/contracts/deploy/001-Proxy_Messenger.deploy.ts +++ b/packages/boba/contracts/deploy/001-Proxy_Messenger.deploy.ts @@ -1,5 +1,5 @@ import { Contract, ContractFactory } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { DeployFunction } from 'hardhat-deploy/dist/types' import { getDeploymentSubmission, diff --git a/packages/boba/contracts/deploy/002-LiquidityPools.deploy.ts b/packages/boba/contracts/deploy/002-LiquidityPools.deploy.ts index 8314c37055..9db605fe73 100644 --- a/packages/boba/contracts/deploy/002-LiquidityPools.deploy.ts +++ b/packages/boba/contracts/deploy/002-LiquidityPools.deploy.ts @@ -1,6 +1,6 @@ /* Imports: External */ import { Contract } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { DeployFunction } from 'hardhat-deploy/dist/types' import { deployBobaContract, diff --git a/packages/boba/contracts/deploy/003-Proxy_LiquidityPools.deploy.ts b/packages/boba/contracts/deploy/003-Proxy_LiquidityPools.deploy.ts index 1fcc148ead..cc4864a1f8 100644 --- a/packages/boba/contracts/deploy/003-Proxy_LiquidityPools.deploy.ts +++ b/packages/boba/contracts/deploy/003-Proxy_LiquidityPools.deploy.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { Contract } from 'ethers' import { DeployFunction } from 'hardhat-deploy/dist/types' -import { getContractFactory, predeploys } from '@eth-optimism/contracts' +import { getContractFactory, predeploys } from '@bobanetwork/core_contracts' import { deployBobaContract, getDeploymentSubmission, diff --git a/packages/boba/contracts/deploy/004-L2ERC20.deploy.ts b/packages/boba/contracts/deploy/004-L2ERC20.deploy.ts index d59b14a7b5..973adcda2b 100644 --- a/packages/boba/contracts/deploy/004-L2ERC20.deploy.ts +++ b/packages/boba/contracts/deploy/004-L2ERC20.deploy.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { Contract, utils } from 'ethers' import { DeployFunction } from 'hardhat-deploy/dist/types' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { deployBobaContract, getDeploymentSubmission, diff --git a/packages/boba/contracts/deploy/005-TokenPool.deploy.ts b/packages/boba/contracts/deploy/005-TokenPool.deploy.ts index 9463d69576..99d0ee7093 100644 --- a/packages/boba/contracts/deploy/005-TokenPool.deploy.ts +++ b/packages/boba/contracts/deploy/005-TokenPool.deploy.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { Contract } from 'ethers' import { DeployFunction } from 'hardhat-deploy/dist/types' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { deployBobaContract, getDeploymentSubmission, diff --git a/packages/boba/contracts/deploy/006-TestComms.deploy.ts b/packages/boba/contracts/deploy/006-TestComms.deploy.ts index c4ff7d67b8..84b572eae9 100644 --- a/packages/boba/contracts/deploy/006-TestComms.deploy.ts +++ b/packages/boba/contracts/deploy/006-TestComms.deploy.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { Contract } from 'ethers' import { DeployFunction } from 'hardhat-deploy/dist/types' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { deployBobaContract, getDeploymentSubmission, diff --git a/packages/boba/contracts/deploy/007-AtomicSwap.deploy.ts b/packages/boba/contracts/deploy/007-AtomicSwap.deploy.ts index 1021cfb461..1ef90d21a9 100644 --- a/packages/boba/contracts/deploy/007-AtomicSwap.deploy.ts +++ b/packages/boba/contracts/deploy/007-AtomicSwap.deploy.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { Contract } from 'ethers' import { DeployFunction } from 'hardhat-deploy/dist/types' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { deployBobaContract, getDeploymentSubmission, diff --git a/packages/boba/contracts/deploy/008-NFT.deploy.ts b/packages/boba/contracts/deploy/008-NFT.deploy.ts index ec8edee095..83c80558f9 100644 --- a/packages/boba/contracts/deploy/008-NFT.deploy.ts +++ b/packages/boba/contracts/deploy/008-NFT.deploy.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { Contract, BigNumber } from 'ethers' import { DeployFunction } from 'hardhat-deploy/dist/types' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { deployBobaContract, getDeploymentSubmission, diff --git a/packages/boba/contracts/deploy/009-NFTBridges.deploy.ts b/packages/boba/contracts/deploy/009-NFTBridges.deploy.ts index 188d93391a..d23084f274 100644 --- a/packages/boba/contracts/deploy/009-NFTBridges.deploy.ts +++ b/packages/boba/contracts/deploy/009-NFTBridges.deploy.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { Contract } from 'ethers' import { DeployFunction } from 'hardhat-deploy/dist/types' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { deployBobaContract, getDeploymentSubmission, diff --git a/packages/boba/contracts/deploy/010-Proxy_NFTBridges.deploy.ts b/packages/boba/contracts/deploy/010-Proxy_NFTBridges.deploy.ts index a721c38f69..d477f52b14 100644 --- a/packages/boba/contracts/deploy/010-Proxy_NFTBridges.deploy.ts +++ b/packages/boba/contracts/deploy/010-Proxy_NFTBridges.deploy.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { Contract } from 'ethers' import { DeployFunction } from 'hardhat-deploy/dist/types' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { deployBobaContract, getDeploymentSubmission, diff --git a/packages/boba/contracts/deploy/011-L2ERC721.deploy.ts b/packages/boba/contracts/deploy/011-L2ERC721.deploy.ts index 2571f5a8c2..a5e40fee13 100644 --- a/packages/boba/contracts/deploy/011-L2ERC721.deploy.ts +++ b/packages/boba/contracts/deploy/011-L2ERC721.deploy.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { Contract } from 'ethers' import { DeployFunction } from 'hardhat-deploy/dist/types' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { deployBobaContract, getDeploymentSubmission, diff --git a/packages/boba/contracts/deploy/012-MultiMessageRelayerFast.deploy.ts b/packages/boba/contracts/deploy/012-MultiMessageRelayerFast.deploy.ts index 1860910f38..139ed663b5 100644 --- a/packages/boba/contracts/deploy/012-MultiMessageRelayerFast.deploy.ts +++ b/packages/boba/contracts/deploy/012-MultiMessageRelayerFast.deploy.ts @@ -1,5 +1,5 @@ import { Contract } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { DeployFunction } from 'hardhat-deploy/dist/types' import { deployBobaContract, diff --git a/packages/boba/contracts/deploy/013-BobaDao.deploy.ts b/packages/boba/contracts/deploy/013-BobaDao.deploy.ts index 9fd0bd9efa..26af5f4600 100644 --- a/packages/boba/contracts/deploy/013-BobaDao.deploy.ts +++ b/packages/boba/contracts/deploy/013-BobaDao.deploy.ts @@ -1,6 +1,6 @@ /* Imports: External */ import { Contract, utils } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { DeployFunction } from 'hardhat-deploy/dist/types' import { deployBobaContract, diff --git a/packages/boba/contracts/deploy/014-BobaTuring.deploy.ts b/packages/boba/contracts/deploy/014-BobaTuring.deploy.ts index 9df3ff54c1..514d5e0c48 100644 --- a/packages/boba/contracts/deploy/014-BobaTuring.deploy.ts +++ b/packages/boba/contracts/deploy/014-BobaTuring.deploy.ts @@ -1,10 +1,10 @@ /* Imports: External */ import { Contract, utils } from 'ethers' import { DeployFunction, DeploymentSubmission } from 'hardhat-deploy/dist/types' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { registerBobaAddress } from '../src/hardhat-deploy-ethers' -import TuringHelperJson from '@boba/turing-hybrid-compute/artifacts/contracts/TuringHelper.sol/TuringHelper.json' +import TuringHelperJson from '@bobanetwork/turing-hybrid-compute/artifacts/contracts/TuringHelper.sol/TuringHelper.json' let L2Boba: Contract diff --git a/packages/boba/contracts/deploy/015-ExitFee.deploy.ts b/packages/boba/contracts/deploy/015-ExitFee.deploy.ts index 59d66890be..e6afab40b2 100644 --- a/packages/boba/contracts/deploy/015-ExitFee.deploy.ts +++ b/packages/boba/contracts/deploy/015-ExitFee.deploy.ts @@ -1,6 +1,6 @@ /* Imports: External */ import { Contract } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { DeployFunction } from 'hardhat-deploy/dist/types' import { deployBobaContract, diff --git a/packages/boba/contracts/deploy/016-BobaSaving.deploy.ts b/packages/boba/contracts/deploy/016-BobaSaving.deploy.ts index 7fc2604ef1..3156000f8c 100644 --- a/packages/boba/contracts/deploy/016-BobaSaving.deploy.ts +++ b/packages/boba/contracts/deploy/016-BobaSaving.deploy.ts @@ -1,6 +1,6 @@ /* Imports: External */ import { Contract } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { DeployFunction } from 'hardhat-deploy/dist/types' import { deployBobaContract, diff --git a/packages/boba/contracts/deploy/017-FeedRegistry.deploy.ts b/packages/boba/contracts/deploy/017-FeedRegistry.deploy.ts index 785c1f5bb4..7731ba3386 100644 --- a/packages/boba/contracts/deploy/017-FeedRegistry.deploy.ts +++ b/packages/boba/contracts/deploy/017-FeedRegistry.deploy.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { Contract } from 'ethers' import { DeployFunction } from 'hardhat-deploy/dist/types' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { deployBobaContract, getDeploymentSubmission, diff --git a/packages/boba/contracts/deploy/018-PriceFeedOracle.deploy.ts b/packages/boba/contracts/deploy/018-PriceFeedOracle.deploy.ts index e3301c7547..ecacb88143 100644 --- a/packages/boba/contracts/deploy/018-PriceFeedOracle.deploy.ts +++ b/packages/boba/contracts/deploy/018-PriceFeedOracle.deploy.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { Contract, utils } from 'ethers' import { DeployFunction } from 'hardhat-deploy/dist/types' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { deployBobaContract, getDeploymentSubmission, diff --git a/packages/boba/contracts/deploy/019-L2BillingContract.deploy.ts b/packages/boba/contracts/deploy/019-L2BillingContract.deploy.ts index 849e112460..c939d69524 100644 --- a/packages/boba/contracts/deploy/019-L2BillingContract.deploy.ts +++ b/packages/boba/contracts/deploy/019-L2BillingContract.deploy.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { Contract, utils } from 'ethers' import { DeployFunction } from 'hardhat-deploy/dist/types' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { deployBobaContract, getDeploymentSubmission, diff --git a/packages/boba/contracts/deploy/020-Teleportation.deploy.ts b/packages/boba/contracts/deploy/020-Teleportation.deploy.ts index 5a1433d45f..8df742a188 100644 --- a/packages/boba/contracts/deploy/020-Teleportation.deploy.ts +++ b/packages/boba/contracts/deploy/020-Teleportation.deploy.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { Contract, ethers, providers } from 'ethers' import { DeployFunction } from 'hardhat-deploy/dist/types' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { deployBobaContract, getDeploymentSubmission, diff --git a/packages/boba/contracts/deploy/021-ERC1155Bridges.deploy.ts b/packages/boba/contracts/deploy/021-ERC1155Bridges.deploy.ts index b07aaaf189..ad60021f15 100644 --- a/packages/boba/contracts/deploy/021-ERC1155Bridges.deploy.ts +++ b/packages/boba/contracts/deploy/021-ERC1155Bridges.deploy.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { Contract } from 'ethers' import { DeployFunction } from 'hardhat-deploy/dist/types' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { deployBobaContract, getDeploymentSubmission, diff --git a/packages/boba/contracts/deploy/021-Proxy__ERC1155Bridges.deploy.ts b/packages/boba/contracts/deploy/021-Proxy__ERC1155Bridges.deploy.ts index 12c9f36346..04dbf81155 100644 --- a/packages/boba/contracts/deploy/021-Proxy__ERC1155Bridges.deploy.ts +++ b/packages/boba/contracts/deploy/021-Proxy__ERC1155Bridges.deploy.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { Contract } from 'ethers' import { DeployFunction } from 'hardhat-deploy/dist/types' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { deployBobaContract, getDeploymentSubmission, diff --git a/packages/boba/contracts/deploy/022-PriceFeedOracleHC.deploy.ts b/packages/boba/contracts/deploy/022-PriceFeedOracleHC.deploy.ts index 360e6a1016..18df501d85 100644 --- a/packages/boba/contracts/deploy/022-PriceFeedOracleHC.deploy.ts +++ b/packages/boba/contracts/deploy/022-PriceFeedOracleHC.deploy.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { Contract, utils } from 'ethers' import { DeployFunction } from 'hardhat-deploy/dist/types' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { deployBobaContract, getDeploymentSubmission, diff --git a/packages/boba/contracts/package.json b/packages/boba/contracts/package.json index 0b67bdd7f6..22d0968664 100644 --- a/packages/boba/contracts/package.json +++ b/packages/boba/contracts/package.json @@ -1,6 +1,6 @@ { - "name": "@boba/contracts", - "version": "0.0.1", + "name": "@bobanetwork/contracts", + "version": "0.0.2", "description": "BOBA Smart Contracts", "private": true, "author": "Enya.ai", @@ -24,9 +24,9 @@ "test:slither": "slither ." }, "dependencies": { - "@boba/turing-hybrid-compute": "0.2.0", + "@bobanetwork/turing-hybrid-compute": "0.2.0", "@chainlink/contracts": "0.3.1", - "@eth-optimism/contracts": "0.5.11", + "@bobanetwork/core_contracts": "0.5.13", "@eth-optimism/core-utils": "0.8.1", "@ethersproject/abstract-provider": "^5.5.1", "@nomiclabs/hardhat-etherscan": "^3.1.0", diff --git a/packages/boba/contracts/test/contracts/ERC1155Bridges/L2ERC1155BridgesAltL1.spec.ts b/packages/boba/contracts/test/contracts/ERC1155Bridges/L2ERC1155BridgesAltL1.spec.ts index 6355f6b85a..65ca3092b7 100644 --- a/packages/boba/contracts/test/contracts/ERC1155Bridges/L2ERC1155BridgesAltL1.spec.ts +++ b/packages/boba/contracts/test/contracts/ERC1155Bridges/L2ERC1155BridgesAltL1.spec.ts @@ -1,7 +1,7 @@ /* External Imports */ import { ethers } from 'hardhat' import { Signer, Contract } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { expect } from '../../setup' let L1ERC1155Bridge: Contract diff --git a/packages/boba/contracts/test/contracts/ERC1155Bridges/l1ERC1155Bridges.spec.ts b/packages/boba/contracts/test/contracts/ERC1155Bridges/l1ERC1155Bridges.spec.ts index b147078d86..007f3474d4 100644 --- a/packages/boba/contracts/test/contracts/ERC1155Bridges/l1ERC1155Bridges.spec.ts +++ b/packages/boba/contracts/test/contracts/ERC1155Bridges/l1ERC1155Bridges.spec.ts @@ -1,7 +1,7 @@ /* External Imports */ import { ethers } from 'hardhat' import { Signer, Contract } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { expect } from '../../setup' let L1ERC1155Bridge: Contract diff --git a/packages/boba/contracts/test/contracts/ERC1155Bridges/l2ERC1155Bridges.spec.ts b/packages/boba/contracts/test/contracts/ERC1155Bridges/l2ERC1155Bridges.spec.ts index d9b4e30724..768c3b9d6d 100644 --- a/packages/boba/contracts/test/contracts/ERC1155Bridges/l2ERC1155Bridges.spec.ts +++ b/packages/boba/contracts/test/contracts/ERC1155Bridges/l2ERC1155Bridges.spec.ts @@ -1,7 +1,7 @@ /* External Imports */ import { ethers } from 'hardhat' import { Signer, Contract } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { expect } from '../../setup' let L1ERC1155Bridge: Contract diff --git a/packages/boba/contracts/test/contracts/ERC721Bridges/L2NFTBridgeAltL1.spec.ts b/packages/boba/contracts/test/contracts/ERC721Bridges/L2NFTBridgeAltL1.spec.ts index 1f19fda08e..af000caaa1 100644 --- a/packages/boba/contracts/test/contracts/ERC721Bridges/L2NFTBridgeAltL1.spec.ts +++ b/packages/boba/contracts/test/contracts/ERC721Bridges/L2NFTBridgeAltL1.spec.ts @@ -1,7 +1,7 @@ /* External Imports */ import { ethers } from 'hardhat' import { Signer, Contract } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { expect } from '../../setup' let L1NFTBridge: Contract diff --git a/packages/boba/contracts/test/contracts/ERC721Bridges/l1nftbridge.spec.ts b/packages/boba/contracts/test/contracts/ERC721Bridges/l1nftbridge.spec.ts index 3d767ed997..676e44a119 100644 --- a/packages/boba/contracts/test/contracts/ERC721Bridges/l1nftbridge.spec.ts +++ b/packages/boba/contracts/test/contracts/ERC721Bridges/l1nftbridge.spec.ts @@ -1,7 +1,7 @@ /* External Imports */ import { ethers } from 'hardhat' import { Signer, Contract } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { expect } from '../../setup' let L1NFTBridge: Contract diff --git a/packages/boba/contracts/test/contracts/ERC721Bridges/l2nftbridge.spec.ts b/packages/boba/contracts/test/contracts/ERC721Bridges/l2nftbridge.spec.ts index 08e77e83e9..94d7d7d73c 100644 --- a/packages/boba/contracts/test/contracts/ERC721Bridges/l2nftbridge.spec.ts +++ b/packages/boba/contracts/test/contracts/ERC721Bridges/l2nftbridge.spec.ts @@ -1,7 +1,7 @@ /* External Imports */ import { ethers } from 'hardhat' import { Signer, Contract } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { expect } from '../../setup' let L1NFTBridge: Contract diff --git a/packages/boba/gas-price-oracle/.depcheckrc b/packages/boba/gas-price-oracle/.depcheckrc new file mode 100644 index 0000000000..e72f5754c1 --- /dev/null +++ b/packages/boba/gas-price-oracle/.depcheckrc @@ -0,0 +1,4 @@ +ignores: [ + "@nomicfoundation/ethereumjs-evm", + "@ethersproject/providers" +] diff --git a/packages/boba/gas-price-oracle/package.json b/packages/boba/gas-price-oracle/package.json index 9c26226b77..e0bddb890b 100644 --- a/packages/boba/gas-price-oracle/package.json +++ b/packages/boba/gas-price-oracle/package.json @@ -1,5 +1,5 @@ { - "name": "@boba/gas-price-oracle", + "name": "@bobanetwork/gas-price-oracle", "version": "0.1.0", "private": true, "description": "Gas Price Oracle service", @@ -26,8 +26,10 @@ ], "license": "MIT", "devDependencies": { - "@boba/contracts": "0.0.1", - "@eth-optimism/contracts": "0.5.11", + "@ethersproject/providers": "^5.5.0", + "@nomicfoundation/ethereumjs-evm": "1.0.0", + "@bobanetwork/contracts": "0.0.2", + "@bobanetwork/core_contracts": "0.5.12", "@eth-optimism/core-utils": "0.8.1", "@nomiclabs/hardhat-ethers": "^2.0.2", "@nomiclabs/hardhat-waffle": "^2.0.1", @@ -45,6 +47,8 @@ "node-fetch": "^2.6.1" }, "dependencies": { + "@ethersproject/providers": "^5.5.0", + "@nomicfoundation/ethereumjs-evm": "1.0.0", "@eth-optimism/common-ts": "0.2.2", "bcfg": "^0.2.1", "dotenv": "^8.2.0", diff --git a/packages/boba/gas-price-oracle/src/exec/run.ts b/packages/boba/gas-price-oracle/src/exec/run.ts index 408b581574..c21089cb55 100644 --- a/packages/boba/gas-price-oracle/src/exec/run.ts +++ b/packages/boba/gas-price-oracle/src/exec/run.ts @@ -1,6 +1,6 @@ import { Wallet, providers } from 'ethers' import { Bcfg } from '@eth-optimism/core-utils' -import { predeploys } from '@eth-optimism/contracts' +import { predeploys } from '@bobanetwork/core_contracts' import * as dotenv from 'dotenv' import Config from 'bcfg' diff --git a/packages/boba/gas-price-oracle/src/service.ts b/packages/boba/gas-price-oracle/src/service.ts index f83f0c6374..47bf656a2d 100644 --- a/packages/boba/gas-price-oracle/src/service.ts +++ b/packages/boba/gas-price-oracle/src/service.ts @@ -8,8 +8,8 @@ import fetch from 'node-fetch' /* Imports: Internal */ import { sleep } from '@eth-optimism/core-utils' import { BaseService } from '@eth-optimism/common-ts' -import { loadContract, getContractFactory } from '@eth-optimism/contracts' -import { getBobaContractAt } from '@boba/contracts' +import { loadContract, getContractFactory } from '@bobanetwork/core_contracts' +import { getBobaContractAt } from '@bobanetwork/contracts' interface GasPriceOracleOptions { // Providers for interacting with L1 and L2. diff --git a/packages/boba/gas-price-oracle/test/gas-price-oracle-alt-l1.spec.ts b/packages/boba/gas-price-oracle/test/gas-price-oracle-alt-l1.spec.ts index b0b1f13a6e..e212800a83 100644 --- a/packages/boba/gas-price-oracle/test/gas-price-oracle-alt-l1.spec.ts +++ b/packages/boba/gas-price-oracle/test/gas-price-oracle-alt-l1.spec.ts @@ -3,7 +3,7 @@ import { expect } from './setup' /* External Imports */ import { ethers } from 'hardhat' import { ContractFactory, Contract, Signer, BigNumber, Wallet } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { GasPriceOracleAltL1Service } from '../' import fs, { promises as fsPromise } from 'fs' import path from 'path' diff --git a/packages/boba/gas-price-oracle/test/gas-price-oracle.spec.ts b/packages/boba/gas-price-oracle/test/gas-price-oracle.spec.ts index 2b2f795056..3376e28aab 100644 --- a/packages/boba/gas-price-oracle/test/gas-price-oracle.spec.ts +++ b/packages/boba/gas-price-oracle/test/gas-price-oracle.spec.ts @@ -3,7 +3,7 @@ import { expect } from './setup' /* External Imports */ import { ethers } from 'hardhat' import { ContractFactory, Contract, Signer, BigNumber, Wallet } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { GasPriceOracleService } from '../' import fs, { promises as fsPromise } from 'fs' import path from 'path' diff --git a/packages/boba/gateway/.babelrc.json b/packages/boba/gateway/.babelrc.json deleted file mode 100644 index b5cf683b7e..0000000000 --- a/packages/boba/gateway/.babelrc.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "sourceType": "unambiguous", - "presets": [ - [ - "@babel/preset-env", - { - "targets": { - "chrome": 100 - } - } - ], - "@babel/preset-typescript", - "@babel/preset-react" - ], - "plugins": [] -} \ No newline at end of file diff --git a/packages/boba/gateway/.env.example b/packages/boba/gateway/.env.example deleted file mode 100644 index fb0b25aea4..0000000000 --- a/packages/boba/gateway/.env.example +++ /dev/null @@ -1,23 +0,0 @@ -REACT_APP_INFURA_ID= -REACT_APP_POLL_INTERVAL=15000 -REACT_APP_GAS_POLL_INTERVAL=30000 -SKIP_PREFLIGHT_CHECK=true -REACT_APP_WALLET_VERSION=1.0.10 -REACT_APP_ENV=dev -REACT_APP_STATUS=normal -REACT_APP_SPEED_CHECK= -REACT_APP_GA4_MEASUREMENT_ID= -REACT_APP_SENTRY_DSN= -REACT_APP_ENABLE_LOCK_PAGE= # values can be 0 and 1 - -################ -### Ve Dao ##### -################ -# to disable the veDoa set below flat to 1. -REACT_APP_DISABLE_VE_DAO=1 - -##################### -##### WebWallet ##### -##################### -# to disable the walletConnect set below flat to 1. -REACT_APP_DISABLE_WALLETCONNECT=1 diff --git a/packages/boba/gateway/.eslintignore b/packages/boba/gateway/.eslintignore deleted file mode 100644 index 3fdf1747d0..0000000000 --- a/packages/boba/gateway/.eslintignore +++ /dev/null @@ -1,7 +0,0 @@ -# build artifacts -build -bin - -# all javascript files -**/*.js -**/*.json diff --git a/packages/boba/gateway/.eslintrc.js b/packages/boba/gateway/.eslintrc.js deleted file mode 100644 index c707f2cdf3..0000000000 --- a/packages/boba/gateway/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - parser: '@typescript-eslint/parser', - extends: ['../../../.eslintrc.js', 'plugin:storybook/recommended'] -}; \ No newline at end of file diff --git a/packages/boba/gateway/.gitignore b/packages/boba/gateway/.gitignore deleted file mode 100644 index 7afddb8ee8..0000000000 --- a/packages/boba/gateway/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -.idea -coverage -.env.prod -.env.stage diff --git a/packages/boba/gateway/.prettierignore b/packages/boba/gateway/.prettierignore deleted file mode 100644 index 30a8eed98a..0000000000 --- a/packages/boba/gateway/.prettierignore +++ /dev/null @@ -1,9 +0,0 @@ -# Ignore artifacts: -build -coverage - -# Ignore all HTML files: -*.html - -src/**/*.js -src/**/*.json diff --git a/packages/boba/gateway/.prettierrc.json b/packages/boba/gateway/.prettierrc.json deleted file mode 100644 index be295d9d8d..0000000000 --- a/packages/boba/gateway/.prettierrc.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "http://json.schemastore.org/prettierrc", - "trailingComma": "es5", - "tabWidth": 2, - "semi": false, - "singleQuote": true, - "arrowParens": "always" -} diff --git a/packages/boba/gateway/.storybook/decorators.tsx b/packages/boba/gateway/.storybook/decorators.tsx deleted file mode 100644 index ddfc4c0a7b..0000000000 --- a/packages/boba/gateway/.storybook/decorators.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react' -import { ThemeProvider } from 'styled-components' -import { Decorator } from '@storybook/react' -import light from '../src/themes/light' -const withTheme: Decorator = (StoryFn) => ( - - - -) - -export const decorators = [withTheme] diff --git a/packages/boba/gateway/.storybook/main.ts b/packages/boba/gateway/.storybook/main.ts deleted file mode 100644 index ba845b7989..0000000000 --- a/packages/boba/gateway/.storybook/main.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { StorybookConfig } from '@storybook/react-webpack5' -import path from 'path' - -const storybookConfig: StorybookConfig = { - features: { - storyStoreV7: true, - }, - staticDirs: ['../src/assets'], - stories: ['../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - '@storybook/addon-toolbars', - '@storybook/addon-actions', - '@storybook/addon-styling', - { - name: 'storybook-addon-sass-postcss', - options: { - rule: { - test: /\.(scss|sass)$/i, - }, - }, - }, - ], - webpackFinal: async (config) => { - if (!config.resolve) { - config.resolve = {} - } - config.resolve.fallback = { - process: require.resolve('process/browser'), - stream: require.resolve('stream-browserify'), - fs: require.resolve('browserify-fs'), - path: require.resolve('path-browserify'), - assert: require.resolve('assert'), - http: require.resolve('http-browserify'), - https: require.resolve('https-browserify'), - os: require.resolve('os-browserify'), - zlib: require.resolve('browserify-zlib'), - buffer: require.resolve('buffer'), - } - - config.resolve.modules = [ - ...(config.resolve.modules || []), - path.resolve(__dirname, '../src'), - ] - - return config - }, - framework: { - name: '@storybook/react-webpack5', - options: {}, - }, - docs: { - autodocs: true, - }, -} - -export default storybookConfig diff --git a/packages/boba/gateway/.storybook/preview.tsx b/packages/boba/gateway/.storybook/preview.tsx deleted file mode 100644 index 9223e2af22..0000000000 --- a/packages/boba/gateway/.storybook/preview.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import React from 'react' -import styled, { css, ThemeProvider } from 'styled-components' -import { Decorator } from '@storybook/react' -import { Preview } from '@storybook/react' -import light from '../src/themes/light' -import dark from '../src/themes/dark' -import { GlobalStyle } from '../src/themes/globalStyle' - -import '../src/index.scss' - -import { Buffer } from 'buffer' - -//@ts-ignore -if (!window.Buffer) { - //@ts-ignore - window.Buffer = window.Buffer || Buffer -} - -const ThemeBlock = styled.div<{ left?: boolean; fill?: boolean }>( - ({ left, fill, theme }) => - css` - position: absolute; - top: 0; - left: ${left || fill ? 0 : '50vw'}; - border-right: ${left ? '1px solid #202020' : 'none'}; - right: ${left ? '50vw' : 0}; - width: ${fill ? '100vw' : '50vw'}; - height: 100vh; - bottom: 0; - overflow: auto; - padding: 1rem; - box-sizing: border-box; - background: ${theme.background}; - ` -) - -const preview: Preview = { - parameters: { - actions: { argTypesRegex: '^on[A-Z].*' }, - controls: { - matchers: { - color: /(background|color)$/i, - date: /Date$/, - }, - }, - }, -} - -export default preview - -export const withTheme: Decorator = (StoryFn, context) => { - const theme = context.parameters.theme || context.globals.theme - const storyTheme = theme === 'light' ? light : dark - - switch (theme) { - // FIXME: Not working correctly only dark theme is getting applied at both places. - case 'side-by-side': { - return ( - <> - - - - - - - - - - - - - - ) - } - default: { - return ( - - - - - - - ) - } - } -} - -export const globalTypes = { - theme: { - name: 'Theme', - description: 'Theme for the components', - defaultValue: 'light', - toolbar: { - icon: 'circlehollow', - items: [ - { value: 'light', icon: 'circlehollow', title: 'Light Theme' }, - { value: 'dark', icon: 'circle', title: 'Dark Theme' }, - { value: 'side-by-side', icon: 'sidebar', title: 'Both Themes' }, - ], - showName: true, - }, - }, -} - -export const decorators = [withTheme] diff --git a/packages/boba/gateway/bin/release.sh b/packages/boba/gateway/bin/release.sh deleted file mode 100755 index 308b7ff410..0000000000 --- a/packages/boba/gateway/bin/release.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -## Get the latest tag from git - -GIT_TAG=$(git tag -l --sort=-creatordate | head -n 1) -echo "$GIT_TAG" - -## Remove v from latest tag name - -NEW_VERSION="${GIT_TAG:1}" -echo "Latest git tag $NEW_VERSION" - -## Load the current version of gateway package. - -CURRENT_VERSION=$(node -p "require('./package.json').version"); -echo "Current package version $CURRENT_VERSION" - -## Replace the current version tag with new version in package.json -sed -i '' "s/${CURRENT_VERSION}/${NEW_VERSION}/g" ./package.json - -UPDATED_VERSION=$(node -p "require('./package.json').version"); -echo "Package version updated to $UPDATED_VERSION" diff --git a/packages/boba/gateway/config-overrides.js b/packages/boba/gateway/config-overrides.js deleted file mode 100644 index dd3870abb6..0000000000 --- a/packages/boba/gateway/config-overrides.js +++ /dev/null @@ -1,45 +0,0 @@ -// @ts-ignore -const webpack = require('webpack'); -const { Buffer } = require('buffer'); -const path = require('path'); - -module.exports = (config, env) => { - // Resto de tu configuración... - - // Verifica si resolve.fallback ya está definido - if (!config.resolve.fallback) { - config.resolve.fallback = { - process: require.resolve('process/browser'), - stream: require.resolve('stream-browserify'), - fs: require.resolve('browserify-fs'), - path: require.resolve('path-browserify'), - assert: require.resolve('assert'), - http: require.resolve('http-browserify'), - https: require.resolve('https-browserify'), - os: require.resolve('os-browserify'), - zlib: require.resolve('browserify-zlib'), - }; - } else { - config.resolve.fallback.process = require.resolve('process'); - config.resolve.fallback.stream = require.resolve('stream-browserify'); - config.resolve.fallback.fs = require.resolve('browserify-fs'); - config.resolve.fallback.path = require.resolve('path-browserify'); - config.resolve.fallback.assert = require.resolve('assert'); - config.resolve.fallback.http = require.resolve('http-browserify'); - config.resolve.fallback.https = require.resolve('https-browserify'); - config.resolve.fallback.os = require.resolve('os-browserify'); - config.resolve.fallback.zlib = require.resolve('browserify-zlib'); - } - - config.resolve.fallback.Buffer = require.resolve('buffer'); - - // Agrega el plugin ProvidePlugin para process - config.plugins.push( - new webpack.ProvidePlugin({ - Buffer: ['buffer', 'Buffer'], - process: 'process', - }) - ); - - return config; -}; diff --git a/packages/boba/gateway/package.json b/packages/boba/gateway/package.json deleted file mode 100644 index 26a890ff21..0000000000 --- a/packages/boba/gateway/package.json +++ /dev/null @@ -1,158 +0,0 @@ -{ - "name": "@boba/gateway", - "version": "1.0.0", - "private": true, - "scripts": { - "audit-check": "audit-ci --moderate", - "build:prod": "GENERATE_SOURCEMAP=false REACT_APP_ENV=prod react-app-rewired build", - "format:check": "prettier --config .prettierrc.json --check \"./src/**/*.{ts,tsx}\"", - "format:fix": "prettier --config .prettierrc.json --write \"./src/**/*.{ts,tsx}\"", - "get_artifacts": "./scripts/get_all_artifacts.sh", - "lint:check": "eslint . --ext ts,tsx", - "lint:fix": "yarn lint:check --fix", - "postinstall": "patch-package", - "pre-commit": "lint-staged --allow-empty", - "prebuild": "./bin/release.sh", - "start": "GENERATE_SOURCEMAP=false react-app-rewired start", - "test": "TZ=utc react-scripts test --watchAll=false", - "test:coverage": "yarn test --coverage", - "test:u": "yarn test -u", - "test:w": "yarn test --watchAll=true", - "storybook": "storybook dev -p 6006", - "build-storybook": "storybook build" - }, - "dependencies": { - "@apollo/client": "^3.5.10", - "@cfx-kit/wallet-avatar": "^0.0.5", - "@emotion/react": "^11.10.6", - "@emotion/styled": "^11.6.0", - "@eth-optimism/contracts": "0.5.11", - "@eth-optimism/core-utils": "0.8.1", - "@ethersproject/units": "^5.5.0", - "@mui/base": "5.0.0-alpha.72", - "@mui/icons-material": "^5.11.16", - "@mui/material": "^5.12.2", - "@mui/styles": "^5.3.0", - "@mui/system": "^5.12.1", - "@sentry/react": "^7.51.0", - "@sentry/tracing": "^7.51.0", - "@walletconnect/web3-provider": "^1.8.0", - "assert": "^2.0.0", - "axios": "^0.21.1", - "bignumber.js": "^9.0.1", - "bn.js": "^5.1.3", - "bootstrap-daterangepicker": "^3.1.0", - "browserify-fs": "^1.0.0", - "browserify-zlib": "^0.2.0", - "buffer": "^6.0.3", - "date-fns": "^2.30.0", - "dayjs": "^1.11.7", - "dotenv": "^8.2.0", - "eslint-config-react-app": "^7.0.0", - "ethers": "^5.5.4", - "graphql": "^16.3.0", - "html-react-parser": "^4.0.0", - "http-browserify": "^1.7.0", - "https-browserify": "^1.0.0", - "human-standard-token-abi": "^2.0.0", - "lodash": "^4.17.21", - "node-forge": "^1.3.1", - "os-browserify": "^0.3.0", - "patch-package": "^6.2.2", - "path-browserify": "^1.0.1", - "postcss-normalize": "^10.0.1", - "process": "^0.11.10", - "react": "^17.0.2", - "react-bootstrap-daterangepicker": "^8.0.0", - "react-card-flip": "^1.1.5", - "react-datepicker": "^4.6.0", - "react-day-picker": "^8.8.0", - "react-dom": "^17.0.2", - "react-ga4": "^1.4.1", - "react-multi-carousel": "^2.6.5", - "react-redux": "^8.0.5", - "react-router-dom": "^6.2.1", - "react-scripts": "^5.0.0", - "react-select": "^5.2.2", - "react-svg": "^16.1.15", - "recharts": "^2.1.10", - "redux": "^4.1.2", - "redux-persist": "^6.0.0", - "redux-thunk": "^2.3.0", - "sass": "^1.62.1", - "serve": "^11.3.2", - "stream-browserify": "^3.0.0", - "styled-components": "^5.3.10", - "truncate-middle": "^1.0.6", - "ts-md5": "^1.2.11", - "typescript": "^4.3.5", - "web3": "^1.8.2" - }, - "browserslist": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "devDependencies": { - "@babel/preset-env": "^7.21.5", - "@babel/preset-react": "^7.18.6", - "@babel/preset-typescript": "^7.21.5", - "@storybook/addon-essentials": "^7.0.15", - "@storybook/addon-interactions": "^7.0.15", - "@storybook/addon-links": "^7.0.15", - "@storybook/addon-styling": "^1.0.8", - "@storybook/addon-toolbars": "^7.0.17", - "@storybook/api": "^7.0.17", - "@storybook/blocks": "^7.0.15", - "@storybook/react": "^7.0.15", - "@storybook/react-webpack5": "^7.0.15", - "@storybook/testing-library": "^0.0.14-next.2", - "@testing-library/jest-dom": "^5.16.5", - "@testing-library/react": "^12.1.2", - "@types/jest": "^29.5.1", - "@types/redux-mock-store": "^1.0.3", - "@types/styled-components": "^5.1.26", - "@types/testing-library__jest-dom": "^5.14.6", - "@types/truncate-middle": "^1.0.1", - "@typescript-eslint/eslint-plugin": "^5.10.2", - "@typescript-eslint/parser": "^5.10.2", - "audit-ci": "^3.1.1", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jsdoc": "^46.2.6", - "eslint-plugin-prefer-arrow": "^1.2.3", - "eslint-plugin-prettier": "^3.4.0", - "eslint-plugin-react": "^7.24.0", - "eslint-plugin-storybook": "^0.6.12", - "eslint-plugin-unicorn": "^32.0.1", - "jest-styled-components": "^7.1.1", - "prop-types": "^15.8.1", - "react-app-rewired": "^2.2.1", - "redux-mock-store": "^1.5.4", - "storybook": "^7.0.15", - "storybook-addon-sass-postcss": "^0.1.3" - }, - "lint-staged": { - "*.{ts,tsx}": [ - "yarn format:fix", - "yarn lint:check" - ] - }, - "jest": { - "collectCoverageFrom": [ - "src/**/*.{ts,tsx}", - "!src/**/*.stories.{ts,tsx}", - "!src/**/types.{ts,tsx}", - "!src/**/style.{ts,tsx}" - ] - }, - "resolutions": { - "@types/react": "17.0.58" - }, - "workspaces": { - "nohoist": [ - "@types/**", - "**/@types/**" - ] - } -} diff --git a/packages/boba/gateway/public/favicon.png b/packages/boba/gateway/public/favicon.png deleted file mode 100644 index b5cb31b577..0000000000 Binary files a/packages/boba/gateway/public/favicon.png and /dev/null differ diff --git a/packages/boba/gateway/public/favicon.svg b/packages/boba/gateway/public/favicon.svg deleted file mode 100644 index b09c42e80b..0000000000 --- a/packages/boba/gateway/public/favicon.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/packages/boba/gateway/public/index.html b/packages/boba/gateway/public/index.html deleted file mode 100644 index 0ca40b69aa..0000000000 --- a/packages/boba/gateway/public/index.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - Boba Gateway - - - -
- - diff --git a/packages/boba/gateway/public/manifest.json b/packages/boba/gateway/public/manifest.json deleted file mode 100644 index d770ef293f..0000000000 --- a/packages/boba/gateway/public/manifest.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "short_name": "Boba Gateway", - "name": "Boba Gateway", - "icons": [ - { - "src": "favicon.png", - "type": "image/png", - "sizes": "42x40" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/packages/boba/gateway/public/robots.txt b/packages/boba/gateway/public/robots.txt deleted file mode 100644 index 01b0f9a107..0000000000 --- a/packages/boba/gateway/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * diff --git a/packages/boba/gateway/public/serve.json b/packages/boba/gateway/public/serve.json deleted file mode 100644 index fa6259d550..0000000000 --- a/packages/boba/gateway/public/serve.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "headers": [ - { - "source": "*", - "headers": [ - { - "key": "X-Frame-Options", - "value": "SAMEORIGIN" - }, - { - "key": "Strict-Transport-Security", - "value": "max-age=15552000; includeSubDomains" - }, - { - "key": "X-Content-Type-Options", - "value": "nosniff" - }, - { - "key": "X-XSS-Protection", - "value": "1; mode=block" - }, - { - "key": "Feature-Policy", - "value": "geolocation 'none'; midi 'none'; notifications 'none'; push 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; speaker 'none'; vibrate 'none'; fullscreen 'self'; payment 'none';" - }, - { - "key": "Referrer-Policy", - "value": "no-referrer" - } - ] - } - ] -} diff --git a/packages/boba/gateway/readme.md b/packages/boba/gateway/readme.md deleted file mode 100644 index c6d95b3dbb..0000000000 --- a/packages/boba/gateway/readme.md +++ /dev/null @@ -1,25 +0,0 @@ -# Gateway -gateway.boba.betwork. - -# Environment variables listed to below to get the app running - -| Environment Vars | Required | Default Valu | Description | -| ---------------------------- | -------- | ------------ | --------------------------------------------------------------- | -| REACT_APP_INFURA_ID | Yes | '' | API key for infura account | -| REACT_APP_POLL_INTERVAL | Yes | 20000 | Interval to poll the fetch api about the records | -| SKIP_PREFLIGHT_CHECK | N/A | N/A | N/A | -| REACT_APP_WALLET_VERSION | Yes | N/A | This will be useful while prepare the build. | -| REACT_APP_ENV | Yes | dev | This will be used in case of sentry configuration. | -| REACT_APP_STATUS | NO | N/A | To notify the status about any maintainance activity going on. | -| REACT_APP_SPEED_CHECK | | | | -| REACT_APP_GA4_MEASUREMENT_ID | Yes | N/A | Google analytics api key | -| REACT_APP_SENTRY_DSN | Yes | N/A | Sentry DSN url to catch the error on frontend | -| REACT_APP_ENABLE_LOCK_PAGE | No | N/A | to enable the lock page on gateway menu | -| REACT_APP_GAS_POLL_INTERVAL | Yes | 30000 | Poll interval to fetch the gas price and verifier status | - - -### Execute to update the version of package with latest tag from git. - -`` -yarn release -``` diff --git a/packages/boba/gateway/src/actions/balanceAction.js b/packages/boba/gateway/src/actions/balanceAction.js deleted file mode 100644 index cd0a0c04f3..0000000000 --- a/packages/boba/gateway/src/actions/balanceAction.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - Varna - A Privacy-Preserving Marketplace - Varna uses Fully Homomorphic Encryption to make markets fair. - Copyright (C) 2021 Enya Inc. Palo Alto, CA - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -import networkService from 'services/networkService' -import { createAction } from './createAction' - -export function fetchL1LPBalance(address) { - return createAction('FETCH/L1LP/BALANCE', () => networkService.L1LPBalance(address)) -} - -export function fetchL2LPBalance(address) { - return createAction('FETCH/L2LP/BALANCE', () => networkService.L2LPBalance(address)) -} - -export function fetchL1LPPending(address) { - return createAction('FETCH/L1LP/PENDING', () => networkService.L1LPPending(address)) -} - -export function fetchL2LPPending(address) { - return createAction('FETCH/L2LP/PENDING', () => networkService.L2LPPending(address)) -} - -export function fetchL1LPLiquidity(address) { - return createAction('FETCH/L1LP/LIQUIDITY', () => networkService.L1LPLiquidity(address)) -} - -export function fetchL2LPLiquidity(address) { - return createAction('FETCH/L2LP/LIQUIDITY', () => networkService.L2LPLiquidity(address)) -} - -export function fetchL1TotalFeeRate() { return createAction('FETCH/L1TOTALFEERATE', ()=>{return networkService.getL1TotalFeeRate()}) } -export function fetchL2TotalFeeRate() { return createAction('FETCH/L2TOTALFEERATE', ()=>{return networkService.getL2TotalFeeRate()}) } - -export function fetchL1FeeRateN(tokenAddress) { return createAction('FETCH/L1FEERATE', ()=>{return networkService.getL1UserRewardFeeRate(tokenAddress)}) } -export function fetchL2FeeRateN(tokenAddress) { return createAction('FETCH/L2FEERATE', ()=>{return networkService.getL2UserRewardFeeRate(tokenAddress)}) } - -export function fetchFastExitCost(address) { - return createAction('FETCH/FASTEXIT/COST', () => networkService.getFastExitCost(address)) -} - -export function fetchClassicExitCost(address) { - return createAction('FETCH/CLASSICEXIT/COST', () => networkService.getExitCost(address)) -} - -export function fetchFastDepositCost(address) { - return createAction('FETCH/FASTDEPOSIT/COST', () => networkService.getFastDepositCost(address)) -} - -export function fetchAltL1DepositFee() { - return createAction('FETCH/ALTL1DEPOSIT/COST', () => networkService.getAltL1DepositFee()) -} - -export function fetchFastDepositBatchCost(tokenList) { - return createAction('FETCH/FASTDEPOSIT/BATCH/COST', () => networkService.getFastDepositBatchCost(tokenList)) -} - -export function fetchL1FeeBalance() { - return createAction('FETCH/L1FEE/BALANCE', () => networkService.getL1FeeBalance()) -} - -export function fetchL2BalanceETH() { - return createAction('FETCH/L2ETH/BALANCE', () => networkService.getL2BalanceETH()) -} - -export function fetchL2BalanceBOBA() { - return createAction('FETCH/L2BOBA/BALANCE', () => networkService.getL2BalanceBOBA()) -} - -export function fetchUserAndL2LPBalanceBatch(tokenList) { - return createAction('FETCH/USER/L2LP/BALANCE/BATCH', () => networkService.getL2UserAndLPBalanceBatch(tokenList)) -} - -export function fetchExitFee() { - return createAction('FETCH/EXITFEE', () => networkService.getExitFeeFromBillingContract()) -} diff --git a/packages/boba/gateway/src/actions/bridgeAction.js b/packages/boba/gateway/src/actions/bridgeAction.js deleted file mode 100644 index a440b67531..0000000000 --- a/packages/boba/gateway/src/actions/bridgeAction.js +++ /dev/null @@ -1,104 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import store from "store"; - -export function setToken(token) { - return function (dispatch) { - return dispatch({ type: 'BRIDGE/TOKEN/SELECT', payload: token }); - } -} - -export function resetToken() { - return function (dispatch) { - return dispatch({ type: 'BRIDGE/TOKEN/RESET' }); - } -} - -export function removeToken(tokenIndex) { - return function (dispatch) { - return dispatch({ type: 'BRIDGE/TOKEN/REMOVE', payload: tokenIndex }); - } -} - -export function setTokenAmount(payload) { - return function (dispatch) { - return dispatch({ type: 'BRIDGE/TOKEN/AMOUNT/CHANGE', payload }); - } -} - -export function updateToken(payload) { - return function (dispatch) { - return dispatch({ type: 'BRIDGE/TOKEN/UPDATE', payload }); - } -} - -export function setBridgeType(type) { - return function (dispatch) { - return dispatch({ type: 'BRIDGE/TYPE/SELECT', payload: type }); - } -} - -export function setMultiBridgeMode(mode) { - return function (dispatch) { - return dispatch({ type: 'BRIDGE/MODE/CHANGE', payload: mode }); - } -} - -export function setBridgeToAddress(payload) { - return function (dispatch) { - return dispatch({ type: 'BRIDGE/TOADDRESS/SET', payload }); - } -} - -export function setBridgeAlert(payload) { - return function (dispatch) { - return dispatch({ type: 'BRIDGE/ALERT/SET', payload }); - } -} - -export function clearBridgeAlert(payload) { - return function (dispatch) { - return dispatch({ type: 'BRIDGE/ALERT/CLEAR', payload }); - } -} - -export function purgeBridgeAlert(payload) { - return function (dispatch) { - return dispatch({ type: 'BRIDGE/ALERT/PURGE', payload }); - } -} - -export function setAmountToBridge(payload) { - return function (dispatch) { - return dispatch({ type: 'BRIDGE/AMOUNT/SET', payload }); - } -} - -export function resetBridgeAmount() { - return function (dispatch) { - return dispatch({ type: 'BRIDGE/AMOUNT/RESET'}); - } -} - -export function setTeleportationOfAssetSupported(payload) { - return function (dispatch) { - return dispatch({ type: 'BRIDGE/TELEPORTER/TOKEN_SUPPORTED', payload}) - } -} - -export function setFetchDepositTxBlock(payload) { - store.dispatch({ type: 'BRIDGE/DEPOSIT_TX/BLOCK', payload}) -} diff --git a/packages/boba/gateway/src/actions/createAction.js b/packages/boba/gateway/src/actions/createAction.js deleted file mode 100644 index 6b99479d67..0000000000 --- a/packages/boba/gateway/src/actions/createAction.js +++ /dev/null @@ -1,104 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import * as Sentry from '@sentry/react'; - -export function createAction (key, asyncAction) { - - return async function (dispatch) { - - dispatch({ type: `${key}/REQUEST` }) - - try { - const response = await asyncAction() - - if( response === false ) { - return false - } - - if(response && typeof(response) === 'string' && response?.includes('execution reverted: ERC20Permit')) { - let errorMessage = JSON.parse(response) - dispatch({ type: `UI/ERROR/UPDATE`, payload: errorMessage.error.message }) - dispatch({ type: `${key}/ERROR` }) - Sentry.captureMessage(errorMessage.error.message); - return false - } - - if(response && typeof(response) === 'string' && response?.includes('Insufficient balance')) { - //let errorMessage = JSON.parse(response) - dispatch({ type: `UI/ERROR/UPDATE`, payload: "Insufficient BOBA balance for emergency swap" }) - dispatch({ type: `${key}/ERROR` }) - Sentry.captureMessage("Insufficient BOBA balance for emergency swap"); - return false - } - - //deal with metamask errors - they will have a 'code' field so we can detect those - if(response && response.hasOwnProperty('message') && response.hasOwnProperty('code')) { - Sentry.captureMessage(response.reason) - if(response.hasOwnProperty('reason')) console.log("Error reason:", response.reason) - - // the basic error message - let errorMessage = response.message - - // provide more information in special cases - // MetaMask user rejected sig - throw up a banner - if ((response.code === 4001 || - response.hasOwnProperty('reason')) - && response?.reason?.includes('user rejected transaction') - ) { - console.log("MetaMask: user denied signature") - errorMessage = 'MetaMask: Transaction was rejected by user - signature denied' - } - // No internet case - throw up a banner - else if(response.hasOwnProperty('reason') && response?.reason?.includes('could not detect network')) { - console.log("Gateway error: No network") - errorMessage = 'Gateway: No internet' - } - // ethers error - else if(response.hasOwnProperty('reason') && response.reason?.includes('missing revert data in call exception')) { - console.log("Slow network or rate throttling - code 1") - // intercept error - return false - } - // ethers error - else if(response.hasOwnProperty('reason') && response.reason?.includes('resolver or addr is not configured for ENS name')) { - console.log("Slow network or rate throttling - code 2") - // intercept error - return false - } - // ethers error - else if(response.hasOwnProperty('reason') && response.reason?.includes('missing response')) { - console.log("Slow network or rate throttling - code 3") - // intercept error - return false - } - - dispatch({ type: `UI/ERROR/UPDATE`, payload: errorMessage }) - dispatch({ type: `${key}/ERROR` }) - - return false - } - - dispatch({ type: `${key}/SUCCESS`, payload: response }) - return response || true - - } catch (error) { - console.log("Unhandled error RAW:", { error, key, asyncAction }) - - Sentry.captureException(error); - return false - } - } -} diff --git a/packages/boba/gateway/src/actions/daoAction.js b/packages/boba/gateway/src/actions/daoAction.js deleted file mode 100644 index e434d5f663..0000000000 --- a/packages/boba/gateway/src/actions/daoAction.js +++ /dev/null @@ -1,79 +0,0 @@ -/* - Varna - A Privacy-Preserving Marketplace - Varna uses Fully Homomorphic Encryption to make markets fair. - Copyright (C) 2021 Enya Inc. Palo Alto, CA - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -import networkService from 'services/networkService'; -import { createAction } from './createAction' - -/***********************************************/ -/***** DAO Action *****/ -/***********************************************/ - -export function fetchDaoBalance() { - return createAction('BALANCE/DAO/GET', () => networkService.getDaoBalance()) -} - -export function fetchDaoVotes() { - return createAction('VOTES/DAO/GET', () => networkService.getDaoVotes()) -} - -export function fetchDaoBalanceX() { - return createAction('BALANCEX/DAO/GET', () => networkService.getDaoBalanceX()) -} - -export function fetchDaoVotesX() { - return createAction('VOTESX/DAO/GET', () => networkService.getDaoVotesX()) -} - -export function transferDao({ recipient, amount }) { - return createAction('TRANSFER/DAO/CREATE', () => networkService.transferDao({ recipient, amount })) -} - -export function delegateVotes({ recipient }) { - return createAction('DELEGATE/VOTES/CREATE', () => networkService.delegateVotes({ recipient })) -} - -export function delegateVotesX({ recipient }) { - return createAction('DELEGATEX/VOTES/CREATE', () => networkService.delegateVotesX({ recipient })) -} - -export function getProposalThreshold() { - return createAction('PROPOSALTHRESHOLD/GET', () => networkService.getProposalThreshold()) -} - -export function fetchDaoProposals() { - return createAction('PROPOSALS/GET', () => networkService.fetchProposals()) -} - -export function createDaoProposal(payload) { - return createAction('PROPOSAL/CREATE', () => networkService.createProposal(payload)) -} - -export function queueProposal(proposalID) { - return createAction('PROPOSAL/QUEUE', () => networkService.queueProposal(proposalID)) -} - -export function executeProposal(proposalID) { - return createAction('PROPOSAL/EXECUTE', () => networkService.executeProposal(proposalID)) -} - -export function castProposalVote(payload) { - return createAction('PROPOSAL/CAST/VOTE', () => networkService.castProposalVote(payload)) -} - - diff --git a/packages/boba/gateway/src/actions/devToolsAction.js b/packages/boba/gateway/src/actions/devToolsAction.js deleted file mode 100644 index ab0b064fd4..0000000000 --- a/packages/boba/gateway/src/actions/devToolsAction.js +++ /dev/null @@ -1,31 +0,0 @@ -/* - Varna - A Privacy-Preserving Marketplace - Varna uses Fully Homomorphic Encryption to make markets fair. - Copyright (C) 2021 Enya Inc. Palo Alto, CA - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -import networkService from 'services/networkService'; -import { createAction } from './createAction' - -export function submitTxBuilder(contract, methodIndex, methodName, inputs) { - return createAction('TX_BUILDER', () => networkService.submitTxBuilder(contract, methodIndex, methodName, inputs)) -} - -export function resetTxBuilder() { - return function (dispatch) { - return dispatch({ type: 'TX_BUILDER/REST'}) - } -} diff --git a/packages/boba/gateway/src/actions/earnAction.js b/packages/boba/gateway/src/actions/earnAction.js deleted file mode 100644 index e7d0b911c4..0000000000 --- a/packages/boba/gateway/src/actions/earnAction.js +++ /dev/null @@ -1,124 +0,0 @@ -/* - Varna - A Privacy-Preserving Marketplace - Varna uses Fully Homomorphic Encryption to make markets fair. - Copyright (C) 2021 Enya Inc. Palo Alto, CA - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -import networkService from 'services/networkService' -import { createAction } from './createAction' - -const getEarnInfoBegin = () => ({ - type: 'GET_EARNINFO', -}) - -const getEarnInfoSuccess = (L1PoolInfo, L1UserInfo, L2PoolInfo, L2UserInfo) => ({ - type: 'GET_EARNINFO_SUCCESS', - payload: { L1PoolInfo, L1UserInfo, L2PoolInfo, L2UserInfo } -}) - -// const getL1FeeBegin = () => ({ -// type: 'GET_USERINFO', -// }) - -// const getL2FeeBegin = () => ({ -// type: 'GET_USERINFO', -// }) - -// const getL1FeeSuccess = (totalFeeRate, userRewardFeeRate) => ({ -// type: 'GET_L1FEE_SUCCESS', -// payload: { totalFeeRate, userRewardFeeRate }, -// }) - -// const getL2FeeSuccess = (totalFeeRate, userRewardFeeRate) => ({ -// type: 'GET_L2FEE_SUCCESS', -// payload: { totalFeeRate, userRewardFeeRate }, -// }) - -export const getEarnInfo = () => async (dispatch) => { - dispatch(getEarnInfoBegin()) - const [L1LPInfo, L2LPInfo] = await Promise.all([ - networkService.getL1LPInfo(), - networkService.getL2LPInfo(), - ]) - dispatch(getEarnInfoSuccess( - L1LPInfo.poolInfo, - L1LPInfo.userInfo, - L2LPInfo.poolInfo, - L2LPInfo.userInfo, - )) -} - -// export const getL1Fee = () => async (dispatch) => { -// dispatch(getL1FeeBegin()) -// const [totalFeeRate, userFeeRate] = await Promise.all([ -// networkService.getL1TotalFeeRate(), -// networkService.getL1UserRewardFeeRate(), -// ]) -// console.log("L1 totalFeeRate",totalFeeRate) -// console.log("L1 userRewardFeeRate",userFeeRate) -// dispatch(getL1FeeSuccess(totalFeeRate, userFeeRate)) -// } - -// export const getL2Fee = () => async (dispatch) => { -// dispatch(getL2FeeBegin()) -// const [totalFeeRate, userFeeRate] = await Promise.all([ -// networkService.getL2TotalFeeRate(), -// networkService.getL2UserRewardFeeRate(), -// ]) -// console.log("L2 totalFeeRate",totalFeeRate) -// console.log("L2 userRewardFeeRate",userFeeRate) -// dispatch(getL2FeeSuccess(totalFeeRate, userFeeRate)) -// } - -export function fetchL1UserFee(currency) {return createAction('FETCH/L1USERFEE', () => networkService.getL1UserRewardFeeRate(currency))} -export function fetchL2UserFee(currency) {return createAction('FETCH/L2USERFEE', () => networkService.getL2UserRewardFeeRate(currency))} - -export const updateStakeToken = (stakeToken) => ({ - type: 'UPDATE_STAKE_TOKEN', - payload: stakeToken, -}) - -export const updateWithdrawToken = (withdrawToken) => ({ - type: 'UPDATE_WITHDRAW_TOKEN', - payload: withdrawToken, -}) - -export function fetchAllowance(currency, lpAddress) { - return createAction('FETCH/ALLOWANCE', () => networkService.checkAllowance( - currency, - lpAddress - )) -} - -export function addLiquidity( - currency, - weiString, - L1orL2Pool -) { - return createAction('ADD/LIQUIDITY', () => networkService.addLiquidity( - currency, - weiString, - L1orL2Pool - )) -} - -export function fetchL1LPBalance(currency) { - return createAction('FETCH/L1LPBALANCE', () => networkService.L1LPBalance(currency)) -} - -export function fetchL2LPBalance(currency) { - return createAction('FETCH/L2LPBALANCE', () => networkService.L2LPBalance(currency)) -} diff --git a/packages/boba/gateway/src/actions/fixedAction.js b/packages/boba/gateway/src/actions/fixedAction.js deleted file mode 100644 index d6058090ec..0000000000 --- a/packages/boba/gateway/src/actions/fixedAction.js +++ /dev/null @@ -1,37 +0,0 @@ -/* - Varna - A Privacy-Preserving Marketplace - Varna uses Fully Homomorphic Encryption to make markets fair. - Copyright (C) 2021 Enya Inc. Palo Alto, CA - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -import networkService from 'services/networkService' -import { createAction } from './createAction' - -export function addFS_Savings(weiString) { - return createAction('ADD/FS_SAVINGS', () => networkService.addFS_Savings(weiString)) -} - -export function withdrawFS_Savings(stakeID) { - return createAction('WITHDRAW/FS_SAVINGS', () => networkService.withdrawFS_Savings(stakeID)) -} - -export function getFS_Saves(currency) { - return createAction('GET/FS_SAVES', () => networkService.getFS_Saves()) -} - -export function getFS_Info(currency) { - return createAction('GET/FS_INFO', () => networkService.getFS_Info()) -} \ No newline at end of file diff --git a/packages/boba/gateway/src/actions/networkAction.js b/packages/boba/gateway/src/actions/networkAction.js deleted file mode 100644 index d6d577bdaa..0000000000 --- a/packages/boba/gateway/src/actions/networkAction.js +++ /dev/null @@ -1,292 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import gasService from 'services/gas.service' -import networkService from 'services/networkService' -import transactionService from 'services/transaction.service' -import { createAction } from './createAction' - -export function fetchBalances() { - return createAction('BALANCE/GET', () => networkService.getBalances()) -} - -export function fetchGas() { - return createAction('GAS/GET', () => gasService.getGas()) -} - -export function addTokenList() { - return createAction('TOKENLIST/GET', () => networkService.addTokenList()) -} - -export function fetchTransactions() { - return createAction('TRANSACTION/GETALL', () => - transactionService.getTransactions() - ) -} - -export function fetchSevens() { - return createAction('SEVENS/GETALL', () => - transactionService.getSevens() - ) -} - -export function fetchFastExits() { - return createAction('FASTEXITS/GETALL', () => - transactionService.getFastExits() - ) -} - -export function exitBOBA(token, value) { - return createAction('EXIT/CREATE', () => - networkService.exitBOBA(token, value) - ) -} - -//SWAP RELATED -export function depositL1LP(currency, value, decimals) { - return createAction('DEPOSIT/CREATE', () => - networkService.depositL1LP(currency, value, decimals) - ) -} - -export function isTeleportationOfAssetSupported(layer, asset, destChainId) { - return createAction('DEPOSIT/TELEPORTATION/TOKEN_SUPPORTED', () => - networkService.isTeleportationOfAssetSupported(layer, asset, destChainId) - ) -} - -export function depositWithTeleporter(layer, currency, value, destChainId) { - return createAction('DEPOSIT/CREATE', () => - networkService.depositWithTeleporter(layer, currency, value, destChainId) - ) -} - -export function depositL1LPBatch(payload) { - return createAction('DEPOSIT/CREATE', () => - networkService.depositL1LPBatch(payload) - ) -} - -//SWAP RELATED - Depositing into the L2LP triggers the swap-exit -export function depositL2LP(token, value) { - return createAction('EXIT/CREATE', () => - networkService.depositL2LP(token, value) - ) -} - -//SWAP RELATED - Depositing into the L2LP triggers the swap-exit - variant of depositL2LP -//that handles Exit All -export function fastExitAll(token) { - return createAction('EXIT/CREATE', () => - networkService.fastExitAll(token) - ) -} - -//CLASSIC DEPOSIT ETH -export function depositETHL2(payload) { - return createAction('DEPOSIT/CREATE', () => { - return networkService.depositETHL2(payload) - } - ) -} - -//DEPOSIT ERC20 -export function depositErc20(payload) { - return createAction('DEPOSIT/CREATE', () => - networkService.depositErc20(payload) - ) -} - -//DEPOSIT ERC20 to Alt L1 bridge -export function depositErc20ToL1(payload) { - return createAction('DEPOSIT_ALTL1/CREATE', () => networkService.depositErc20ToL1(payload)) -} - -//EARN -export function earnL1(value_Wei_String, currencyAddress) { - return createAction('EARN/CREATE', () => - networkService.approveERC20_L1LP(value_Wei_String, currencyAddress) - ) -} -export function earnL2(value_Wei_String, currencyAddress) { - return createAction('EARN/CREATE', () => - networkService.approveERC20_L2LP(value_Wei_String, currencyAddress) - ) -} -export function getReward(currencyAddress, value_Wei_String, L1orL2Pool) { - return createAction('EARN/HARVEST', () => - networkService.getReward(currencyAddress, value_Wei_String, L1orL2Pool) - ) -} - -export function withdrawLiquidity(currencyAddress, value_Wei_String, L1orL2Pool) { - - return createAction('EARN/WITHDRAW', () => - networkService.withdrawLiquidity(currencyAddress, value_Wei_String, L1orL2Pool) - ) -} - -export function approveERC20( - value, - currency, - approveContractAddress, - contractABI -) { - return createAction('APPROVE/CREATE', () => - networkService.approveERC20( - value, - currency, - approveContractAddress, - contractABI - ) - ) -} - -export function approveFastDepositBatch(payload) { - return createAction('APPROVE/CREATE', () => - networkService.approveFastDepositBatch( - payload - ) - ) -} - -export function approveERC20_L2LP( - value, - currency, -) { - return createAction('APPROVE/CREATE', () => - networkService.approveERC20_L2LP( - value, - currency, - ) - ) -} - -export function approveERC20_L1LP( - value, - currency, -) { - return createAction('APPROVE/CREATE', () => - networkService.approveERC20_L1LP( - value, - currency, - ) - ) -} - -export function transfer(recipient, value, currency) { - return createAction('TRANSFER/CREATE', () => - networkService.transfer(recipient, value, currency) - ) -} - -export function transferEstimate(value_Wei_String, currency) { - return createAction('TRANSFER_ESTIMATE/CREATE', () => - networkService.transferEstimate(value_Wei_String, currency) - ) -} - -export function transferNFT(recipient, nft) { - return createAction('TRANSFER_NFT/CREATE', () => - networkService.transferNFT(recipient, nft) - ) -} - -export function settle_v0() { - return createAction('SETTLE_v0/CREATE', () => - networkService.settle_v0() - ) -} - -export function settle_v1() { - return createAction('SETTLE_v1/CREATE', () => - networkService.settle_v1() - ) -} - -export function settle_v2() { - return createAction('SETTLE_v2/CREATE', () => - networkService.settle_v2() - ) -} - -export function settle_v2OLO() { - return createAction('SETTLE_v2OLO/CREATE', () => - networkService.settle_v2OLO() - ) -} - -export function settle_v3() { - return createAction('SETTLE_v3/CREATE', () => - networkService.settle_v3() - ) -} - -export function settle_v3OLO() { - return createAction('SETTLE_v3OLO/CREATE', () => - networkService.settle_v3OLO() - ) -} - -export function fetchLookUpPrice(params) { - return createAction('PRICE/GET', () => - networkService.fetchLookUpPrice(params)) -} - -export function clearLookupPrice() { - return function (dispatch) { - return dispatch({ type: 'LOOKUP/PRICE/CLEAR' }) - } -} - -export function enableBrowserWallet(network) { - return createAction('ENABLE/BROWSER/WALLET', () => networkService.enableBrowserWallet(network)) -} - -export function getAllAddresses() { - return createAction('GET/ALL/ADDRESS', () => networkService.getAllAddresses()) -} - - -/********************************/ -/******ONE GATEWAY ACTIONS *****/ -/********************************/ -/** - * @params - * network - ethereum, bnb, avax - * networkType - MAINNET, TESTNET -*/ -export function setNetwork(payload) { - return function (dispatch) { - return dispatch({ type: 'NETWORK/SET', payload: payload }) - } -} - -// to update the active network. -export function setActiveNetwork(payload) { - return function (dispatch) { - return dispatch({ type: 'NETWORK/SET/ACTIVE' }) - } -} - -export function setActiveNetworkType(payload) { - return function (dispatch) { - return dispatch({ type: 'NETWORK/SET_TYPE/ACTIVE', payload }) - } -} - -export function fetchBlockExplorerUrls() { - return createAction('NETWORK/SET/BLOCK_EXPLORER', () => networkService.getBlockExplorerLinks()) -} diff --git a/packages/boba/gateway/src/actions/setupAction.js b/packages/boba/gateway/src/actions/setupAction.js deleted file mode 100644 index 6fe1bb1b55..0000000000 --- a/packages/boba/gateway/src/actions/setupAction.js +++ /dev/null @@ -1,95 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - - -import networkService from 'services/networkService' -import { createAction } from './createAction' -import store from 'store' - -export function setEnableAccount(enabled) { - return function (dispatch) { - return dispatch({ type: 'SETUP/ACCOUNT/SET', payload: enabled }) - } -} - -export function setBaseState(enabled) { - return function (dispatch) { - return dispatch({ type: 'SETUP/BASE/SET', payload: enabled }) - } -} - -export function setLayer(layer) { - return function (dispatch) { - return dispatch({ type: 'SETUP/LAYER/SET', payload: layer }) - } -} - -export function setWalletAddress(account) { - return function (dispatch) { - return dispatch({ type: 'SETUP/WALLETADDRESS/SET', payload: account }) - } -} - -export function switchChain(layer) { - return createAction('SETUP/SWITCH', () => networkService.switchChain(layer)) -} - -export function switchFee(targetFee) { - return createAction('SETUP/SWITCHFEE', () => networkService.switchFee(targetFee)) -} - -export function getETHMetaTransaction() { - return createAction('SETUP/GETETH', () => networkService.getETHMetaTransaction()) -} - -export async function addBobaFee ( bobaFee ) { - store.dispatch({ type: 'BOBAFEE/ADD/SUCCESS', payload: bobaFee }) -} - -export function setConnectETH( state ) { - return function (dispatch) { - return dispatch({ type: 'SETUP/CONNECT_ETH', payload: state }) - } -} - -export function setConnectBOBA( state ) { - return function (dispatch) { - return dispatch({ type: 'SETUP/CONNECT_BOBA', payload: state }) - } -} - -export function setConnect( state ) { - return function (dispatch) { - return dispatch({ type: 'SETUP/CONNECT', payload: state }) - } -} - -export function setWalletConnected( state ) { - return function (dispatch) { - return dispatch({ type: 'SETUP/WALLET_CONNECTED', payload: state }) - } -} - -export function setChainIdChanged(state) { - return function (dispatch) { - return dispatch({ type: 'SETUP/CHAINIDCHANGED/SET', payload: state }) - } -} - -export function resetChainIdChanged() { - return function (dispatch) { - return dispatch({ type: 'SETUP/CHAINIDCHANGED/RESET' }) - } -} diff --git a/packages/boba/gateway/src/actions/signAction.js b/packages/boba/gateway/src/actions/signAction.js deleted file mode 100644 index 562d869f2d..0000000000 --- a/packages/boba/gateway/src/actions/signAction.js +++ /dev/null @@ -1,28 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import store from 'store'; - -export async function updateSignatureStatus_exitLP ( sigStatus ) { - store.dispatch({type: 'EXIT/LP/SIGNED',payload: sigStatus}) -} - -export async function updateSignatureStatus_exitTRAD ( sigStatus ) { - store.dispatch({type: 'EXIT/TRAD/SIGNED',payload: sigStatus}) -} - -export async function updateSignatureStatus_depositLP ( sigStatus ) { - store.dispatch({type: 'DEPOSIT/LP/SIGNED',payload: sigStatus}) -} diff --git a/packages/boba/gateway/src/actions/tokenAction.js b/packages/boba/gateway/src/actions/tokenAction.js deleted file mode 100644 index 4154462e34..0000000000 --- a/packages/boba/gateway/src/actions/tokenAction.js +++ /dev/null @@ -1,233 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import { ethers } from 'ethers' -import erc20abi from 'human-standard-token-abi' -import networkService from 'services/networkService' -import store from 'store' - -/* -Returns Token info -If we don't have the info, try to get it -*/ - -/* -EVERYTHING IS INDEXED BY L1 TOKEN ADDRESS -*/ - -const ETHL1 = '0x0000000000000000000000000000000000000000' -const ETHL2 = '0x4200000000000000000000000000000000000006' - -export async function getToken ( tokenContractAddressL1 ) { - - if( tokenContractAddressL1 === null) return - - //this *might* be coming from a person, and or copy-paste from Etherscan - //so need toLowerCase() - /*****************************************************************/ - const _tokenContractAddressL1 = tokenContractAddressL1.toLowerCase() - /*****************************************************************/ - - const state = store.getState() - - if (state.tokenList[_tokenContractAddressL1]) { - return state.tokenList[_tokenContractAddressL1] - } else { - //console.log("Adding new token:",_tokenContractAddressL1) - const tokenInfo = await addToken(_tokenContractAddressL1) - return tokenInfo - } -} - -/* -Get the token info from networkService.web3.eth.Contract -*/ -export async function addToken ( tokenContractAddressL1 ) { - - if( tokenContractAddressL1 === null ) return - - const state = store.getState() - - //this *might* be coming from a person, and or copy-past from Etherscan - //so need to toLowerCase() - /*****************************************************************/ - const _tokenContractAddressL1 = tokenContractAddressL1.toLowerCase() - /*****************************************************************/ - - //if we already have looked it up, no need to look up again. - if (state.tokenList[_tokenContractAddressL1]) { - console.log("token already in list:",_tokenContractAddressL1) - return state.tokenList[_tokenContractAddressL1]; - } - - try { - - let tA = networkService.tokenAddresses - let tokenContract - let _tokenContractAddressL2 = null - - /********* DO WE HAVE L2 DATA?? *************/ - // Let's go see - // console.log("Addresses for lookup:", networkService.tokenAddresses) - - if(_tokenContractAddressL1 === 'xboba') { - if(tA['xBOBA'].L2 !== null) _tokenContractAddressL2 = tA['xBOBA'].L2.toLowerCase() - tokenContract = new ethers.Contract( - _tokenContractAddressL2, - erc20abi, - networkService.L2Provider, - ) - } else if (_tokenContractAddressL1 === 'wagmiv0') { - if(tA['WAGMIv0'].L2 !== null) _tokenContractAddressL2 = tA['WAGMIv0'].L2.toLowerCase() - tokenContract = new ethers.Contract( - _tokenContractAddressL2, - erc20abi, - networkService.L2Provider, - ) - } else if (_tokenContractAddressL1 === 'wagmiv1') { - if(tA['WAGMIv1'].L2 !== null) _tokenContractAddressL2 = tA['WAGMIv1'].L2.toLowerCase() - tokenContract = new ethers.Contract( - _tokenContractAddressL2, - erc20abi, - networkService.L2Provider, - ) - } - else if (_tokenContractAddressL1 === 'wagmiv2') { - if(tA['WAGMIv2'].L2 !== null) _tokenContractAddressL2 = tA['WAGMIv2'].L2.toLowerCase() - tokenContract = new ethers.Contract( - _tokenContractAddressL2, - erc20abi, - networkService.L2Provider, - ) - } - else if (_tokenContractAddressL1 === 'wagmiv2-oolong') { - if(tA['WAGMIv2-Oolong'].L2 !== null) _tokenContractAddressL2 = tA['WAGMIv2-Oolong'].L2.toLowerCase() - tokenContract = new ethers.Contract( - _tokenContractAddressL2, - erc20abi, - networkService.L2Provider, - ) - } - else if (_tokenContractAddressL1 === 'wagmiv3') { - if(tA['WAGMIv3'].L2 !== null) _tokenContractAddressL2 = tA['WAGMIv3'].L2.toLowerCase() - tokenContract = new ethers.Contract( - _tokenContractAddressL2, - erc20abi, - networkService.L2Provider, - ) - } - else if (_tokenContractAddressL1 === 'wagmiv3-oolong') { - if(tA['WAGMIv3-Oolong'].L2 !== null) _tokenContractAddressL2 = tA['WAGMIv3-Oolong'].L2.toLowerCase() - tokenContract = new ethers.Contract( - _tokenContractAddressL2, - erc20abi, - networkService.L2Provider, - ) - } - else if (_tokenContractAddressL1 === 'olo') { - if(tA['OLO'].L2 !== null) _tokenContractAddressL2 = tA['OLO'].L2.toLowerCase() - tokenContract = new ethers.Contract( - _tokenContractAddressL2, - erc20abi, - networkService.L2Provider, - ) - } else { - Object.keys(tA).forEach((token, i) => { - //let's see if we know about this Token - if(_tokenContractAddressL1 === tA[token].L1.toLowerCase()) { - if( tA[token].L2 !== null) - _tokenContractAddressL2 = tA[token].L2.toLowerCase() - } - }) - tokenContract = new ethers.Contract( - _tokenContractAddressL1, - erc20abi, - networkService.L1Provider, //Everything is defined by the L1 address - will deal with the L2 address later - ) - } - - let _symbolL1 - let _decimals - let _name - - if (ethers.utils.isAddress(_tokenContractAddressL1)) { - const tokenInfo = networkService.tokenInfo.L1[ethers.utils.getAddress(_tokenContractAddressL1)] - if (tokenInfo) { - _symbolL1 = tokenInfo.symbol - _decimals = tokenInfo.decimals - _name = tokenInfo.name - } - } - - if (!_symbolL1 || !_decimals || !_name) { - [ _symbolL1, _decimals, _name ] = await Promise.all([ - tokenContract.symbol(), - tokenContract.decimals(), - tokenContract.name() - ]).catch(e => [ null, null, null ]) - } - - const decimals = _decimals ? Number(_decimals.toString()) : 'NOT ON ETHEREUM' - const symbolL1 = _symbolL1 || 'NOT ON ETHEREUM' - const symbolL2 = _symbolL1 || 'NOT ON ETHEREUM' - const name = _name || 'NOT ON ETHEREUM' - - //ETH is special as always - if(_tokenContractAddressL1 === ETHL1 ) { - _tokenContractAddressL2 = ETHL2 - } - - const tokenInfo = { - currency: ( - _symbolL1 === 'xBOBA' || - _symbolL1 === 'WAGMIv0' || - _symbolL1 === 'WAGMIv1' || - _symbolL1 === 'WAGMIv2' || - _symbolL1 === 'WAGMIv2-Oolong' || - _symbolL1 === 'WAGMIv3' || - _symbolL1 === 'WAGMIv3-Oolong' - ) ? _tokenContractAddressL2 : _tokenContractAddressL1, - addressL1: _tokenContractAddressL1, - addressL2: _tokenContractAddressL2, - symbolL1, - symbolL2, - decimals, - name, - redalert: _decimals ? false : true - } - - store.dispatch({ - type: 'TOKEN/GET/SUCCESS', - payload: tokenInfo - }); - - return tokenInfo - - } catch (error) { - - store.dispatch({ - type: 'TOKEN/GET/FAILURE', - payload: {currency: _tokenContractAddressL1, L1address: _tokenContractAddressL1, L2address: '', symbol: 'Not found', error: 'Not found'}, - }) - - return {currency: _tokenContractAddressL1, L1address: _tokenContractAddressL1, L2address: '', symbol: 'Not found', error: 'Not found'}; - } -} - -export function restTokenList () { - return function (dispatch) { - return dispatch({ type: 'TOKEN/GET/RESET' }); - } -} diff --git a/packages/boba/gateway/src/actions/transactionAction.js b/packages/boba/gateway/src/actions/transactionAction.js deleted file mode 100644 index a2e84cfe21..0000000000 --- a/packages/boba/gateway/src/actions/transactionAction.js +++ /dev/null @@ -1,26 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -export function setCDMCompletion (payload) { - return function (dispatch) { - return dispatch({ type: 'CDM/COMPLETE/SET', payload }); - } -} - -export function resetCDMCompletion () { - return function (dispatch) { - return dispatch({ type: 'CDM/COMPLETE/RESET' }); - } -} diff --git a/packages/boba/gateway/src/actions/uiAction.js b/packages/boba/gateway/src/actions/uiAction.js deleted file mode 100644 index e6d92653ad..0000000000 --- a/packages/boba/gateway/src/actions/uiAction.js +++ /dev/null @@ -1,80 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -export function setTheme (theme) { - return function (dispatch) { - return dispatch({ type: 'UI/THEME/UPDATE', payload: theme }); - } -} - -export function openModal (modal, token, fast, tokenIndex, lock, proposalId, selectionLayer, destNetworkSelection) { - return function (dispatch) { - return dispatch({ type: 'UI/MODAL/OPEN', payload: modal, token, fast, tokenIndex, lock, proposalId, selectionLayer, destNetworkSelection }); - } -} - -export function closeModal (modal) { - return function (dispatch) { - return dispatch({ type: 'UI/MODAL/CLOSE', payload: modal }); - } -} - -export function openAlert (message) { - return function (dispatch) { - return dispatch({ type: 'UI/ALERT/UPDATE', payload: message }); - } -} - -export function closeAlert () { - return function (dispatch) { - return dispatch({ type: 'UI/ALERT/UPDATE', payload: null }); - } -} - -export function openError (message) { - return function (dispatch) { - return dispatch({ type: 'UI/ERROR/UPDATE', payload: message }); - } -} - -export function closeError () { - return function (dispatch) { - return dispatch({ type: 'UI/ERROR/UPDATE', payload: null }); - } -} - -export function ledgerConnect (derivation) { - return function (dispatch) { - return dispatch({ type: 'UI/LEDGER/UPDATE', payload: derivation }); - } -} - -export function setActiveHistoryTab (tab) { - return function (dispatch) { - return dispatch({ type: 'UI/HISTORYTAB/UPDATE', payload: tab }); - } -} - -export function setActiveDataTab (tab) { - return function (dispatch) { - return dispatch({ type: 'UI/DATATAB/UPDATE', payload: tab }); - } -} - -export function setModalData (modal, data) { - return function (dispatch) { - return dispatch({ type: 'UI/MODAL/DATA', payload: { modal, data } }); - } -} diff --git a/packages/boba/gateway/src/actions/veBobaAction.js b/packages/boba/gateway/src/actions/veBobaAction.js deleted file mode 100644 index 481ae7f542..0000000000 --- a/packages/boba/gateway/src/actions/veBobaAction.js +++ /dev/null @@ -1,39 +0,0 @@ -import networkService from "services/networkService"; -import { createAction } from "./createAction"; - - -/************************ - **** VE Boba Actions *** - ************************/ - -export function createLock(payload) { - return createAction('LOCK/CREATE', () => networkService.createLock(payload)) -} - -export function withdrawLock(payload) { - return createAction('LOCK/WITHDRAW', () => networkService.withdrawLock(payload)) -} - -export function increaseLockAmount(payload) { - return createAction('LOCK/INCREASE_AMOUNT', () => networkService.increaseLockAmount(payload)) -} - -export function extendLockTime(payload) { - return createAction('LOCK/EXTEND_TIME', () => networkService.extendLockTime(payload)) -} - -export function fetchLockRecords() { - return createAction('LOCK/RECORDS', () => networkService.fetchLockRecords()) -} - -export function fetchPools() { - return createAction('VOTE/POOLS', () => networkService.fetchPools()) -} - -export function onSavePoolVote(payload) { - return createAction('SAVE_POOL/VOTE', () => networkService.savePoolVote(payload)) -} - -export function onDistributePool(payload) { - return createAction('DISTRIBUTE/POOL', () => networkService.distributePool(payload)) -} diff --git a/packages/boba/gateway/src/actions/verifierAction.js b/packages/boba/gateway/src/actions/verifierAction.js deleted file mode 100644 index 8684c26863..0000000000 --- a/packages/boba/gateway/src/actions/verifierAction.js +++ /dev/null @@ -1,21 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import verifierService from 'services/verifier.service' -import { createAction } from './createAction' - -export function fetchVerifierStatus() { - return createAction('VERIFIER/GET', () => verifierService.getVerifierStatus()) -} diff --git a/packages/boba/gateway/src/api/coinGeckoAxios.js b/packages/boba/gateway/src/api/coinGeckoAxios.js deleted file mode 100644 index 81e9868a8a..0000000000 --- a/packages/boba/gateway/src/api/coinGeckoAxios.js +++ /dev/null @@ -1,15 +0,0 @@ -import axios from 'axios' - -import { getBaseServices } from 'util/masterConfig' - -const _coinGeckoAxiosInstance = axios.create({ - baseURL: getBaseServices().COIN_GECKO_URL, -}) - -_coinGeckoAxiosInstance.interceptors.request.use((config) => { - config.headers['Accept'] = 'application/json' - config.headers['Content-Type'] = 'application/json' - return config -}) - -export default _coinGeckoAxiosInstance diff --git a/packages/boba/gateway/src/api/metaTransactionAxios.js b/packages/boba/gateway/src/api/metaTransactionAxios.js deleted file mode 100644 index 9d6cfc235d..0000000000 --- a/packages/boba/gateway/src/api/metaTransactionAxios.js +++ /dev/null @@ -1,17 +0,0 @@ -import axios from 'axios' - -export default function metaTransactionAxiosInstance(networkConfig) { - const url = networkConfig['META_TRANSACTION'] - - let axiosInstance = axios.create({ - baseURL: url, - }) - - axiosInstance.interceptors.request.use((config) => { - config.headers['Accept'] = 'application/json' - config.headers['Content-Type'] = 'application/json' - return config - }) - - return axiosInstance -} diff --git a/packages/boba/gateway/src/api/omgxWatcherAxios.js b/packages/boba/gateway/src/api/omgxWatcherAxios.js deleted file mode 100644 index 2255191cf0..0000000000 --- a/packages/boba/gateway/src/api/omgxWatcherAxios.js +++ /dev/null @@ -1,17 +0,0 @@ -import axios from 'axios' - -export default function omgxWatcherAxiosInstance(networkConfig) { - const watcherUrl = networkConfig[ 'OMGX_WATCHER_URL' ] - - let axiosInstance = axios.create({ - baseURL: watcherUrl, - }) - - axiosInstance.interceptors.request.use((config) => { - config.headers[ 'Accept' ] = 'application/json' - config.headers[ 'Content-Type' ] = 'application/json' - return config - }) - - return axiosInstance -} diff --git a/packages/boba/gateway/src/api/verifierWatcherAxios.js b/packages/boba/gateway/src/api/verifierWatcherAxios.js deleted file mode 100644 index f6df944dbe..0000000000 --- a/packages/boba/gateway/src/api/verifierWatcherAxios.js +++ /dev/null @@ -1,21 +0,0 @@ -import axios from 'axios' - -export default function verifierWatcherAxiosInstance(networkConfig) { - const url = networkConfig[ 'VERIFIER_WATCHER_URL' ] - - if (!url) { - return null; - } - - let axiosInstance = axios.create({ - baseURL: url - }) - - axiosInstance.interceptors.request.use((config) => { - config.headers[ 'Accept' ] = 'application/json' - config.headers[ 'Content-Type' ] = 'application/json' - return config - }) - - return axiosInstance -} diff --git a/packages/boba/gateway/src/assets/bobaAvax.svg b/packages/boba/gateway/src/assets/bobaAvax.svg deleted file mode 100644 index 4c654c526a..0000000000 --- a/packages/boba/gateway/src/assets/bobaAvax.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/packages/boba/gateway/src/assets/bobaBNB.svg b/packages/boba/gateway/src/assets/bobaBNB.svg deleted file mode 100644 index c1e8a91a2a..0000000000 --- a/packages/boba/gateway/src/assets/bobaBNB.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/packages/boba/gateway/src/assets/bobaEth.svg b/packages/boba/gateway/src/assets/bobaEth.svg deleted file mode 100644 index 556f9a0175..0000000000 --- a/packages/boba/gateway/src/assets/bobaEth.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/boba/gateway/src/assets/ethereum.svg b/packages/boba/gateway/src/assets/ethereum.svg deleted file mode 100644 index 4043ff1446..0000000000 --- a/packages/boba/gateway/src/assets/ethereum.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/packages/boba/gateway/src/assets/images/Boba_Logo_Black_Circle.png b/packages/boba/gateway/src/assets/images/Boba_Logo_Black_Circle.png deleted file mode 100644 index 538855100d..0000000000 Binary files a/packages/boba/gateway/src/assets/images/Boba_Logo_Black_Circle.png and /dev/null differ diff --git a/packages/boba/gateway/src/assets/images/Boba_Logo_White_Circle.png b/packages/boba/gateway/src/assets/images/Boba_Logo_White_Circle.png deleted file mode 100644 index f2567dd19e..0000000000 Binary files a/packages/boba/gateway/src/assets/images/Boba_Logo_White_Circle.png and /dev/null differ diff --git a/packages/boba/gateway/src/assets/images/allNetworks.svg b/packages/boba/gateway/src/assets/images/allNetworks.svg deleted file mode 100644 index d392621af1..0000000000 --- a/packages/boba/gateway/src/assets/images/allNetworks.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/packages/boba/gateway/src/assets/images/boba-logo.png b/packages/boba/gateway/src/assets/images/boba-logo.png deleted file mode 100644 index cfe3224da1..0000000000 Binary files a/packages/boba/gateway/src/assets/images/boba-logo.png and /dev/null differ diff --git a/packages/boba/gateway/src/assets/images/boba-logo.svg b/packages/boba/gateway/src/assets/images/boba-logo.svg deleted file mode 100644 index 3cf72d0b04..0000000000 Binary files a/packages/boba/gateway/src/assets/images/boba-logo.svg and /dev/null differ diff --git a/packages/boba/gateway/src/assets/images/boba-token.svg b/packages/boba/gateway/src/assets/images/boba-token.svg deleted file mode 100644 index 1504a59819..0000000000 --- a/packages/boba/gateway/src/assets/images/boba-token.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/boba/gateway/src/assets/images/boba2/BobaNFTGlass.svg b/packages/boba/gateway/src/assets/images/boba2/BobaNFTGlass.svg deleted file mode 100644 index 9468bf7a1c..0000000000 --- a/packages/boba/gateway/src/assets/images/boba2/BobaNFTGlass.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/packages/boba/gateway/src/assets/images/boba2/boba_glass.svg b/packages/boba/gateway/src/assets/images/boba2/boba_glass.svg deleted file mode 100644 index db785f9527..0000000000 --- a/packages/boba/gateway/src/assets/images/boba2/boba_glass.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/packages/boba/gateway/src/assets/images/boba2/stake-balance-bg.png b/packages/boba/gateway/src/assets/images/boba2/stake-balance-bg.png deleted file mode 100644 index f0272a166a..0000000000 Binary files a/packages/boba/gateway/src/assets/images/boba2/stake-balance-bg.png and /dev/null differ diff --git a/packages/boba/gateway/src/assets/images/bobaAvax.png b/packages/boba/gateway/src/assets/images/bobaAvax.png deleted file mode 100644 index d3ef8812db..0000000000 Binary files a/packages/boba/gateway/src/assets/images/bobaAvax.png and /dev/null differ diff --git a/packages/boba/gateway/src/assets/images/bobaBNB.png b/packages/boba/gateway/src/assets/images/bobaBNB.png deleted file mode 100644 index 67b060122a..0000000000 Binary files a/packages/boba/gateway/src/assets/images/bobaBNB.png and /dev/null differ diff --git a/packages/boba/gateway/src/assets/images/bobaETH.png b/packages/boba/gateway/src/assets/images/bobaETH.png deleted file mode 100644 index 9833cf0b0f..0000000000 Binary files a/packages/boba/gateway/src/assets/images/bobaETH.png and /dev/null differ diff --git a/packages/boba/gateway/src/assets/images/bridges/banxa.svg b/packages/boba/gateway/src/assets/images/bridges/banxa.svg deleted file mode 100644 index 0568a41676..0000000000 --- a/packages/boba/gateway/src/assets/images/bridges/banxa.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/packages/boba/gateway/src/assets/images/bridges/logo/Boringdao-logo-250.png b/packages/boba/gateway/src/assets/images/bridges/logo/Boringdao-logo-250.png deleted file mode 100644 index 03db0bfa10..0000000000 Binary files a/packages/boba/gateway/src/assets/images/bridges/logo/Boringdao-logo-250.png and /dev/null differ diff --git a/packages/boba/gateway/src/assets/images/bridges/logo/anyswap-logo-250.png b/packages/boba/gateway/src/assets/images/bridges/logo/anyswap-logo-250.png deleted file mode 100644 index 1cb3ac5c9d..0000000000 Binary files a/packages/boba/gateway/src/assets/images/bridges/logo/anyswap-logo-250.png and /dev/null differ diff --git a/packages/boba/gateway/src/assets/images/bridges/logo/celer-logo-250.png b/packages/boba/gateway/src/assets/images/bridges/logo/celer-logo-250.png deleted file mode 100644 index 0852b98fec..0000000000 Binary files a/packages/boba/gateway/src/assets/images/bridges/logo/celer-logo-250.png and /dev/null differ diff --git a/packages/boba/gateway/src/assets/images/bridges/logo/polybridge-logo-250.png b/packages/boba/gateway/src/assets/images/bridges/logo/polybridge-logo-250.png deleted file mode 100644 index 6c7717f68f..0000000000 Binary files a/packages/boba/gateway/src/assets/images/bridges/logo/polybridge-logo-250.png and /dev/null differ diff --git a/packages/boba/gateway/src/assets/images/bridges/logo/symbiosis-logo-250.png b/packages/boba/gateway/src/assets/images/bridges/logo/symbiosis-logo-250.png deleted file mode 100644 index 39a736911f..0000000000 Binary files a/packages/boba/gateway/src/assets/images/bridges/logo/symbiosis-logo-250.png and /dev/null differ diff --git a/packages/boba/gateway/src/assets/images/bridges/logo/synapse-logo-250.png b/packages/boba/gateway/src/assets/images/bridges/logo/synapse-logo-250.png deleted file mode 100644 index f60c6044ca..0000000000 Binary files a/packages/boba/gateway/src/assets/images/bridges/logo/synapse-logo-250.png and /dev/null differ diff --git a/packages/boba/gateway/src/assets/images/close.png b/packages/boba/gateway/src/assets/images/close.png deleted file mode 100644 index 66b1ee82e4..0000000000 Binary files a/packages/boba/gateway/src/assets/images/close.png and /dev/null differ diff --git a/packages/boba/gateway/src/assets/images/close.svg b/packages/boba/gateway/src/assets/images/close.svg deleted file mode 100644 index d54912b7f5..0000000000 --- a/packages/boba/gateway/src/assets/images/close.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/packages/boba/gateway/src/assets/images/ethereumFlex.svg b/packages/boba/gateway/src/assets/images/ethereumFlex.svg deleted file mode 100644 index 394afb02a8..0000000000 --- a/packages/boba/gateway/src/assets/images/ethereumFlex.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/packages/boba/gateway/src/assets/images/filter.svg b/packages/boba/gateway/src/assets/images/filter.svg deleted file mode 100644 index 35d57c0b29..0000000000 --- a/packages/boba/gateway/src/assets/images/filter.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/packages/boba/gateway/src/assets/images/hamburger.svg b/packages/boba/gateway/src/assets/images/hamburger.svg deleted file mode 100644 index 5c205e63b3..0000000000 --- a/packages/boba/gateway/src/assets/images/hamburger.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/packages/boba/gateway/src/assets/images/icons/actions.svg b/packages/boba/gateway/src/assets/images/icons/actions.svg deleted file mode 100644 index 9e5446be31..0000000000 --- a/packages/boba/gateway/src/assets/images/icons/actions.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/packages/boba/gateway/src/assets/images/icons/arrowdown.svg b/packages/boba/gateway/src/assets/images/icons/arrowdown.svg deleted file mode 100644 index c7ffde435e..0000000000 --- a/packages/boba/gateway/src/assets/images/icons/arrowdown.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/packages/boba/gateway/src/assets/images/icons/arrowright.svg b/packages/boba/gateway/src/assets/images/icons/arrowright.svg deleted file mode 100644 index 6038f03c93..0000000000 --- a/packages/boba/gateway/src/assets/images/icons/arrowright.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/packages/boba/gateway/src/assets/images/icons/check.svg b/packages/boba/gateway/src/assets/images/icons/check.svg deleted file mode 100644 index 380e831549..0000000000 --- a/packages/boba/gateway/src/assets/images/icons/check.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/packages/boba/gateway/src/assets/images/icons/magnifyingGlass.svg b/packages/boba/gateway/src/assets/images/icons/magnifyingGlass.svg deleted file mode 100644 index 0439409570..0000000000 --- a/packages/boba/gateway/src/assets/images/icons/magnifyingGlass.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/packages/boba/gateway/src/assets/images/icons/metamask.svg b/packages/boba/gateway/src/assets/images/icons/metamask.svg deleted file mode 100644 index 47ccb58a16..0000000000 --- a/packages/boba/gateway/src/assets/images/icons/metamask.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/boba/gateway/src/assets/images/icons/no-data.svg b/packages/boba/gateway/src/assets/images/icons/no-data.svg deleted file mode 100644 index 86dc019738..0000000000 --- a/packages/boba/gateway/src/assets/images/icons/no-data.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/packages/boba/gateway/src/assets/images/icons/switchButton.svg b/packages/boba/gateway/src/assets/images/icons/switchButton.svg deleted file mode 100644 index 2f0a72965a..0000000000 --- a/packages/boba/gateway/src/assets/images/icons/switchButton.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/packages/boba/gateway/src/assets/images/icons/switchIcon.svg b/packages/boba/gateway/src/assets/images/icons/switchIcon.svg deleted file mode 100644 index 11ae8eed5f..0000000000 --- a/packages/boba/gateway/src/assets/images/icons/switchIcon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/packages/boba/gateway/src/assets/images/metamask.svg b/packages/boba/gateway/src/assets/images/metamask.svg deleted file mode 100644 index 47ccb58a16..0000000000 --- a/packages/boba/gateway/src/assets/images/metamask.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/boba/gateway/src/assets/images/mtt.png b/packages/boba/gateway/src/assets/images/mtt.png deleted file mode 100644 index 042a149d75..0000000000 Binary files a/packages/boba/gateway/src/assets/images/mtt.png and /dev/null differ diff --git a/packages/boba/gateway/src/assets/images/noHistory.svg b/packages/boba/gateway/src/assets/images/noHistory.svg deleted file mode 100644 index 5f7de04e70..0000000000 --- a/packages/boba/gateway/src/assets/images/noHistory.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/packages/boba/gateway/src/assets/images/test.svg b/packages/boba/gateway/src/assets/images/test.svg deleted file mode 100644 index 85d06c973e..0000000000 --- a/packages/boba/gateway/src/assets/images/test.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/boba/gateway/src/assets/images/theme-moon.svg b/packages/boba/gateway/src/assets/images/theme-moon.svg deleted file mode 100644 index f10073efd2..0000000000 --- a/packages/boba/gateway/src/assets/images/theme-moon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/packages/boba/gateway/src/assets/images/theme-sun.svg b/packages/boba/gateway/src/assets/images/theme-sun.svg deleted file mode 100644 index 8a4da697e5..0000000000 --- a/packages/boba/gateway/src/assets/images/theme-sun.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/packages/boba/gateway/src/assets/images/walletconnect.svg b/packages/boba/gateway/src/assets/images/walletconnect.svg deleted file mode 100644 index a03a5d6726..0000000000 --- a/packages/boba/gateway/src/assets/images/walletconnect.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/boba/gateway/src/components/NetworkSelector/index.tsx b/packages/boba/gateway/src/components/NetworkSelector/index.tsx deleted file mode 100644 index 515edd74ca..0000000000 --- a/packages/boba/gateway/src/components/NetworkSelector/index.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React, { useState } from 'react' -import { ChainLabel } from 'components/bridge/ChainLabel' -import { NetworkContainer, Arrow, Dropdown } from './styles' -import ArrowDown from 'assets/images/icons/arrowdown.svg' -import { NetworkList } from 'components/bridge/NetworkPickerList' -import { Typography } from 'components/global/' - -export const NetworkSelector = () => { - const [openDropdown, setOpenDropdown] = useState(false) - - const handleSelectNetwork = () => { - setOpenDropdown((currentStatus) => !currentStatus) - } - return ( - - - {openDropdown && ( - - Networks - - - )} - - ) -} diff --git a/packages/boba/gateway/src/components/NetworkSelector/styles.ts b/packages/boba/gateway/src/components/NetworkSelector/styles.ts deleted file mode 100644 index 5c7451f309..0000000000 --- a/packages/boba/gateway/src/components/NetworkSelector/styles.ts +++ /dev/null @@ -1,87 +0,0 @@ -import styled, { css } from 'styled-components' -import { Svg } from 'components/global/svg' -import { mobile } from 'themes/screens' -import { ChainLabelContainer } from 'components/bridge/ChainLabel/styles' - -export const NetworkContainer = styled.div` - display: flex; - justify-content: center; - align-items: center; - padding: 4px 24px; - border-radius: 33px; - gap: 10px; - user-select: none; - height: 40px; - cursor: pointer; - ${(props) => - props.theme.name === 'light' && - css` - background: #fff; - `} - ${(props) => - props.theme.name === 'dark' && - css` - background: ${props.theme.colors.gray[400]}; - `} - - ${mobile(css` - ${ChainLabelContainer} { - font-size: 0px; - gap: 0px; - } - `)} -` - -export const Arrow = styled(Svg)` - display: flex; - > div { - display: flex; - height: auto; - padding: 5px 0px; - } - ${(props) => - props.theme.name === 'light' && - css` - svg { - fill: ${props.theme.colors.gray[800]}; - } - `} - ${(props) => - props.theme.name === 'dark' && - css` - svg { - fill: ${props.theme.colors.gray[50]}; - } - `} -` - -export const Dropdown = styled.div` - display: flex; - flex-direction: column; - position: absolute; - top: 65px; - border-radius: 8px; - background: inherit; - gap: 5px; - padding: 10px 15px; - img, - svg { - max-width: 24px; - width: 100%; - height: 100%; - max-height: 34px; - } - > div { - > div { - padding: 5px 10px; - } - } - ${mobile(css` - width: 100%; - position: fixed; - left: 0px; - padding: 25px; - border-radius: 0px; - top: 72px; - `)} -` diff --git a/packages/boba/gateway/src/components/SentryWrapper/SentryWrapper.js b/packages/boba/gateway/src/components/SentryWrapper/SentryWrapper.js deleted file mode 100644 index 3d00556668..0000000000 --- a/packages/boba/gateway/src/components/SentryWrapper/SentryWrapper.js +++ /dev/null @@ -1,84 +0,0 @@ -import React, { useEffect } from 'react' -import * as Sentry from '@sentry/react'; -import { Typography } from '@mui/material'; -import { APP_ENV, SENTRY_DSN } from 'util/constant'; -import { useSelector } from 'react-redux'; -import { selectActiveNetwork } from 'selectors'; - - -/** - * It's function which wraps compnent and add sentry integration on top of it. - * - * @param {*} children - * @returns wrapp component - */ - -const SentryWrapper = ({ - children -}) => { - - const network = useSelector(selectActiveNetwork()); - - useEffect(() => { - const dns = SENTRY_DSN; - // if no sentry dsn pass don't even initialize. - if (dns) { - // Sentry initializations. - Sentry.init({ - dsn: SENTRY_DSN, - environment: `${APP_ENV}-${network}`, - integrations: [ - new Sentry.Integrations.GlobalHandlers({ - onunhandledrejection: false, /// will avoid to send unhandle browser error. - onerror: false, - }), - // new BrowserTracing() - ], - ignoreErrors: [ - 'top.GLOBALS', //stop sentry to report the random plugin / extensions errors. - // Ignore MM error as we can not control those. - 'Internal JSON-RPC error', - 'JsonRpcEngine', - 'Non-Error promise rejection captured with keys: code' - ], - denyUrls: [ - // Ignore chrome & extensions error - /extensions\//i, - /^chrome:\/\//i, - ], - tracesSampleRate: 1.0, - initialScope: { - tags: { network } - }, - beforeSend: (event, hint) => { - // Avoid sending the sentry events on local env. - if (window.location.hostname === 'localhost') { - return null; - } - - let filterEvent = { - ...event, - breadcrumbs: event.breadcrumbs.filter((b) => b.type !== 'http') /// filter the http stack as it can contain sensity keys - } - - return filterEvent; - } - }) - } - - return () => { - Sentry.close(2000) // to close the sentry client connection on unmounting. - }; - }, [network]); - - - return <> - Something went wrong!}> - {children} - - - -} - - -export default SentryWrapper; diff --git a/packages/boba/gateway/src/components/alert/Alert.tsx b/packages/boba/gateway/src/components/alert/Alert.tsx deleted file mode 100644 index 3e8ccea555..0000000000 --- a/packages/boba/gateway/src/components/alert/Alert.tsx +++ /dev/null @@ -1,115 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React, { ReactNode } from 'react' -import Snackbar from '@mui/material/Snackbar' -import MuiAlert, { AlertColor } from '@mui/material/Alert' -import CheckCircle from '@mui/icons-material/CheckCircle' -import Error from '@mui/icons-material/Error' -import { useDispatch, useSelector } from 'react-redux' -import { selectAlert, selectError } from 'selectors' -import { closeAlert, closeError } from 'actions/uiAction' - -interface ToastProps { - children: ReactNode - open: boolean - onClose: () => void - type: AlertColor - duration: number -} - -const Toast = ({ - children, - open, - onClose, - type = 'success', - duration = 9000, -}: ToastProps) => { - let autohide = 0 - if (type === 'success') { - autohide = 3000 // autohide all the green alerts - } else { - autohide = duration - } - - return ( - - , - success: , - }} - > - {children} - - - ) -} - -/** - * - * @NotificationAlert: component is used to show the success & error message. - * - * - */ - -const NotificationAlert = () => { - const dispatch = useDispatch() - const errorMessage = useSelector(selectError) - const alertMessage = useSelector(selectAlert) - - const handleErrorClose = () => dispatch(closeError()) - const handleAlertClose = () => dispatch(closeAlert()) - - return ( - <> - - {errorMessage} - - - - {alertMessage} - - - ) -} - -export default NotificationAlert diff --git a/packages/boba/gateway/src/components/areaChart/AreaChart.js b/packages/boba/gateway/src/components/areaChart/AreaChart.js deleted file mode 100644 index ea33e773bb..0000000000 --- a/packages/boba/gateway/src/components/areaChart/AreaChart.js +++ /dev/null @@ -1,59 +0,0 @@ -import { Typography } from '@mui/material'; -import React from 'react'; -import { AreaChart as ReAreaChart, Area, Tooltip, XAxis, YAxis, ResponsiveContainer, CartesianGrid } from 'recharts'; - - -import * as S from './AreaChart.styles' - -function CustomToolTip({ - active, - payload, - label -}) { - - if (!active) { - return null; - } - - return - Locking period: {label} - Convert ratio: {payload[ 0 ].value} - -} - -function AreaChart({ data }) { - - return - - - - - - - - - - `${n}%`} /> - } /> - - - - - -} - -export default AreaChart; diff --git a/packages/boba/gateway/src/components/areaChart/AreaChart.styles.js b/packages/boba/gateway/src/components/areaChart/AreaChart.styles.js deleted file mode 100644 index b247c7bcc1..0000000000 --- a/packages/boba/gateway/src/components/areaChart/AreaChart.styles.js +++ /dev/null @@ -1,12 +0,0 @@ -import { styled } from "@mui/styles"; -import { Box } from "@mui/material"; - -export const AreaChartContainer = styled(Box)(({ theme }) => ({ - background: 'transperent' -})) - -export const ToolTipContainer = styled(Box)(({ theme }) => ({ - display: 'flex', - flexDirection: 'column', - background: theme.palette.background.secondary -})) diff --git a/packages/boba/gateway/src/components/availableBridges/bobaBridges.ts b/packages/boba/gateway/src/components/availableBridges/bobaBridges.ts deleted file mode 100644 index 2b78a3cf7e..0000000000 --- a/packages/boba/gateway/src/components/availableBridges/bobaBridges.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { IBridges } from './types' - -export const bobaBridges: IBridges[] = [ - { - name: 'Synapse', - type: 'SYNAPSE', - link: 'https://synapseprotocol.com/', - tokens: ['ETH', 'nETH', 'gOHM', 'DAI', 'USDC', 'USDT', 'SYN', 'nUSD'], - }, - { - name: 'Anyswap', - type: 'ANYSWAP', - link: 'https://anyswap.exchange/#/router', - tokens: ['MIM', 'AVAX', 'FRAX', 'FTM', 'FXS', 'MATIC'], - }, - { - name: 'Celer', - type: 'CELER', - link: 'https://cbridge.celer.network/#/transfer', - tokens: ['ETH', 'BOBA', 'FRAX', 'OLO'], - }, - { - name: 'BoringDAO', - type: 'BORINGDAO', - link: 'https://oportal.boringdao.com/twoway', - tokens: ['USDT'], - }, - { - name: 'PolyBridge', - type: 'POLYBRIDGE', - link: 'https://bridge.poly.network/', - tokens: ['BOBA'], - }, - { - name: 'Symbiosis', - type: 'SYMBIOSIS', - link: 'https://app.symbiosis.finance/swap', - tokens: ['USDC'], - }, -] - -export const bridgeByToken = (symbol: string) => { - return bobaBridges.filter((bridge) => bridge.tokens.includes(symbol)) -} diff --git a/packages/boba/gateway/src/components/availableBridges/index.tsx b/packages/boba/gateway/src/components/availableBridges/index.tsx deleted file mode 100644 index d30f7a4ad6..0000000000 --- a/packages/boba/gateway/src/components/availableBridges/index.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import { Text } from 'components/global/text' -import React, { useEffect, useState } from 'react' -import styled from 'styled-components' -import { bridgeByToken } from './bobaBridges' -import { useSelector } from 'react-redux' -import { selectActiveNetwork, selectActiveNetworkType } from 'selectors' -import { NETWORK, NETWORK_TYPE } from 'util/network/network.util' -import { prepareBanxaUrl } from 'util/banxa' -import { AvailableBridgesProps, IBridges } from './types' - -const AvailableBridgeContainer = styled.div(({ theme }) => ({ - background: theme.bg.glassy, - filter: 'drop-shadow(0px 4px 20px rgba(35, 92, 41, 0.06))', - borderRadius: '20px', - border: 'none', - backdropFilter: 'blur(50px)', - flex: 1, - minHeight: 'fit-content', - padding: '20px 24px', - width: '100%', - maxWidth: '600px', -})) - -const AvailableBridgeTitle = styled(Text)` - font-size: 1rem; - margin-bottom: 10px; -` - -const Link = styled.a` - text-decoration: none; - color: inherit; -` - -const AvailableBridgeContent = styled(Text)(({ theme }) => ({ - borderRadius: '12px', - background: theme.bg.secondary, - border: theme.border, - lineHeight: 1.5, - padding: '10px', - marginBottom: '5px', - fontSize: '1rem', -})) - -export const AvailableBridges = ({ - token = null, - walletAddress = '', -}: AvailableBridgesProps) => { - const [bridges, setbridges] = useState([]) - const [banxaUrl, setBanxaUrl] = useState('') - const [isBanxaEnable, setIsBanxaEnable] = useState(false) - - const networkType = useSelector(selectActiveNetworkType()) - const network = useSelector(selectActiveNetwork()) - - useEffect(() => { - if (token) { - const _bridges = bridgeByToken(token?.symbol) - setbridges(_bridges) - - if (token?.symbol === 'ETH' || token?.symbol === 'BOBA') { - const _banxaUrl = prepareBanxaUrl({ - symbol: token.symbol, - address: walletAddress, - }) - setBanxaUrl(_banxaUrl) - setIsBanxaEnable(true) - } - } - }, [token, walletAddress]) - - if ( - !token || - networkType === NETWORK_TYPE.TESTNET || - network !== NETWORK.ETHEREUM || - (!isBanxaEnable && !bridges.length) - ) { - return <> - } - - return ( - - Third party bridges - {network === NETWORK.ETHEREUM && isBanxaEnable && ( - - Banxa - - )} - {bridges.map((bridge: any) => ( - - {bridge.name} - - ))} - - ) -} diff --git a/packages/boba/gateway/src/components/availableBridges/tests/__snapshots__/index.test.tsx.snap b/packages/boba/gateway/src/components/availableBridges/tests/__snapshots__/index.test.tsx.snap deleted file mode 100644 index 848a9916cc..0000000000 --- a/packages/boba/gateway/src/components/availableBridges/tests/__snapshots__/index.test.tsx.snap +++ /dev/null @@ -1,60 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Available Bridges should match snapshot connected on mainnet 1`] = ` - -
-

- Third party bridges -

- -

- Banxa -

-
- -

- Synapse -

-
- -

- Celer -

-
-
-
-`; - -exports[`Available Bridges should match snapshot network type is TESTNET 1`] = ``; - -exports[`Available Bridges should match snapshot selected network is not ETHEREUM 1`] = ``; - -exports[`Available Bridges should match snapshot token value is null 1`] = ``; diff --git a/packages/boba/gateway/src/components/availableBridges/tests/index.test.tsx b/packages/boba/gateway/src/components/availableBridges/tests/index.test.tsx deleted file mode 100644 index 39a8820c61..0000000000 --- a/packages/boba/gateway/src/components/availableBridges/tests/index.test.tsx +++ /dev/null @@ -1,142 +0,0 @@ -import { render, screen } from '@testing-library/react' -import React from 'react' -import { Provider } from 'react-redux' -import configureStore from 'redux-mock-store' -import CustomThemeProvider from 'themes' -import { AvailableBridges } from '..' -import { NETWORK, NETWORK_TYPE } from 'util/network/network.util' - -const mockStore = configureStore() - -const renderAvailableBridges = ({ - token, - walletAddress, - options = null, -}: any) => { - return render( - - - - - - ) -} - -describe('Available Bridges', () => { - let token = { - symbol: 'ETH', - } - const walletAddress = 'random-code' - - describe('should match snapshot', () => { - test('token value is null', () => { - const { asFragment } = renderAvailableBridges({ - token: null, - walletAddress, - }) - expect(asFragment()).toMatchSnapshot() - }) - test('network type is TESTNET', () => { - const { asFragment } = renderAvailableBridges({ - token: null, - walletAddress, - options: { - store: { - network: { - activeNetwork: NETWORK.ETHEREUM, - activeNetworkType: NETWORK_TYPE.TESTNET, - }, - }, - }, - }) - expect(asFragment()).toMatchSnapshot() - }) - test('selected network is not ETHEREUM', () => { - const { asFragment } = renderAvailableBridges({ - token: null, - walletAddress, - options: { - store: { - network: { - activeNetwork: NETWORK.BNB, - activeNetworkType: NETWORK_TYPE.TESTNET, - }, - }, - }, - }) - expect(asFragment()).toMatchSnapshot() - }) - - test('connected on mainnet', () => { - const { asFragment } = renderAvailableBridges({ - token, - walletAddress, - }) - expect(asFragment()).toMatchSnapshot() - }) - }) - - test('should see banxa for ETH token on mainnet', () => { - renderAvailableBridges({ - token, - walletAddress, - }) - expect(screen.getByTestId('banxa')).toBeInTheDocument() - }) - test('should see banxa for BOBA token on mainnet', () => { - token = { - symbol: 'BOBA', - } - renderAvailableBridges({ - token, - walletAddress, - }) - expect(screen.getByTestId('banxa')).toBeInTheDocument() - }) - - test('should not see banxa for other token on mainnet', () => { - token = { - symbol: 'USDC', - } - renderAvailableBridges({ - token, - walletAddress, - }) - expect(screen.queryByTestId('banxa')).not.toBeInTheDocument() - }) - - describe('Bridges should render correct for token', () => { - test('should 2 bridge for ETH ', () => { - renderAvailableBridges({ - token, - walletAddress, - }) - expect(screen.queryAllByTestId('bridge').length).toBe(2) - }) - test('should 2 bridge for BOBA ', () => { - renderAvailableBridges({ - token: { symbol: 'BOBA' }, - walletAddress, - }) - expect(screen.queryAllByTestId('bridge').length).toBe(2) - }) - test('should 2 bridge for USDC ', () => { - renderAvailableBridges({ - token: { symbol: 'USDC' }, - walletAddress, - }) - expect(screen.queryAllByTestId('bridge').length).toBe(2) - }) - }) -}) diff --git a/packages/boba/gateway/src/components/availableBridges/types.ts b/packages/boba/gateway/src/components/availableBridges/types.ts deleted file mode 100644 index 60c5d9cafb..0000000000 --- a/packages/boba/gateway/src/components/availableBridges/types.ts +++ /dev/null @@ -1,11 +0,0 @@ -export interface IBridges { - name: string - type: string - link: string - tokens: string[] -} - -export interface AvailableBridgesProps { - token?: any | null // FIXME: fix the type of token - walletAddress: string -} diff --git a/packages/boba/gateway/src/components/bridge/ChainLabel/index.tsx b/packages/boba/gateway/src/components/bridge/ChainLabel/index.tsx deleted file mode 100644 index f6ae48eca7..0000000000 --- a/packages/boba/gateway/src/components/bridge/ChainLabel/index.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import React, { useEffect, useState } from 'react' -import { useSelector } from 'react-redux' - -import { - selectActiveNetworkName, - selectActiveNetworkIcon, - selectLayer, -} from 'selectors' -import { DEFAULT_NETWORK, LAYER } from 'util/constant' -import { L1_ICONS, L2_ICONS } from 'util/network/network.util' -import { ChainLabelContainer } from './styles' -import { IconType, ChainLabelInterface, DirectionType } from './types' - -export const ChainLabel = ({ direction }: ChainLabelInterface) => { - const [toL2, setToL2] = useState(true) - - const layer = useSelector(selectLayer()) - const networkName = useSelector(selectActiveNetworkName()) - const icon: keyof IconType = useSelector(selectActiveNetworkIcon()) - - const isL1 = layer === LAYER.L1 - - useEffect(() => { - setToL2(isL1) - }, [isL1]) - - const L1Icon = L1_ICONS[icon] - const L2Icon = L2_ICONS[icon] - - const L1ChainLabel = () => { - return ( - - - {networkName['l1'] || DEFAULT_NETWORK.NAME.L1} - - ) - } - - const L2ChainLabel = () => { - return ( - - - {networkName['l2'] || DEFAULT_NETWORK.NAME.L2} - - ) - } - const config: DirectionType = { - from: toL2 ? : , - to: toL2 ? : , - } - - const selectedDirection = config[direction as keyof DirectionType] - - return direction ? selectedDirection : config.from -} diff --git a/packages/boba/gateway/src/components/bridge/ChainLabel/styles.ts b/packages/boba/gateway/src/components/bridge/ChainLabel/styles.ts deleted file mode 100644 index b6bd7f5091..0000000000 --- a/packages/boba/gateway/src/components/bridge/ChainLabel/styles.ts +++ /dev/null @@ -1,15 +0,0 @@ -import styled from 'styled-components' -import { Typography } from 'components/global/typography' - -export const ChainLabelContainer = styled(Typography)` - display: flex; - justify-content: center; - align-items: center; - gap: 10px; - svg, - img { - max-width: 24px; - width: 100%; - height: auto; - } -` diff --git a/packages/boba/gateway/src/components/bridge/ChainLabel/types.ts b/packages/boba/gateway/src/components/bridge/ChainLabel/types.ts deleted file mode 100644 index 526c2eea0f..0000000000 --- a/packages/boba/gateway/src/components/bridge/ChainLabel/types.ts +++ /dev/null @@ -1,14 +0,0 @@ -export interface ChainLabelInterface { - direction: string -} - -export type IconType = { - ethereum: ({ selected }: { selected?: boolean | undefined }) => Element - bnb: ({ selected }: { selected?: boolean | undefined }) => Element - avax: ({ selected }: { selected?: boolean | undefined }) => Element -} - -export type DirectionType = { - from: JSX.Element - to: JSX.Element -} diff --git a/packages/boba/gateway/src/components/bridge/NetworkPickerList/index.tsx b/packages/boba/gateway/src/components/bridge/NetworkPickerList/index.tsx deleted file mode 100644 index 43bc5f3d57..0000000000 --- a/packages/boba/gateway/src/components/bridge/NetworkPickerList/index.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import React, { ElementType, FC } from 'react' -import { useDispatch, useSelector } from 'react-redux' - -import { - INetwork, - L1_ICONS, - L2_ICONS, - NetworkList as NetworkLists, -} from 'util/network/network.util' - -import { - selectActiveNetwork, - selectActiveNetworkType, - selectModalState, - selectLayer, -} from 'selectors' - -import { setNetwork } from 'actions/networkAction' - -import { - NetworkPickerList, - NetworkItem, - NetworkIcon, - NetworkLabel, -} from './styles' - -interface NetworkListProps { - close?: () => void -} - -export const NetworkList: FC = ({ close = () => {} }) => { - const dispatch = useDispatch() - const networkType = useSelector(selectActiveNetworkType()) - const activeNetwork = useSelector(selectActiveNetwork()) - const selectionLayer = useSelector(selectModalState('selectionLayer')) - const layer = useSelector(selectLayer()) - - const l1Icon = L1_ICONS as Record - const l2Icon = L2_ICONS as Record - - const networks = (NetworkLists as Record)[networkType] - const currentLayer = selectionLayer || (layer as string).toLowerCase() - const onChainChange = (chainDetail: INetwork) => { - dispatch( - setNetwork({ - network: chainDetail.chain, - name: chainDetail.name, - networkIcon: chainDetail.icon, - chainIds: chainDetail.chainId, - networkType, - }) - ) - close() - } - - return ( - - {networks.map((chainDetail: INetwork) => { - const CurrentIcon = - currentLayer === 'l1' - ? l1Icon[chainDetail.icon] - : l2Icon[chainDetail.icon] - - return ( - onChainChange(chainDetail)} - > - - - - {chainDetail.name[currentLayer]} - - ) - })} - - ) -} diff --git a/packages/boba/gateway/src/components/bridge/NetworkPickerList/styles.ts b/packages/boba/gateway/src/components/bridge/NetworkPickerList/styles.ts deleted file mode 100644 index 49d31914a0..0000000000 --- a/packages/boba/gateway/src/components/bridge/NetworkPickerList/styles.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { Typography } from 'components/global' -import styled, { css } from 'styled-components' - -export const NetworkPickerModalContainer = styled.div` - width: 100%; -` -export const NetworkPickerList = styled.div` - display: flex; - flex-direction: column; - align-items: flex-start; - gap: 8px; - width: 100%; -` -export const NetworkItem = styled.div<{ selected?: boolean }>` - cursor: pointer; - display: flex; - width: 100%; - padding: 12px 16px; - border-radius: 8px; - align-items: center; - justify-content: flex-start; - gap: 8px; - - ${({ selected }) => - selected && - css` - border-radius: 8px; - border: 1px solid var(--gray-100, #a8a8a8); - background: ${({ theme: { colors } }) => colors.gray[400]}; - `} - - &:hover { - border-radius: 8px; - background: ${({ theme: { colors } }) => colors.gray[400]}; - } -` -export const NetworkIcon = styled.div` - display: flex; - width: 30px; - height: 30px; -` -export const NetworkLabel = styled(Typography).attrs({ - variant: 'body1', -})` - color: ${({ theme: { colors, name } }) => - name === 'light' ? colors.gray[700] : colors.gray[50]}; - text-align: right; -` - -styled(Typography).attrs({ - variant: 'body2', -})` - text-align: left; - color: ${({ theme }) => theme.colors.gray[50]}; -` diff --git a/packages/boba/gateway/src/components/bridgeFee/BridgeFee.js b/packages/boba/gateway/src/components/bridgeFee/BridgeFee.js deleted file mode 100644 index 4132d2b380..0000000000 --- a/packages/boba/gateway/src/components/bridgeFee/BridgeFee.js +++ /dev/null @@ -1,83 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ -import React from 'react' - -import { HelpOutline } from '@mui/icons-material' -import { Box, Typography } from '@mui/material' - -import Tooltip from 'components/tooltip/Tooltip' - -import * as S from './BridgeFee.styles' - -function BridgeFee({ - time, - estFee, - exitFee, - lpFee, - estReceive, - exitFeeInfo, - timeInfo, - estFeeInfo, - lpFeeInfo, - estReceiveInfo -}) { - - const ItemLabel = ({ label, info }) => { - return - {label} - {info ? - - : null} - - } - - return - {time ? - - - {time} - - : null} - - - {estFee ? - - - {estFee} - - : null} - {lpFee ? - - - {lpFee} - - : null} - {exitFee ? - - - {exitFee} - - : null} - {estReceive ? - - - {estReceive} - - : null} - - -} - -export default BridgeFee; diff --git a/packages/boba/gateway/src/components/bridgeFee/BridgeFee.styles.js b/packages/boba/gateway/src/components/bridgeFee/BridgeFee.styles.js deleted file mode 100644 index a22a91ad56..0000000000 --- a/packages/boba/gateway/src/components/bridgeFee/BridgeFee.styles.js +++ /dev/null @@ -1,31 +0,0 @@ -import styled from '@emotion/styled'; -import { Box, Typography } from "@mui/material"; - -export const BrigeFeeWrapper = styled(Box)(({ theme }) => ({ - display: 'flex', - justifyContent: 'space-between', - margin: '5px 0', - [ theme.breakpoints.down('sm') ]: { - flexDirection: 'column', - } -})); - - -export const BridgeFeeItem = styled(Box)(({ theme }) => ({ - display: 'flex', - alignItems: 'flex-start', - justifyContent: 'flex-start', - flexDirection: 'column', - [ theme.breakpoints.down('sm') ]: { - flexDirection: 'row', - justifyContent: 'space-between' - } -})); - -export const BridgeFeeItemLabel = styled(Typography)(({ theme }) => ({ - display: 'flex', - alignItems: 'center', - justifyContent: 'center', - gap: '5px', - opacity: '0.65' -})); diff --git a/packages/boba/gateway/src/components/button/Button.js b/packages/boba/gateway/src/components/button/Button.js deleted file mode 100644 index d8dcd6bb0c..0000000000 --- a/packages/boba/gateway/src/components/button/Button.js +++ /dev/null @@ -1,97 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React from 'react' -import { CircularProgress } from '@mui/material' -import { Button as ButtonMUI } from '@mui/material' -import Tooltip from '../tooltip/Tooltip' - -function Button({ - children, - style, - onClick, - color, - variant, - fullWidth, - disabled, - loading, - sx, - pulsate, - tooltip = '', - size, - className, - triggerTime -}) { - if (disabled || loading) pulsate = false - - let timeDefined = false - if (typeof triggerTime !== 'undefined') { - timeDefined = true - } - - // Save the current date to be able to trigger an update - const [now, setTime] = React.useState(new Date()) - - React.useEffect(() => { - if (loading) { - const timer = setInterval(() => { - setTime(new Date()) - }, 1000) - return () => { - clearInterval(timer) - } - } - }, [loading]) - - let waitTime = (now - triggerTime) / 1000 - if (waitTime < 0) waitTime = 0 - waitTime = Math.round(waitTime) - - const muiProps = { - color, - variant, - fullWidth, - onClick: loading || disabled ? null : onClick, - disabled, - size, - sx, - } - - const styleCombo = { - ...style, - minWidth: loading ? '200px' : '103px', - borderRadius: '12px', - } - - return ( - - - - {children} - {(disabled || loading) && timeDefined && waitTime > 3 && ( -
{waitTime}s ago
- )} - {loading && ( -
- -
- )} -
-
-
- ) -} - -export default React.memo(Button) diff --git a/packages/boba/gateway/src/components/copy/Copy.tsx b/packages/boba/gateway/src/components/copy/Copy.tsx deleted file mode 100644 index 36349de5d2..0000000000 --- a/packages/boba/gateway/src/components/copy/Copy.tsx +++ /dev/null @@ -1,51 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React, { useState, useEffect } from 'react' -import { ContentCopyOutlined } from '@mui/icons-material' -import { IconButton, Tooltip } from '@mui/material' - -type CopyType = { - value?: string -} - -const Copy = ({ value = '' }: CopyType): JSX.Element => { - const [open, setOpen] = useState(false) - - const handdleCopy = (text: string) => { - navigator.clipboard.writeText(text) - setOpen(true) - } - - useEffect(() => { - if (open) { - setTimeout(() => { - setOpen(false) - }, 1500) - } - }, [open, setOpen]) - - return ( -
handdleCopy(value)}> - - - - - -
- ) -} - -export default React.memo(Copy) diff --git a/packages/boba/gateway/src/components/counterButton/CounterButton.tsx b/packages/boba/gateway/src/components/counterButton/CounterButton.tsx deleted file mode 100644 index c7ad0cb2c3..0000000000 --- a/packages/boba/gateway/src/components/counterButton/CounterButton.tsx +++ /dev/null @@ -1,45 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React from 'react' -import { AddCircleOutline, RemoveCircleOutline } from '@mui/icons-material' -import { IconButton } from '@mui/material' - -type CounterButtonPropsType = { - onClick: () => void - disabled: boolean - minus?: boolean -} - -const CounterButton = (props: CounterButtonPropsType): JSX.Element => { - const { onClick, disabled, minus } = props - - return ( - - {minus ? ( - - ) : ( - - )} - - ) -} - -export default React.memo(CounterButton) diff --git a/packages/boba/gateway/src/components/dao/LinearProgress/index.tsx b/packages/boba/gateway/src/components/dao/LinearProgress/index.tsx deleted file mode 100644 index d7dcf4a329..0000000000 --- a/packages/boba/gateway/src/components/dao/LinearProgress/index.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import React from 'react' -import { ProgressBar, Line, Circle, Label, LabelContainer } from './style' -import { LinearProgressProps } from './types' - -export const LinearProgress: React.FC = ({ A, B, C }) => { - const totalWidth = A + B + C - const forWidth = `${(A / totalWidth) * 100}%` - const againstWidth = `${(B / totalWidth) * 100}%` - const abstainWidth = `${(C / totalWidth) * 100}%` - - return ( - <> - - - - - - - - - - - - ) -} diff --git a/packages/boba/gateway/src/components/dao/LinearProgress/style.ts b/packages/boba/gateway/src/components/dao/LinearProgress/style.ts deleted file mode 100644 index 272bf41e7f..0000000000 --- a/packages/boba/gateway/src/components/dao/LinearProgress/style.ts +++ /dev/null @@ -1,47 +0,0 @@ -import styled from 'styled-components' - -export const ProgressBar = styled.div` - display: flex; -` -export const Line = styled.div` - height: 6px; - &.for { - background: ${(props) => props.theme.colors.green[300]}; - } - &.against { - background: rgba(255, 106, 85, 1); - } - &.abstain { - background: ${(props) => props.theme.colors.gray[300]}; - } -` - -export const Circle = styled.span` - display: inline-flex; - width: 8px; - height: 8px; - margin-right: 5px; - border-radius: 50%; - &.for { - background: ${(props) => props.theme.colors.green[300]}; - } - &.against { - background: rgba(255, 106, 85, 1); - } - &.abstain { - background: ${(props) => props.theme.colors.gray[300]}; - } -` - -export const LabelContainer = styled.div` - display: flex; - justify-content: space-between; - padding: 10px 0px; - gap: 0px 25px; - width: 100%; -` - -export const Label = styled.p` - font-weight: 400; - font-size: ${(props) => props.theme.text.body2}; -` diff --git a/packages/boba/gateway/src/components/dao/LinearProgress/types.ts b/packages/boba/gateway/src/components/dao/LinearProgress/types.ts deleted file mode 100644 index 7fe48d6db6..0000000000 --- a/packages/boba/gateway/src/components/dao/LinearProgress/types.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface LinearProgressProps { - A: number - B: number - C: number -} diff --git a/packages/boba/gateway/src/components/dao/label/index.tsx b/packages/boba/gateway/src/components/dao/label/index.tsx deleted file mode 100644 index fe8ac845e9..0000000000 --- a/packages/boba/gateway/src/components/dao/label/index.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import React from 'react' -import { LabelContainer } from './styles' - -export const Label = (props: { status: string }) => { - return {props.status} -} diff --git a/packages/boba/gateway/src/components/dao/label/styles.ts b/packages/boba/gateway/src/components/dao/label/styles.ts deleted file mode 100644 index d34ca1caa1..0000000000 --- a/packages/boba/gateway/src/components/dao/label/styles.ts +++ /dev/null @@ -1,32 +0,0 @@ -import styled, { css } from 'styled-components' - -export const LabelContainer = styled.div<{ state: string }>` - display: flex; - margin-left: auto; - font-size: ${(props) => props.theme.text.body3}; - border-radius: 6px; - color: ${(props) => props.theme.colors.red[300]}; - border: 1px solid ${(props) => props.theme.colors.red[300]}; - padding: 4px 8px; - - ${(props) => - props.state === 'Active' && - css` - color: ${props.theme.colors.green[300]}; - border-color: ${props.theme.colors.green[300]}; - `} - - ${(props) => - props.state === 'Pending' && - css` - color: rgba(247, 195, 103, 1); - border-color: rgba(247, 195, 103, 1); - `} - - ${(props) => - props.state === 'Canceled' && - css` - color: ${props.theme.colors.gray[100]}; - border-color: ${props.theme.colors.gray[100]}; - `} -` diff --git a/packages/boba/gateway/src/components/dao/preloader/index.tsx b/packages/boba/gateway/src/components/dao/preloader/index.tsx deleted file mode 100644 index 31b8e74321..0000000000 --- a/packages/boba/gateway/src/components/dao/preloader/index.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from 'react' -import { - PreloaderContainer, - Preload, - Number, - Title, - Label, - Arrow, -} from './styles' - -export const Preloader = () => { - const limit = 4 - - return ( - - {Array.from({ length: limit }).map((_, index) => ( - - - - <Label /> - <Arrow /> - </Preload> - ))} - </PreloaderContainer> - ) -} diff --git a/packages/boba/gateway/src/components/dao/preloader/styles.tsx b/packages/boba/gateway/src/components/dao/preloader/styles.tsx deleted file mode 100644 index 558dfd432b..0000000000 --- a/packages/boba/gateway/src/components/dao/preloader/styles.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import styled, { css, keyframes } from 'styled-components' - -const pulseLightAnimation = keyframes` - 0% { - background-color: rgba(255,255,255,0.1); - } - 100% { - background-color: rgba(255,255,255,0.2); - } -` - -const pulseDarkAnimation = keyframes` - 0% { - background-color: rgba(0,0,0,0.1); - } - 100% { - background-color: rgba(0,0,0,0.2); - } -` - -const BasePreloader = styled.div` - height: 22px; - background: rgba(255, 255, 255, 0.2); - ${(props) => - props.theme.name === 'light' && - css` - animation: ${pulseDarkAnimation} 0.65s infinite alternate; - `} - ${(props) => - props.theme.name === 'dark' && - css` - animation: ${pulseLightAnimation} 0.65s infinite alternate; - `} - width: 100%; -` -export const Number = styled(BasePreloader)` - width: 25px; -` -export const Title = styled(BasePreloader)` - width: 100%; -` -export const Label = styled(BasePreloader)` - width: 70px; -` -export const Arrow = styled(BasePreloader)` - width: 12px; -` - -export const PreloaderContainer = styled.div` - width: 100%; - gap: 15px 0px; - padding-right: 15px; - display: flex; - flex-direction: column; -` -export const Preload = styled.div` - border: 1px solid ${(props) => props.theme.colors.box.border}; - border-radius: 12px; - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; - gap: 0px 10px; - padding: 20px; - background: ${(props) => props.theme.colors.box.background}; -` diff --git a/packages/boba/gateway/src/components/disconnect/Disconnect.tsx b/packages/boba/gateway/src/components/disconnect/Disconnect.tsx deleted file mode 100644 index faf71e2c57..0000000000 --- a/packages/boba/gateway/src/components/disconnect/Disconnect.tsx +++ /dev/null @@ -1,35 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React from 'react' -import { LoginOutlined } from '@mui/icons-material' -import { IconButton, Tooltip } from '@mui/material' - -import useDisconnect from 'hooks/useDisconnect' - -const Disconnect = () => { - const { disconnect } = useDisconnect() - return ( - <> - <Tooltip title="" onClick={disconnect}> - <IconButton size="medium"> - <LoginOutlined sx={{ fontSize: 16 }} /> - </IconButton> - </Tooltip> - </> - ) -} - -export default React.memo(Disconnect) diff --git a/packages/boba/gateway/src/components/faucet/Faucet.js b/packages/boba/gateway/src/components/faucet/Faucet.js deleted file mode 100644 index 158162638a..0000000000 --- a/packages/boba/gateway/src/components/faucet/Faucet.js +++ /dev/null @@ -1,148 +0,0 @@ -import React, { useState } from 'react'; -import { useDispatch, useSelector } from 'react-redux'; -import { selectActiveNetworkType, selectLayer, selectWalletAddress } from 'selectors'; - -import * as G from 'containers/Global.styles' -import { Box, Typography, Input } from '@mui/material'; - -import faucetService from 'services/faucet.service'; -import { openAlert } from 'actions/uiAction'; -import { NETWORK_TYPE } from 'util/network/network.util'; -import Copy from 'components/copy/Copy'; -import Button from 'components/button/Button'; -import twitter from 'assets/images/twitter.png' -import { Md5 } from 'ts-md5'; -import networkService from 'services/networkService'; - - -/** - * @Faucet - * - only accessible on L2 for testnet env. - */ - -const Faucet = (props) => { - - const dispatch = useDispatch(); - const activeNetworkType = useSelector(selectActiveNetworkType()); - const layer = useSelector(selectLayer()) - const walletAddress = useSelector(selectWalletAddress()) - - - const [ tweetUrl, setTweetUrl ] = useState("") - const [ isClaimFaucetLoading, setIsClaimFaucetLoading ] = useState(false) - const [ faucetErrorMsg, setFaucetErrorMsg ] = useState("") - - let bobaTag = '' - if (walletAddress) - bobaTag = Md5.hashStr(walletAddress.toLowerCase().substring(2)) - - let BT = '' - let tweet = '' - if (bobaTag) { - BT = "BOBA" + bobaTag.substring(0, 9).toUpperCase() - tweet = networkService.networkConfig.twitterFaucetPromotionText + BT - } - - async function claimAuthenticatedFaucetTokens() { - try { - setIsClaimFaucetLoading(true) - const tweetId = tweetUrl?.match(/twitter\.com\/.*\/status\/(\d+)/)[ 1 ] - const res = await faucetService.getTestnetETHAuthenticatedMetaTransaction(tweetId) - if (!res) { - dispatch(openAlert('Faucet request submitted')) - } else { - setFaucetErrorMsg(res) - } - } catch (err) { - let error = err.message.match(/execution reverted: (.*)\\+"}}/) - if (error) { - error = error[ 1 ] - } else { - error = err?.message ?? err - } - setFaucetErrorMsg(error) - } finally { - setIsClaimFaucetLoading(false) - } - } - - if (layer === 'L2' && - activeNetworkType === NETWORK_TYPE.TESTNET) - { - return ( - <G.LayerAlert style={{ padding: '20px' }}> - <Box> - <Box style={{ display: "inline-block" }}> - <Typography variant="body2"> - Developer Twitter/Turing test token fountain - your Boba Bubble:{" "} - <span style={{ opacity: 0.65 }}>{BT} <Copy value={BT} light={false} /></span> - </Typography> - </Box> - - <Typography variant="body3" sx={{ opacity: 0.65, marginBottom: "10px" }}> - Welcome developers. - For testnet BOBA and ETH, tweet your Boba Bubble and - then paste the tweet link in the field below. - </Typography> - - <a - target='_blank' - rel="noopener noreferrer" - href={tweet} - aria-label="link" - style={{ - backgroundColor: '#1b95e0', - color: '#fff', - borderRadius: '4px', - height: '28px', - fontWeight: '500', - fontSize: '13px', - lineheight: '26px', - padding: '8px 8px 8px 30px', - textDecoration: 'none', - backgroundImage: `url(${twitter})`, - backgroundRepeat: 'no-repeat', - backgroundSize: '16px 13px', - backgroundPosition: '8px 10px' - }} - >Tweet Now - </a> - - <Typography variant="body3" sx={{ opacity: 0.65, marginTop: "10px", marginBottom: "10px" }}> - For the Tweet link, tap the share icon, tap "Share Tweet via", and finally select "Copy link to Tweet". - </Typography> - - <Input - style={{ width: '80%' }} - value={tweetUrl} - placeholder="Tweet Link" - onChange={(e) => setTweetUrl(e?.target?.value.split('?')[ 0 ])} //remove the superfluous stuff after the "?" - /> - - <Typography variant="body3" sx={{ opacity: 0.65, marginBottom: "10px", marginTop: '3px' }}> - You are limited to one fountain call per twitter account per day. - The transaction will not show in your history since it's a MetaTransaction (the gas is covered by Boba). - </Typography> - - <Button - type="primary" - variant="contained" - style={{ marginTop: "10px", marginBottom: "18px" }} - disabled={!tweetUrl || !tweetUrl?.includes('http')} - loading={isClaimFaucetLoading} - onClick={async (e) => { await claimAuthenticatedFaucetTokens() }} - size="small" - > - Authenticated Faucet - </Button> - - {faucetErrorMsg ? <Typography style={{ color: 'red' }}>{faucetErrorMsg}</Typography> : null} - </Box> - </G.LayerAlert> - ) - } - - return null; -} - -export default Faucet; diff --git a/packages/boba/gateway/src/components/filter/index.tsx b/packages/boba/gateway/src/components/filter/index.tsx deleted file mode 100644 index c50c194e01..0000000000 --- a/packages/boba/gateway/src/components/filter/index.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import React, { - useState, - useCallback, - useEffect, - useRef, - ReactNode, -} from 'react' -import { - DropdownContainer, - Header, - IconContainer, - Option, - DefaultIcon, - DropdownBody, - Icon, - DropdownContent, -} from './styles' -export interface IFilterDropdownItem { - value: string - label: string | ReactNode -} - -export interface IFilterDropdownProps { - error: boolean - imgSrc: string - items: IFilterDropdownItem[] - defaultItem: IFilterDropdownItem - onItemSelected?: (item: IFilterDropdownItem) => void - className?: string -} - -export const FilterDropDown: React.FC<IFilterDropdownProps> = ({ - items, - defaultItem, - error = false, - imgSrc, - onItemSelected, - className, -}) => { - const [selectedItem, setSelectedItem] = - useState<IFilterDropdownItem>(defaultItem) - const [isOpen, setIsOpen] = useState<boolean>(false) - - const handleDropdown = useCallback(() => { - setIsOpen(!isOpen) - }, [isOpen]) - - const selectItem = useCallback((item: IFilterDropdownItem) => { - onItemSelected && onItemSelected(item) - setSelectedItem(item) - setIsOpen(false) - }, []) - - const dropdownRef = useRef<HTMLDivElement>(null) - - useEffect(() => { - const handleClickOutside = (e: Event) => { - if ( - dropdownRef.current && - !dropdownRef.current.contains(e.target as Node) - ) { - setIsOpen(false) - } - } - // Bind the event listener - document.addEventListener('mousedown', handleClickOutside) - return () => { - // Unbind the event listener on clean up - document.removeEventListener('mousedown', handleClickOutside) - } - }, [dropdownRef]) - - return ( - <DropdownContainer className={`dropdown ${className}`} ref={dropdownRef}> - <Header onClick={handleDropdown} error={error} isOpen={isOpen}> - {imgSrc && ( - <IconContainer> - {imgSrc !== 'default' && <Icon src={imgSrc} />} - {imgSrc === 'default' && <DefaultIcon />} - </IconContainer> - )} - </Header> - {isOpen && ( - <DropdownBody> - <DropdownContent> - {items.map((item, index) => ( - <Option - key={index} - isSelected={item?.value === selectedItem?.value} - onClick={() => { - selectItem(item) - }} - > - {item.label} - </Option> - ))} - </DropdownContent> - </DropdownBody> - )} - </DropdownContainer> - ) -} diff --git a/packages/boba/gateway/src/components/filter/styles.ts b/packages/boba/gateway/src/components/filter/styles.ts deleted file mode 100644 index c026238e02..0000000000 --- a/packages/boba/gateway/src/components/filter/styles.ts +++ /dev/null @@ -1,222 +0,0 @@ -import styled, { css } from 'styled-components' -import { Svg } from 'components/global/svg' -import { screen } from 'themes/screens' - -export const DropdownContainer = styled.div` - display: inline-flex; - flex-direction: column; - position: relative; - cursor: pointer; - transition: 0.25s all; - box-sizing: border-box; - ${(props) => - props.theme.name === 'light' && - css` - color: ${props.theme.colors.gray[800]}; - `} - ${(props) => - props.theme.name === 'dark' && - css` - color: ${props.theme.colors.gray[50]}; - `} -` - -export const Header = styled.div<{ error: boolean; isOpen: boolean }>` - box-sizing: border-box; - position: relative; - color: inherit; - border-radius: 37px; - transition: all 0.3s ease; - background: none; - ${(props) => - props.theme.name === 'light' && - css` - border: 2px solid ${props.theme.colors.gray[600]}; - svg { - fill: ${props.theme.colors.gray[600]}; - } - &:hover { - border-color: ${props.theme.colors.gray[800]}; - svg { - fill: ${props.theme.colors.gray[800]}; - } - } - `} - ${(props) => - props.theme.name === 'dark' && - css` - border: 2px solid ${props.theme.colors.gray[200]}; - svg { - fill: ${props.theme.colors.gray[100]}; - } - &:hover { - color: ${props.theme.colors.gray[50]}; - border-color: ${props.theme.colors.green[300]}; - svg { - fill: ${props.theme.colors.gray[50]}; - } - } - `} - ${(props) => - props.error && - ` - border-color:${props.theme.colors.red[300]} - `} - ${({ isOpen, theme }) => - isOpen && - css` - color: ${theme.name === 'light' ? 'initial' : theme.colors.gray[50]}; - border-color: ${theme.name === 'light' - ? theme.colors.gray[800] - : theme.colors.green[300]}; - svg { - fill: ${theme.name === 'light' - ? theme.colors.gray[800] - : theme.colors.gray[50]}; - } - `} -` - -export const IconContainer = styled.div` - width: auto; - height: auto; - display: flex; - padding: 10px 11px; - align-items: center; - justify-content: center; - @media ${screen.mobile} { - width: 20px; - height: 20px; - } -` - -export const Option = styled.div<{ isSelected: boolean }>` - display: flex; - align-items: center; - font-size: ${(props) => props.theme.text.body2}; - font-weight: bold; - justify-content: flex-start; - text-align: left; - background: inherit; - color: inherit; - ${({ isSelected, theme }) => - isSelected && - css` - background: ${theme.colors.gray[400]}; - `} - @media ${screen.mobile} { - font-size: 10px; - } -` - -export const DefaultIcon = styled.div` - width: 32px; - height: 32px; - border-radius: 50%; - ${(props) => - props.theme.name === 'light' && - css` - background: ${props.theme.colors.gray[600]}; - `} - ${(props) => - props.theme.name === 'dark' && - css` - background: ${props.theme.colors.gray[200]}; - `} -` -export const Icon = styled(Svg)` - height: 16px; - width: auto; - display: flex; - align-items: center; - justify-content: center; - - div { - display: flex; - } - svg { - max-width: 32px; - min-width: 10px; - height: auto; - } -` - -export const DropdownBody = styled.div` - transition: 0.25s all; - background: inherit; - position: absolute; - width: 100%; - min-width: 139px; - right: 0px; - top: 45px; - z-index: 1; - padding: 8px 8px 8px 8px; - box-sizing: border-box; - border: inherit; - border-top: 0px; - border-radius: 14px; - box-shadow: ${(props) => props.theme.backShadow}; - ${(props) => - props.theme.name === 'light' && - css` - color: ${props.theme.colors.gray[800]}; - border: 1px solid ${props.theme.colors.gray[400]}; - background: ${props.theme.colors.gray[50]}; - `} - ${(props) => - props.theme.name === 'dark' && - css` - color: ${props.theme.colors.gray[100]}; - border: 1px solid ${props.theme.colors.gray[400]}; - background: ${props.theme.colors.gray[500]}; - `} -` -export const DropdownContent = styled.div` - min-height: 80px; - max-height: 180px; - display: flex; - flex-direction: column; - gap: 5px 0px; - overflow-y: auto; - &::-webkit-scrollbar { - width: 4px; - margin-right: 4px; - } - &::-webkit-scrollbar-track { - background-color: #f1f1f1; - border-radius: 10px; - } - &::-webkit-scrollbar-thumb { - background-color: #888; - border-radius: 10px; - } - - &::-webkit-scrollbar-thumb:hover { - background-color: #555; - } - - & > ${Option} { - transition: 0.25s all; - border-radius: 8px; - padding: 8px; - box-sizing: border-box; - border: 1px solid rgba(0, 0, 0, 0); - &:hover { - background: ${(props) => props.theme.colors.gray[400]}; - } - ${(props) => - props.theme.name === 'light' && - css` - &:hover { - border: 1px solid ${props.theme.colors.gray[600]}; - } - `} - ${(props) => - props.theme.name === 'dark' && - css` - &:hover { - border: 1px solid ${props.theme.colors.gray[100]}; - } - `}; - } -` diff --git a/packages/boba/gateway/src/components/global/IconLabel/index.tsx b/packages/boba/gateway/src/components/global/IconLabel/index.tsx deleted file mode 100644 index 4b14f20214..0000000000 --- a/packages/boba/gateway/src/components/global/IconLabel/index.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import React from 'react' -import styled from 'styled-components' - -import { getCoinImage } from 'util/coinImage' - -import { Text, Small } from 'components/global/text' -import { Row, Column } from 'components/global/containers' -import { AddToMetamask } from 'components/global/addToMetamask' - -const Icon = styled.img` - display: flex; - width: 35px; - height: 35px; - margin-right: 10px; -` - -const IconLabelContainer = styled(Row)` - .metamask { - opacity: 0; - transition: opacity 0.3s ease; - } - &:hover { - .metamask { - opacity: 1; - } - } -` - -export const IconLabel = (props: any) => { - const { symbol, name } = props.token - const logo = getCoinImage(symbol) - - return ( - <IconLabelContainer> - <Column> - <Row> - <div> - <Icon src={logo} alt="logo" /> - </div> - <div> - <Text>{symbol}</Text> - <Small>{name}</Small> - </div> - </Row> - </Column> - <AddToMetamask token={props.token} className="metamask" /> - </IconLabelContainer> - ) -} diff --git a/packages/boba/gateway/src/components/global/InputMax/__snapshots__/index.test.tsx.snap b/packages/boba/gateway/src/components/global/InputMax/__snapshots__/index.test.tsx.snap deleted file mode 100644 index 338e884adb..0000000000 --- a/packages/boba/gateway/src/components/global/InputMax/__snapshots__/index.test.tsx.snap +++ /dev/null @@ -1,47 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`MaxInput Max Input Component with Initial Value 1`] = ` -<DocumentFragment> - <div - class="sc-bgqQcB iFQfPY" - > - <input - class="sc-ewnqHT jwbTWF" - max="10" - min="0" - placeholder="Enter Amount" - step="0.1" - type="number" - value="5" - /> - <button - class="sc-gTRrQi enhoLL" - > - Max - </button> - </div> -</DocumentFragment> -`; - -exports[`MaxInput Max Input Component without Initial Value 1`] = ` -<DocumentFragment> - <div - class="sc-bgqQcB iFQfPY" - > - <input - class="sc-ewnqHT jwbTWF" - max="10" - min="0" - placeholder="Enter Amount" - step="0.1" - type="number" - value="" - /> - <button - class="sc-gTRrQi enhoLL" - > - Max - </button> - </div> -</DocumentFragment> -`; diff --git a/packages/boba/gateway/src/components/global/InputMax/index.stories.tsx b/packages/boba/gateway/src/components/global/InputMax/index.stories.tsx deleted file mode 100644 index 5d76c675af..0000000000 --- a/packages/boba/gateway/src/components/global/InputMax/index.stories.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react' -import { Meta, StoryFn } from '@storybook/react' - -import { MaxInput } from './' -import { MaxInputTypes } from './types' - -export default { - title: 'Components/MaxInput', - component: MaxInput, -} as Meta - -const Template: StoryFn<MaxInputTypes> = (args: MaxInputTypes) => ( - <MaxInput {...args} /> -) - -export const Default = Template.bind({}) -Default.args = { - max: 100, - onValueChange: (value: number) => console.log(`New value: ${value}`), -} - -export const WithInitialValue = Template.bind({}) -WithInitialValue.args = { - max: 100, - onValueChange: (value: number) => console.log(`New value: ${value}`), - initialValue: 50, -} diff --git a/packages/boba/gateway/src/components/global/InputMax/index.test.tsx b/packages/boba/gateway/src/components/global/InputMax/index.test.tsx deleted file mode 100644 index 4e080be853..0000000000 --- a/packages/boba/gateway/src/components/global/InputMax/index.test.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import React from 'react' -import { render } from '@testing-library/react' -import { MaxInputTypes } from './types' -import CustomThemeProvider from 'themes' -import { MaxInput } from './' -import { Provider } from 'react-redux' -import configureStore from 'redux-mock-store' - -const mockStore = configureStore() - -const renderInputMax = (props: MaxInputTypes) => { - return render( - <Provider - store={mockStore({ - ui: { - theme: 'light', - }, - })} - > - <CustomThemeProvider> - <MaxInput {...props}>Test Button</MaxInput> - </CustomThemeProvider> - </Provider> - ) -} - -describe('MaxInput', () => { - test('Max Input Component without Initial Value', () => { - const { asFragment } = renderInputMax({ - max: 10, - onValueChange: jest.fn(), - }) - expect(asFragment()).toMatchSnapshot() - }) - test('Max Input Component with Initial Value', () => { - const { asFragment } = renderInputMax({ - max: 10, - initialValue: 5, - onValueChange: jest.fn(), - }) - expect(asFragment()).toMatchSnapshot() - }) -}) diff --git a/packages/boba/gateway/src/components/global/InputMax/index.tsx b/packages/boba/gateway/src/components/global/InputMax/index.tsx deleted file mode 100644 index 93c6ae4627..0000000000 --- a/packages/boba/gateway/src/components/global/InputMax/index.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import React, { useState } from 'react' -import { InputContainer, MaxButton, Input } from './styles' -import { MaxInputTypes } from './types' - -export const MaxInput: React.FC<MaxInputTypes> = ({ - max, - initialValue, - onValueChange, -}) => { - const [value, setValue] = useState<string | number>(initialValue || '') - - const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => { - const newValue = e.target.value - if (newValue === '') { - setValue('') - return - } - const newValueNumber = parseFloat(newValue) - if (isNaN(newValueNumber) || newValueNumber < 0 || newValueNumber > max) { - return - } - setValue(newValueNumber) - onValueChange(newValueNumber) - } - - const handleMaxClick = () => { - setValue(max) - onValueChange(max) - } - - return ( - <InputContainer> - <Input - type="number" - value={value} - onChange={handleInputChange} - min={0} - max={max} - step={0.1} - placeholder={'Enter Amount'} - /> - <MaxButton onClick={handleMaxClick}>Max</MaxButton> - </InputContainer> - ) -} diff --git a/packages/boba/gateway/src/components/global/InputMax/styles.ts b/packages/boba/gateway/src/components/global/InputMax/styles.ts deleted file mode 100644 index dc716159ba..0000000000 --- a/packages/boba/gateway/src/components/global/InputMax/styles.ts +++ /dev/null @@ -1,73 +0,0 @@ -import styled, { css } from 'styled-components' - -export const InputContainer = styled.div` - display: inline-flex; - min-width: 250px; - position: relative; - align-items: center; -` - -export const MaxButton = styled.button` - display: inline-flex; - position: absolute; - cursor: pointer; - right: 10px; - padding: 4px 6px; - border-radius: 6px; - font-family: inherit; - ${({ theme: { colors, name } }) => - name === 'light' - ? css` - color: ${colors.gray[600]}; - border: 1px solid ${colors.gray[600]}; - background: ${colors.gray[100]}; - &:hover { - background: transparent; - } - ` - : css` - color: ${colors.green[300]}; - border: 1px solid ${colors.gray[400]}; - background: transparent; - &:hover { - border: 1px solid ${colors.gray[100]}; - } - `} -` - -export const Input = styled.input` - width: 100%; - padding: 15px; - font-weight: 500; - line-height: 1; - appearance: none; - border-radius: 12px; - transition: all 0.25s; - outline: none; - font-family: inherit; - font-size: ${(props) => props.theme.text.body1}; - - ${(props) => - props.theme.name === 'light' && - css` - background: ${props.theme.colors.gray[100]}; - border: 1px solid ${props.theme.colors.gray[400]}; - color: ${props.theme.colors.gray[600]}; - &:hover { - background: ${props.theme.colors.gray[300]}; - } - &:focus { - background: rgba(255, 255, 255, 0); - } - `} - ${(props) => - props.theme.name === 'dark' && - css` - background: ${props.theme.colors.gray[500]}; - border: 1px solid ${props.theme.colors.gray[300]}; - color: ${props.theme.colors.gray[200]}; - &:focus { - border: 1px solid ${props.theme.colors.green[300]}; - } - `} -` diff --git a/packages/boba/gateway/src/components/global/InputMax/types.ts b/packages/boba/gateway/src/components/global/InputMax/types.ts deleted file mode 100644 index 25c1ee74a4..0000000000 --- a/packages/boba/gateway/src/components/global/InputMax/types.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface MaxInputTypes { - max: number - initialValue?: number - onValueChange: (value: number) => void -} diff --git a/packages/boba/gateway/src/components/global/addToMetamask/index.tsx b/packages/boba/gateway/src/components/global/addToMetamask/index.tsx deleted file mode 100644 index c18f34105a..0000000000 --- a/packages/boba/gateway/src/components/global/addToMetamask/index.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import React from 'react' -import { getCoinImage } from 'util/coinImage' -import MetamaskLogo from 'assets/images/metamask.svg' -import networkService from 'services/networkService' -import styled from 'styled-components' - -type TokenType = { - symbol: string - decimals: number - address: string - chain: string -} - -type AddToMetamaskType = { - token: TokenType - className: string -} - -const AddToMetamaskContainer = styled.div` - margin-left: auto; - cursor: pointer; -` - -export const AddToMetamask = ({ - token, - className, -}: AddToMetamaskType): JSX.Element => { - const { symbol } = token || {} - const logoURI = getCoinImage(symbol) - const handleAddToMetamask = (e: React.MouseEvent<HTMLElement>) => { - e.stopPropagation() - networkService.walletService.addTokenToMetaMask({ ...token, logoURI }) - } - - return ( - <AddToMetamaskContainer - onClick={(e) => handleAddToMetamask(e)} - className={className} - > - <img - src={MetamaskLogo} - alt="add To Metamask" - width="20px" - height="20px" - /> - </AddToMetamaskContainer> - ) -} diff --git a/packages/boba/gateway/src/components/global/background/index.stories.tsx b/packages/boba/gateway/src/components/global/background/index.stories.tsx deleted file mode 100644 index 245e7f891e..0000000000 --- a/packages/boba/gateway/src/components/global/background/index.stories.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import React from 'react' -import { BrowserRouter } from 'react-router-dom' - -import { Meta, StoryFn } from '@storybook/react' - -import { Background } from '.' - -export default { - title: 'Components/Background', - component: Background, -} as Meta - -const Template: StoryFn = (args: any) => <Background /> - -export const Default = Template.bind({}) diff --git a/packages/boba/gateway/src/components/global/background/index.tsx b/packages/boba/gateway/src/components/global/background/index.tsx deleted file mode 100644 index 37538321a2..0000000000 --- a/packages/boba/gateway/src/components/global/background/index.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react' -import { useLocation } from 'react-router-dom' -import { BackgroundPosition, RoutesWithBackgroundPositionAtTop } from './types' -import { - BackgroundContainer, - GridBackground, - GridFade, - GridLines, -} from './styles' - -export const Background = () => { - const location = useLocation() - const currentPath = location.pathname - const isPositionTop: BackgroundPosition = - RoutesWithBackgroundPositionAtTop.includes(currentPath) - ? BackgroundPosition.TOP - : BackgroundPosition.CENTER - - return ( - <BackgroundContainer> - <GridBackground> - <GridFade position={isPositionTop} /> - <GridLines /> - </GridBackground> - </BackgroundContainer> - ) -} diff --git a/packages/boba/gateway/src/components/global/background/styles.ts b/packages/boba/gateway/src/components/global/background/styles.ts deleted file mode 100644 index 4fe611f3bc..0000000000 --- a/packages/boba/gateway/src/components/global/background/styles.ts +++ /dev/null @@ -1,77 +0,0 @@ -import styled, { keyframes } from 'styled-components' -import { BackgroundProps } from './types' -const gridHeight = '200vh' - -const linesColor = (theme: string) => { - if (theme === 'light') { - return 'rgba(0, 0, 0, 0.025)' - } else { - return 'rgba(255, 255, 255, 0.025)' - } -} - -const gradientColor = (theme: string) => { - if (theme === 'light') { - return 'radial-gradient(60% 90% at 50% 50%,rgba(174,219,1,0.1) 19.79%,rgba(174,219,1,0.125) 50%,rgba(174,219,1,0) 50%);' - } else { - return 'radial-gradient(55.87% 55.87% at 50.00% 50.00%, rgba(174, 219, 1, 0.24) 19.79%, rgba(174, 219, 1, 0.08) 62.50%, rgba(174, 219, 1, 0.00) 91.67%);' - } -} - -export const BackgroundContainer = styled.div` - height: 100vh; - width: 100%; - display: block; - overflow: hidden; - position: fixed; - z-index: 0; -` - -export const GridBackground = styled.div` - width: 100%; - height: ${gridHeight}; - overflow: hidden; - perspective: calc(${gridHeight} * 90); - background-color: ${({ theme }) => - theme.name === 'light' ? '#E5E5E1' : 'transperant'}; -` - -export const GridFade = styled.div<BackgroundProps>` - width: 100%; - height: 100%; - max-height: 870px; - position: absolute; - z-index: 1; - left: 50%; - top: 50%; - transform: translate(-50%, -100%); - will-change: translate; - transition: transform 1s ease; - background-image: ${(props) => gradientColor(props.theme.name)}; - background-clip: padding-box; - background-origin: content-box; - ${({ position }) => - position === 'top' && - ` - transform:translate(-50%, -150%); - `}; -` - -export const GridLines = styled.div` - width: 100%; - height: 200%; - background-image: linear-gradient( - to right, - ${(props) => linesColor(props.theme.name)} 1px, - transparent 0 - ), - linear-gradient( - to bottom, - ${(props) => linesColor(props.theme.name)} 1px, - transparent 0 - ); - background-size: 50px 50px; - background-repeat: repeat; - transform-origin: 100% 0 0; - will-change: transform; -` diff --git a/packages/boba/gateway/src/components/global/background/types.ts b/packages/boba/gateway/src/components/global/background/types.ts deleted file mode 100644 index aee321e484..0000000000 --- a/packages/boba/gateway/src/components/global/background/types.ts +++ /dev/null @@ -1,10 +0,0 @@ -export enum BackgroundPosition { - TOP = 'top', - CENTER = 'center', -} - -export interface BackgroundProps { - position: BackgroundPosition -} - -export const RoutesWithBackgroundPositionAtTop = ['/bridge', '/'] diff --git a/packages/boba/gateway/src/components/global/button/__snapshots__/index.test.tsx.snap b/packages/boba/gateway/src/components/global/button/__snapshots__/index.test.tsx.snap deleted file mode 100644 index f567bcf7a7..0000000000 --- a/packages/boba/gateway/src/components/global/button/__snapshots__/index.test.tsx.snap +++ /dev/null @@ -1,64 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Button Default Button 1`] = ` -<DocumentFragment> - <button - class="sc-bgqQcB iCiqEp" - label="Test Button" - type="button" - > - Test Button - </button> -</DocumentFragment> -`; - -exports[`Button Disable Button 1`] = ` -<DocumentFragment> - <button - class="sc-bgqQcB buwCqV" - label="Test Button" - type="button" - > - Test Button - </button> -</DocumentFragment> -`; - -exports[`Button Loading Button 1`] = ` -<DocumentFragment> - <button - class="sc-bgqQcB kNhvec" - label="Test Button" - type="button" - > - <span - class="sc-gTRrQi daKBPn" - /> - Test Button - </button> -</DocumentFragment> -`; - -exports[`Button Outline Button 1`] = ` -<DocumentFragment> - <button - class="sc-bgqQcB eGWGxW" - label="Outline Button" - type="button" - > - Outline Button - </button> -</DocumentFragment> -`; - -exports[`Button Small Button 1`] = ` -<DocumentFragment> - <button - class="sc-bgqQcB hCCYhJ" - label="Test Button" - type="button" - > - Test Button - </button> -</DocumentFragment> -`; diff --git a/packages/boba/gateway/src/components/global/button/index.stories.tsx b/packages/boba/gateway/src/components/global/button/index.stories.tsx deleted file mode 100644 index a7bda39df0..0000000000 --- a/packages/boba/gateway/src/components/global/button/index.stories.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import React from 'react' -import { Meta, StoryFn } from '@storybook/react' - -import { Button } from './' -import { ButtonTypes } from './types' - -export default { - title: 'Components/Button', - component: Button, -} as Meta - -const Template: StoryFn<ButtonTypes> = (args: any) => <Button {...args} /> - -export const Default = Template.bind({}) -Default.args = { - disable: false, - loading: false, - label: 'Default Button', -} - -export const Disabled = Template.bind({}) -Disabled.args = { - disable: true, - loading: false, - label: 'Disabled Button', -} - -export const Loading = Template.bind({}) -Loading.args = { - loading: true, - disable: false, - label: 'Loading...', -} - -export const Small = Template.bind({}) -Small.args = { - disable: false, - loading: false, - small: true, - label: 'Default Button', -} - -export const Outline = Template.bind({}) -Outline.args = { - disable: false, - loading: false, - small: false, - outline: true, - label: 'Default Button', -} diff --git a/packages/boba/gateway/src/components/global/button/index.test.tsx b/packages/boba/gateway/src/components/global/button/index.test.tsx deleted file mode 100644 index e892245c87..0000000000 --- a/packages/boba/gateway/src/components/global/button/index.test.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import React from 'react' -import { render } from '@testing-library/react' -import { ButtonTypes } from './types' -import CustomThemeProvider from 'themes' -import { Button } from './' -import { Provider } from 'react-redux' -import configureStore from 'redux-mock-store' - -const mockStore = configureStore() - -const renderButton = (props: ButtonTypes) => { - return render( - <Provider - store={mockStore({ - ui: { - theme: 'light', - }, - })} - > - <CustomThemeProvider> - <Button {...props}>Test Button</Button> - </CustomThemeProvider> - </Provider> - ) -} - -describe('Button', () => { - test('Default Button', () => { - const { asFragment } = renderButton({ - label: 'Test Button', - }) - expect(asFragment()).toMatchSnapshot() - }) - test('Loading Button', () => { - const { asFragment } = renderButton({ - loading: true, - label: 'Test Button', - }) - expect(asFragment()).toMatchSnapshot() - }) - test('Disable Button', () => { - const { asFragment } = renderButton({ - disable: true, - label: 'Test Button', - }) - expect(asFragment()).toMatchSnapshot() - }) - test('Small Button', () => { - const { asFragment } = renderButton({ - small: true, - label: 'Test Button', - }) - expect(asFragment()).toMatchSnapshot() - }) - test('Outline Button', () => { - const { asFragment } = renderButton({ - outline: true, - label: 'Outline Button', - }) - expect(asFragment()).toMatchSnapshot() - }) -}) diff --git a/packages/boba/gateway/src/components/global/button/index.tsx b/packages/boba/gateway/src/components/global/button/index.tsx deleted file mode 100644 index 0f09eed3ec..0000000000 --- a/packages/boba/gateway/src/components/global/button/index.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import React, { FC } from 'react' -import { ButtonContainer, SpinLoader } from './styles' -import { ButtonTypes } from './types' - -export const Button: FC<ButtonTypes> = ({ - disable = false, - loading = false, - small = false, - outline = false, - transparent = false, - tiny = false, - className, - label, - onClick, - style, -}) => { - return ( - <ButtonContainer - style={style} - type="button" - disable={disable} - loading={loading} - tiny={tiny} - transparent={transparent} - small={small} - outline={outline} - onClick={!disable ? onClick : () => {}} - className={className} - label={label} - > - {loading && <SpinLoader />} {label} - </ButtonContainer> - ) -} diff --git a/packages/boba/gateway/src/components/global/button/styles.ts b/packages/boba/gateway/src/components/global/button/styles.ts deleted file mode 100644 index f0f1415d82..0000000000 --- a/packages/boba/gateway/src/components/global/button/styles.ts +++ /dev/null @@ -1,119 +0,0 @@ -import styled, { keyframes } from 'styled-components' -import { ButtonTypes } from './types' -export const ButtonContainer = styled.button.withConfig({ - shouldForwardProp: (prop) => - !['loading', 'disable', 'small', 'outline', 'transparent', 'tiny'].includes( - prop - ), -})<ButtonTypes>` - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - min-width: 290px; - -webkit-appearance: none; - border-radius: 12px; - cursor: pointer; - border: 0px; - outline: none; - background: ${(props) => props.theme.colors.green[300]}; - padding: 16px 25px; - - font-weight: 700; - font-size: ${(props) => props.theme.text.heading1}; - - box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.15); - transition: all 0.25s ease; - - ${(props) => - props.tiny && - ` - font-size:${props.theme.text.body3}; - padding:10px 15px; - min-width:auto; - border-radius:8px; - `} - - ${(props) => - props.disable && - ` - background:${props.theme.colors.green[500]}; - cursor:default; - `} - - ${(props) => - props.loading && - ` - background:${props.theme.colors.green[300]}; - cursor:default; - `} - - ${(props) => - !props.disable && - ` - &:hover { - background: ${props.theme.colors.green[400]}; - } - `} - ${(props) => - props.small && - ` - min-width:auto; - font-size: ${props.theme.text.body2}; - border-radius: 33px; - `} - ${(props) => - props.outline && - ` - border: 1px solid ${props.theme.colors.green[300]}; - color: ${props.theme.colors.green[300]}; - background: transparent; - box-shadow:none; - &:hover { - color:${props.theme.colors.gray[800]}; - background:${props.theme.colors.green[300]}; - } - `} - - ${(props) => - props.transparent && - ` - flex-direction:column; - background:transparent; - border-color:transparent; - color:${props.theme.colors.gray[100]}; - box-shadow:none; - min-width: 100px; - margin:0px auto; - &:after{ - content:''; - width:0px; - height:2px; - transition: all 0.25s ease; - background:${props.theme.colors.gray[100]}; - } - &:hover { - background:transparent; - &:after { - width:110%; - } - } - `} -` - -const nk_spinner = keyframes` - 100% { transform: rotate(360deg); } -` - -export const SpinLoader = styled.span` - display: flex; - margin-right: 5px; - position: relative; - box-sizing: border-box; - width: 16px; - height: 16px; - border: 3px solid rgba(95, 95, 95, 0.3); - border-left: 3px solid rgba(38, 38, 38, 1); - border-radius: 50%; - animation: ${nk_spinner} 1s infinite cubic-bezier(0.65, 0.54, 0.5, 0.93); -` diff --git a/packages/boba/gateway/src/components/global/button/types.ts b/packages/boba/gateway/src/components/global/button/types.ts deleted file mode 100644 index 18da8e5cca..0000000000 --- a/packages/boba/gateway/src/components/global/button/types.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { ReactNode } from 'react' - -type ButtonType = { - disable?: boolean - loading?: boolean - small?: boolean - outline?: boolean - tiny?: boolean - transparent?: boolean -} - -export interface ButtonTypes extends ButtonType { - label: ReactNode | string - style?: Record<string, string> - className?: string - onClick?: () => void -} diff --git a/packages/boba/gateway/src/components/global/checkbox/index.tsx b/packages/boba/gateway/src/components/global/checkbox/index.tsx deleted file mode 100644 index 9fcb9cd660..0000000000 --- a/packages/boba/gateway/src/components/global/checkbox/index.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import React, { useState, useEffect } from 'react' -import { CheckboxWithLabelProps } from './types' -import { Typography } from 'components/global/typography' -import { Label, Checkbox, CheckContainer } from './styles' -import { Svg } from 'components/global/svg' - -import CheckedIcon from 'assets/images/icons/check.svg' - -export const CheckboxWithLabel: React.FC<CheckboxWithLabelProps> = ({ - label, - checked = false, - onChange, -}) => { - const [isChecked, setIsChecked] = useState(checked) - - const handleChange = () => { - const newCheckedState = !isChecked - setIsChecked(newCheckedState) - onChange(newCheckedState) - } - - useEffect(() => { - setIsChecked(checked) - }, []) - - return ( - <div> - <Label> - <CheckContainer checked={isChecked}> - <Checkbox - type="checkbox" - checked={isChecked} - onChange={handleChange} - /> - <Svg src={CheckedIcon} /> - </CheckContainer> - {label && <Typography variant="body1">{label}</Typography>} - </Label> - </div> - ) -} diff --git a/packages/boba/gateway/src/components/global/checkbox/styles.ts b/packages/boba/gateway/src/components/global/checkbox/styles.ts deleted file mode 100644 index f34942eb11..0000000000 --- a/packages/boba/gateway/src/components/global/checkbox/styles.ts +++ /dev/null @@ -1,75 +0,0 @@ -import styled, { css } from 'styled-components' -import { Svg } from 'components/global/svg' - -export const Label = styled.label` - display: flex; - align-items: center; - cursor: pointer; -` - -export const CheckContainer = styled.div<{ checked: boolean }>` - position: relative; - display: flex; - > div { - width: 16px; - height: 16px; - position: absolute; - top: 0px; - left: 2px; - } - svg { - position: absolute; - top: 2px; - left: 0px; - width: 12px; - height: 12px; - transition: opacity 0.25s ease; - opacity: 0; - fill: ${(props) => props.theme.colors.gray[800]}; - } - ${(props) => - props.checked && - ` - svg { - opacity:1; - } - `} -` - -export const Checkbox = styled.input` - width: 16px; - height: 16px; - background: transparent; - appearance: none; - margin: 0px 10px 0px 0px; - transition: all 0.25s ease; - - ${(props) => - props.theme.name === 'light' && - css` - border: 1px solid ${props.theme.colors.gray[800]}; - svg { - fill: ${props.theme.colors.gray[800]}; - } - `} - ${(props) => - props.theme.name === 'dark' && - css` - border: 1px solid ${props.theme.colors.gray[50]}; - svg { - fill: ${props.theme.colors.gray[50]}; - } - `} - - - - ${(props) => - props.checked && - ` - border-color:${props.theme.colors.green[300]}; - background:${props.theme.colors.green[300]}; - svg { - opacity:1; - } - `} -` diff --git a/packages/boba/gateway/src/components/global/checkbox/types.ts b/packages/boba/gateway/src/components/global/checkbox/types.ts deleted file mode 100644 index e188101dd1..0000000000 --- a/packages/boba/gateway/src/components/global/checkbox/types.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface CheckboxWithLabelProps { - label?: string - checked?: boolean - onChange: (isChecked: boolean) => void -} diff --git a/packages/boba/gateway/src/components/global/containers/index.tsx b/packages/boba/gateway/src/components/global/containers/index.tsx deleted file mode 100644 index b674adecef..0000000000 --- a/packages/boba/gateway/src/components/global/containers/index.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import React from 'react' -import styled from 'styled-components' - -const ROW = styled.div` - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; - width: 100%; -` - -const COLUMN = styled.div` - display: flex; - flex-direction: column; - justify-content: center; - align-items: flex-start; -` - -interface RowOrColumnType { - children: React.ReactNode - style?: React.CSSProperties - className?: string -} - -export const Row = ({ - children, - style, - className, -}: RowOrColumnType): JSX.Element => { - return ( - <ROW className={className} style={style}> - {children} - </ROW> - ) -} - -export const Column = ({ - children, - style, - className, -}: RowOrColumnType): JSX.Element => { - return ( - <COLUMN className={className} style={style}> - {children} - </COLUMN> - ) -} diff --git a/packages/boba/gateway/src/components/global/dropdown/index.stories.tsx b/packages/boba/gateway/src/components/global/dropdown/index.stories.tsx deleted file mode 100644 index 1e32ce7e62..0000000000 --- a/packages/boba/gateway/src/components/global/dropdown/index.stories.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import React from 'react' -import { StoryFn, Meta } from '@storybook/react' - -import { Dropdown, IDropdownProps } from './' - -export default { - title: 'Components/Dropdown/Form', - component: Dropdown, -} as Meta - -const Template: StoryFn<IDropdownProps> = (args: any) => <Dropdown {...args} /> - -export const Default = Template.bind({}) -Default.args = { - defaultItem: { - value: '', - label: 'Select Network', - imgSrc: 'default', - }, - items: [ - { - value: 'eth', - label: 'Ethereum Network', - imgSrc: - 'https://raw.githubusercontent.com/bobanetwork/token-list/main/assets/eth.svg', - }, - { - value: 'uni', - label: 'Uniswap', - imgSrc: - 'https://raw.githubusercontent.com/bobanetwork/token-list/main/assets/uni.svg', - }, - ], -} diff --git a/packages/boba/gateway/src/components/global/dropdown/index.tsx b/packages/boba/gateway/src/components/global/dropdown/index.tsx deleted file mode 100644 index 012fc60516..0000000000 --- a/packages/boba/gateway/src/components/global/dropdown/index.tsx +++ /dev/null @@ -1,208 +0,0 @@ -import React, { - useState, - useCallback, - ReactNode, - useEffect, - useRef, - CSSProperties, -} from 'react' -import ArrowDown from 'assets/images/icons/arrowdown.svg' -import { - DropdownContainer, - Header, - IconContainer, - Option, - DefaultIcon, - DropdownBody, - Icon, - DropdownContent, - OptionsHeader, - Arrow, - NoOptions, -} from './styles' - -import { ModalTypography } from 'components/global/modalTypography' -import { Typography } from '../typography' -export interface IDropdownItem { - value?: string - label: string | ReactNode - imgSrc?: string - header?: boolean - headerName?: string -} - -export interface IDropdownProps { - error: boolean - items: IDropdownItem[] - defaultItem: IDropdownItem - onItemSelected?: (item: IDropdownItem) => void - className?: string - headers?: string[] - style?: CSSProperties -} - -export const Dropdown: React.FC<IDropdownProps> = ({ - items, - defaultItem, - error = false, - onItemSelected, - className, - headers = [], - style, -}) => { - if (headers) { - let allItems: IDropdownItem[] = [] - const noHeaders = items.filter((item) => { - if (!item.header && !item.headerName) { - return true - } else { - return false - } - }) - allItems = [...noHeaders] - for (const header of headers) { - const headerItem: IDropdownItem = { - label: header, - header: true, - } - allItems = [ - ...allItems, - headerItem, - ...items.filter((item) => { - return item?.headerName === header - }), - ] - } - items = allItems - } - - const [selectedItem, setSelectedItem] = useState<IDropdownItem>(defaultItem) - const [isOpen, setIsOpen] = useState<boolean>(false) - - const handleDropdown = useCallback(() => { - setIsOpen(!isOpen) - }, [isOpen]) - - const selectItem = useCallback((item: IDropdownItem) => { - onItemSelected && onItemSelected(item) - setSelectedItem(item) - setIsOpen(false) - }, []) - - const dropdownRef = useRef<HTMLDivElement>(null) - - useEffect(() => { - const handleClickOutside = (e: Event) => { - if ( - dropdownRef.current && - !dropdownRef.current.contains(e.target as Node) - ) { - setIsOpen(false) - } - } - // Bind the event listener - document.addEventListener('mousedown', handleClickOutside) - return () => { - // Unbind the event listener on clean up - document.removeEventListener('mousedown', handleClickOutside) - } - }, [dropdownRef]) - - useEffect(() => { - setSelectedItem(defaultItem) - }, [defaultItem]) - - return ( - <DropdownContainer - className={`dropdown ${className}`} - ref={dropdownRef} - style={style} - > - <Header - onClick={handleDropdown} - error={error} - isOpen={isOpen} - className={`dropdown ${className}`} - > - <Option isSelected={false}> - {selectedItem.imgSrc && ( - <IconContainer> - {selectedItem.imgSrc !== 'default' && - selectedItem.imgSrc.includes('png') && ( - <img src={selectedItem.imgSrc} alt="token" width="20px" /> - )} - {selectedItem.imgSrc !== 'default' && - selectedItem.imgSrc.includes('svg') && ( - <Icon src={selectedItem.imgSrc} /> - )} - {selectedItem.imgSrc === 'default' && <DefaultIcon />} - </IconContainer> - )} - <Typography variant="body2">{selectedItem.label}</Typography> - - <Arrow src={ArrowDown} className={`dropdown ${className}`} /> - </Option> - </Header> - {isOpen && ( - <DropdownBody> - {items.length ? ( - <DropdownContent> - {items.map((item, index) => { - if (item.header) { - return ( - <OptionsHeader - key={index} - className={`dropdown ${className}`} - > - {item.imgSrc && ( - <IconContainer> - {item.imgSrc !== 'default' && ( - <Icon src={item.imgSrc} /> - )} - </IconContainer> - )} - {item.label} - </OptionsHeader> - ) - } else { - return ( - <Option - key={index} - className={`dropdown ${className}`} - isSelected={item.value === selectedItem.value} - onClick={() => { - if (!item.header) { - selectItem(item) - } - }} - > - {item.imgSrc && ( - <IconContainer> - {item.imgSrc !== 'default' && - item.imgSrc.includes('png') && ( - <img src={item.imgSrc} alt="token" width="20px" /> - )} - {item.imgSrc !== 'default' && - item.imgSrc.includes('svg') && ( - <Icon src={item.imgSrc} /> - )} - </IconContainer> - )} - {item.label} - </Option> - ) - } - })} - </DropdownContent> - ) : ( - <NoOptions> - <ModalTypography variant="body3"> - No available options - </ModalTypography> - </NoOptions> - )} - </DropdownBody> - )} - </DropdownContainer> - ) -} diff --git a/packages/boba/gateway/src/components/global/dropdown/styles.ts b/packages/boba/gateway/src/components/global/dropdown/styles.ts deleted file mode 100644 index 0e746028d8..0000000000 --- a/packages/boba/gateway/src/components/global/dropdown/styles.ts +++ /dev/null @@ -1,251 +0,0 @@ -import styled, { css } from 'styled-components' -import { Svg } from 'components/global/svg' - -export const DropdownContainer = styled.div` - display: inline-flex; - flex-direction: column; - position: relative; - cursor: pointer; - transition: 0.25s all; - box-sizing: border-box; - ${(props) => - props.theme.name === 'light' && - css` - color: ${props.theme.colors.gray[800]}; - `} - ${(props) => - props.theme.name === 'dark' && - css` - color: ${props.theme.colors.gray[50]}; - `} -` - -export const Header = styled.div<{ error: boolean; isOpen: boolean }>` - box-sizing: border-box; - position: relative; - z-index: 2; - color: inherit; - border-radius: 12px; - min-width: 290px; - padding: 8px 15px; - transition: 0.25s all; - ${(props) => - props.theme.name === 'light' && - css` - color: ${props.theme.colors.gray[600]}; - border: 2px solid ${props.theme.colors.gray[600]}; - background: none; - - ${Arrow}, ${Icon} { - fill: ${props.theme.colors.gray[600]}; - } - - &:hover { - color: ${props.theme.colors.gray[800]}; - border-color: ${props.theme.colors.gray[800]}; - background: none; - ${Arrow},${Icon} { - fill: ${props.theme.colors.gray[800]}; - } - } - `} - ${(props) => - props.theme.name === 'dark' && - css` - color: ${props.theme.colors.gray[100]}; - border: 2px solid ${props.theme.colors.gray[200]}; - background: none; - ${Arrow}, ${Icon} { - fill: ${props.theme.colors.gray[100]}; - } - &:hover { - color: ${props.theme.colors.gray[50]}; - background: none; - border-color: ${props.theme.colors.green[300]}; - ${Arrow}, ${Icon} { - fill: ${props.theme.colors.gray[50]}; - } - } - `} - ${(props) => - props.isOpen && - props.theme.name === 'light' && - css` - color: ${props.theme.colors.gray[800]}; - border-color: ${props.theme.colors.gray[800]}; - background: none; - ${Arrow},${Icon} { - fill: ${props.theme.colors.gray[800]}; - } - `} - ${(props) => - props.isOpen && - props.theme.name === 'dark' && - css` - color: ${props.theme.colors.gray[50]}; - background: none; - border-color: ${props.theme.colors.green[300]}; - ${Arrow}, ${Icon} { - fill: ${props.theme.colors.gray[50]}; - } - `} -` - -export const IconContainer = styled.div` - width: 32px; - height: 32px; - margin-right: 8px; - display: flex; - align-items: center; - justify-content: center; -` -export const OptionsHeader = styled.div` - display: flex; - align-items: center; - font-size: ${(props) => props.theme.text.body2}; - font-weight: bold; - justify-content: flex-start; - text-align: left; - color: inherit; -` - -export const Option = styled.div<{ - isSelected: boolean -}>` - display: flex; - align-items: center; - font-size: ${(props) => props.theme.text.body2}; - font-weight: bold; - justify-content: flex-start; - text-align: left; - color: inherit; - ${(props) => - props.isSelected && - css` - background: ${props.theme.colors.gray[400]}; - `} -` - -export const DefaultIcon = styled.div` - width: 32px; - height: 32px; - border-radius: 50%; - ${(props) => - props.theme.name === 'light' && - css` - background: ${props.theme.colors.gray[600]}; - `} - ${(props) => - props.theme.name === 'dark' && - css` - background: ${props.theme.colors.gray[200]}; - `} -` -export const Icon = styled(Svg)` - margin-right: 8px; - div { - display: flex; - } - svg { - max-width: 32px; - height: auto; - } -` - -export const DropdownBody = styled.div` - transition: 0.25s all; - /* background: inherit; */ - position: absolute; - width: 100%; - left: 0px; - top: 50px; - z-index: 1; - padding: 25px 5px 10px 0px; - box-sizing: border-box; - border: inherit; - border-top: 0px; - border-radius: 0 0 14px 14px; - ${(props) => - props.theme.name === 'light' && - css` - border: 1px solid ${props.theme.colors.gray[400]}; - background: ${props.theme.colors.gray[100]}; - `} - ${(props) => - props.theme.name === 'dark' && - css` - border: 1px solid ${props.theme.colors.gray[300]}; - background: ${props.theme.colors.gray[500]}; - `} -` -export const DropdownContent = styled.div` - min-height: 80px; - padding: 0px 10px 0px 10px; - max-height: 100px; - display: flex; - flex-direction: column; - gap: 5px 0px; - overflow-y: auto; - &::-webkit-scrollbar { - width: 4px; - margin-right: 4px; - } - &::-webkit-scrollbar-track { - background-color: #f1f1f1; - border-radius: 10px; - } - &::-webkit-scrollbar-thumb { - background-color: #888; - border-radius: 10px; - } - - &::-webkit-scrollbar-thumb:hover { - background-color: #555; - } - - & > ${Option} { - transition: 0.25s all; - border-radius: 14px; - padding: 5px; - box-sizing: border-box; - /* background: inherit; */ - ${(props) => - props.theme.name === 'light' && - css` - /* background: ${props.theme.colors.gray[100]}; */ - &:hover { - background: ${props.theme.colors.gray[300]}; - } - `} - ${(props) => - props.theme.name === 'dark' && - css` - border: 1px solid ${props.theme.colors.gray[500]}; - /* background: ${props.theme.colors.gray[500]}; */ - &:hover { - border: 1px solid ${props.theme.colors.gray[400]}; - background: ${props.theme.colors.gray[400]}; - } - `}; - } -` - -export const Arrow = styled(Svg)` - margin-left: auto; - ${(props) => - props.theme.name === 'dark' && - css` - fill: ${props.theme.colors.gray[100]}; - `} - ${(props) => - props.theme.name === 'light' && - css` - fill: ${props.theme.colors.gray[600]}; - `} -` - -export const NoOptions = styled.div` - text-align: center; - width: 100%; - padding-bottom: 15px; -` diff --git a/packages/boba/gateway/src/components/global/heading/__snapshots__/index.test.tsx.snap b/packages/boba/gateway/src/components/global/heading/__snapshots__/index.test.tsx.snap deleted file mode 100644 index fbc0e638c1..0000000000 --- a/packages/boba/gateway/src/components/global/heading/__snapshots__/index.test.tsx.snap +++ /dev/null @@ -1,61 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Heading should match snapshots h1 1`] = ` -<DocumentFragment> - <h1 - class="sc-bgqQcB jYvPsJ" - > - Test Heading - </h1> -</DocumentFragment> -`; - -exports[`Heading should match snapshots h2 1`] = ` -<DocumentFragment> - <h2 - class="sc-bgqQcB hisnER" - > - Test Heading - </h2> -</DocumentFragment> -`; - -exports[`Heading should match snapshots h3 1`] = ` -<DocumentFragment> - <h3 - class="sc-bgqQcB hPrUKN" - > - Test Heading - </h3> -</DocumentFragment> -`; - -exports[`Heading should match snapshots h4 1`] = ` -<DocumentFragment> - <h4 - class="sc-bgqQcB bblAst" - > - Test Heading - </h4> -</DocumentFragment> -`; - -exports[`Heading should match snapshots h5 1`] = ` -<DocumentFragment> - <h5 - class="sc-bgqQcB jfkGcq" - > - Test Heading - </h5> -</DocumentFragment> -`; - -exports[`Heading should match snapshots h6 1`] = ` -<DocumentFragment> - <h6 - class="sc-bgqQcB jDQrGH" - > - Test Heading - </h6> -</DocumentFragment> -`; diff --git a/packages/boba/gateway/src/components/global/heading/index.stories.tsx b/packages/boba/gateway/src/components/global/heading/index.stories.tsx deleted file mode 100644 index a10614b233..0000000000 --- a/packages/boba/gateway/src/components/global/heading/index.stories.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import React from 'react' -import { Meta, StoryFn } from '@storybook/react' - -import { Heading } from '.' -import { HeadingProps } from './types' - -export default { - title: 'Components/Heading', - component: Heading, -} as Meta - -const Template: StoryFn<HeadingProps> = (args: any) => ( - <Heading {...args}>Heading {args.variant}</Heading> -) - -export const Default = Template.bind({}) - -export const H1 = Template.bind({}) -H1.args = { - variant: 'h1', -} - -export const H2 = Template.bind({}) -H2.args = { - variant: 'h2', -} - -export const H3 = Template.bind({}) -H3.args = { - variant: 'h3', -} - -export const H4 = Template.bind({}) -H4.args = { - variant: 'h4', -} - -export const H5 = Template.bind({}) -H5.args = { - variant: 'h5', -} - -export const H6 = Template.bind({}) -H6.args = { - variant: 'h6', -} diff --git a/packages/boba/gateway/src/components/global/heading/index.test.tsx b/packages/boba/gateway/src/components/global/heading/index.test.tsx deleted file mode 100644 index 0de6bd99da..0000000000 --- a/packages/boba/gateway/src/components/global/heading/index.test.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import React from 'react' -import { render } from '@testing-library/react' -import { HeadingProps } from './types' -import CustomThemeProvider from 'themes' -import { Heading } from './' -import { Provider } from 'react-redux' -import configureStore from 'redux-mock-store' - -const mockStore = configureStore() - -const renderHeading = (props: HeadingProps) => { - return render( - <Provider - store={mockStore({ - ui: { - theme: 'dark', - }, - })} - > - <CustomThemeProvider> - <Heading {...props}>Test Heading</Heading> - </CustomThemeProvider> - </Provider> - ) -} - -describe('Heading', () => { - test('should match snapshots h1', () => { - const { asFragment } = renderHeading({ - variant: 'h1', - }) - expect(asFragment()).toMatchSnapshot() - }) - test('should match snapshots h2', () => { - const { asFragment } = renderHeading({ - variant: 'h2', - }) - expect(asFragment()).toMatchSnapshot() - }) - test('should match snapshots h3', () => { - const { asFragment } = renderHeading({ - variant: 'h3', - }) - expect(asFragment()).toMatchSnapshot() - }) - test('should match snapshots h4', () => { - const { asFragment } = renderHeading({ - variant: 'h4', - }) - expect(asFragment()).toMatchSnapshot() - }) - test('should match snapshots h5', () => { - const { asFragment } = renderHeading({ - variant: 'h5', - }) - expect(asFragment()).toMatchSnapshot() - }) - test('should match snapshots h6', () => { - const { asFragment } = renderHeading({ - variant: 'h6', - }) - expect(asFragment()).toMatchSnapshot() - }) -}) diff --git a/packages/boba/gateway/src/components/global/heading/index.tsx b/packages/boba/gateway/src/components/global/heading/index.tsx deleted file mode 100644 index 9b8d2f54da..0000000000 --- a/packages/boba/gateway/src/components/global/heading/index.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React, { FC, ReactNode } from 'react' -import { HeadingProps } from './types' -import { StyledHeading } from './style' - -/** - * - * @param - * variant : can be one of 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' - * - * @returns react component. - */ - -export const Heading: FC<HeadingProps> = ({ children, variant, ...rest }) => { - return ( - <StyledHeading {...rest} as={variant} variant={variant}> - {children} - </StyledHeading> - ) -} diff --git a/packages/boba/gateway/src/components/global/heading/style.ts b/packages/boba/gateway/src/components/global/heading/style.ts deleted file mode 100644 index 8c06e17ce5..0000000000 --- a/packages/boba/gateway/src/components/global/heading/style.ts +++ /dev/null @@ -1,44 +0,0 @@ -import styled, { css } from 'styled-components' -import { HeadingStyleProps, VariantType } from './types' - -const options: Record<string, HeadingStyleProps> = { - h1: { - size: '36px', - lineHeight: '44px', - fontWeight: 700, - }, - h2: { - size: '24px', - lineHeight: '29px', - fontWeight: 700, - }, - h3: { - size: '18px', - lineHeight: '22px', - fontWeight: 700, - }, - h4: { - size: '13px', - lineHeight: '16px', - fontWeight: 700, - }, - h5: { - size: '12px', - lineHeight: '14px', - fontWeight: 700, - }, -} - -export const StyledHeading = styled.h1<{ variant?: VariantType }>` - font-style: normal; - font-weight: 700; - - ${({ variant }) => - variant && - options[variant] && - css` - font-size: ${options[variant].size}; - line-height: ${options[variant].lineHeight}; - font-weight: ${options[variant].fontWeight}; - `} -` diff --git a/packages/boba/gateway/src/components/global/heading/types.ts b/packages/boba/gateway/src/components/global/heading/types.ts deleted file mode 100644 index 5186160025..0000000000 --- a/packages/boba/gateway/src/components/global/heading/types.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ReactNode } from 'react' - -export type VariantType = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' - -export interface HeadingProps { - variant: VariantType - color?: string - children?: ReactNode - className?: string -} - -export interface HeadingStyleProps { - size: string - lineHeight: string - fontWeight: number -} diff --git a/packages/boba/gateway/src/components/global/index.ts b/packages/boba/gateway/src/components/global/index.ts deleted file mode 100644 index 2e6d118e74..0000000000 --- a/packages/boba/gateway/src/components/global/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -export * from './addToMetamask' -export * from './containers' -export * from './IconLabel' -export * from './label' -export * from './table/index' -export * from './text' -export * from './button' -export * from './switch' -export * from './typography' -export * from './heading' -export * from './svg' diff --git a/packages/boba/gateway/src/components/global/inputWithButton/index.tsx b/packages/boba/gateway/src/components/global/inputWithButton/index.tsx deleted file mode 100644 index 9cde774299..0000000000 --- a/packages/boba/gateway/src/components/global/inputWithButton/index.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { InputContainer, Input, InputActionButton } from './styles' -import React, { FC } from 'react' - -interface Props { - placeholder: string - buttonLabel: string - name: string - error?: boolean - disabled?: boolean - type?: string - value?: any - onButtonClick: (e: any) => void - onChange: (e: any) => void -} - -const InputWithButton: FC<Props> = ({ - onButtonClick, - buttonLabel, - name, - type, - value, - error, - disabled, - onChange, - placeholder, -}) => { - return ( - <InputContainer error={error}> - <Input - type={type} - value={value} - disabled={disabled || error} - id={name} - name={name} - placeholder={placeholder} - onChange={onChange} - /> - <InputActionButton disabled={disabled || error} onClick={onButtonClick}> - {buttonLabel} - </InputActionButton> - </InputContainer> - ) -} - -export default InputWithButton diff --git a/packages/boba/gateway/src/components/global/inputWithButton/styles.ts b/packages/boba/gateway/src/components/global/inputWithButton/styles.ts deleted file mode 100644 index f834f9ef54..0000000000 --- a/packages/boba/gateway/src/components/global/inputWithButton/styles.ts +++ /dev/null @@ -1,65 +0,0 @@ -import styled, { css } from 'styled-components' -import { mobile } from 'themes/screens' - -export const InputContainer = styled.div<{ error?: boolean }>` - width: 100%; - min-height: 56px; - display: flex; - padding: 5px 16px; - justify-content: space-around; - align-items: center; - gap: 8px; - border-radius: 12px; - border: 1px solid - ${({ theme, error }) => - error ? theme.colors.red[300] : theme.colors.box.border}; - - ${mobile(css` - padding: 5px; - `)} -` - -export const Input = styled.input` - flex: 1; - padding: 10px; - cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')}; - color: ${({ theme }) => - theme.name === 'light' ? theme.colors.gray[600] : theme.color}; - font-size: 16px; - font-style: normal; - font-weight: 500; - background: transparent; - box-shadow: none; - outline: none; - border: none; - font-family: Roboto; - width: 80%; -` -export const InputActionButton = styled.button<{ disabled?: boolean }>` - cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')}; - display: flex; - padding: 4px 6px; - align-items: flex-start; - gap: 10px; - font-size: 12px; - font-weight: 400; - border-radius: 6px; - ${({ theme: { colors, name } }) => - name === 'light' - ? css` - color: ${colors.gray[600]}; - border: 1px solid ${colors.gray[600]}; - background: ${colors.gray[100]}; - &:hover { - background: transparent; - } - ` - : css` - color: ${colors.green[300]}; - border: 1px solid ${colors.gray[400]}; - background: transparent; - &:hover { - border: 1px solid ${colors.gray[100]}; - } - `} -` diff --git a/packages/boba/gateway/src/components/global/label/index.tsx b/packages/boba/gateway/src/components/global/label/index.tsx deleted file mode 100644 index 1e0e44daf8..0000000000 --- a/packages/boba/gateway/src/components/global/label/index.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import React from 'react' -import styled from 'styled-components' - -const Label = styled.p` - padding: 5px 10px; - margin: 0px; - background: #bae21a26; - border-radius: 6px; - min-width: 65px; - text-align: center; - color: #bae21a; - font-weight: 500; - font-size: 0.9rem; - line-height: 1.15; -` -type AprLabelType = { - children: string -} - -export const AprLabel = ({ children }: AprLabelType): JSX.Element => { - const label = children.toLowerCase() === 'infinity' ? '~' : children + '%' - return <Label>{label}</Label> -} diff --git a/packages/boba/gateway/src/components/global/menu/index.stories.tsx b/packages/boba/gateway/src/components/global/menu/index.stories.tsx deleted file mode 100644 index 67e9cd9229..0000000000 --- a/packages/boba/gateway/src/components/global/menu/index.stories.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react' -import { Meta, StoryFn } from '@storybook/react' - -import Menu from './' -import { MenuProps } from './types' - -export default { - title: 'Components/Menu', - component: Menu, -} as Meta - -const Template: StoryFn<MenuProps> = (args: any) => <Menu {...args} /> - -export const Default = Template.bind({}) -Default.args = { - label: 'Open Menu', - options: [ - { - label: 'Alert 1', - onclick: () => alert(1), - }, - { - label: 'Say Hi!', - onclick: () => alert('Hello World!'), - }, - ], -} diff --git a/packages/boba/gateway/src/components/global/menu/index.tsx b/packages/boba/gateway/src/components/global/menu/index.tsx deleted file mode 100644 index 20a04da4c6..0000000000 --- a/packages/boba/gateway/src/components/global/menu/index.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import MUIMenu from '@mui/material/Menu' -import MUIMenuItem from '@mui/material/MenuItem' -import React, { FC } from 'react' -import { StyleMenuButton } from './styles' -import { MenuProps } from './types' -import { useTheme } from 'styled-components' - -const Menu: FC<MenuProps> = ({ label, name, children, options }) => { - const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null) - const open = Boolean(anchorEl) - const handleClick = (event: React.MouseEvent<HTMLElement>) => { - setAnchorEl(event.currentTarget) - } - const handleClose = () => { - setAnchorEl(null) - } - - const theme: any = useTheme() - - return ( - <> - <StyleMenuButton onClick={handleClick}> - {label || children} - </StyleMenuButton> - <MUIMenu - anchorEl={anchorEl} - id={name} - open={open} - onClose={handleClose} - onClick={handleClose} - anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }} - transformOrigin={{ vertical: 'top', horizontal: 'center' }} - > - {options.map((opt, index) => { - return ( - <MUIMenuItem - sx={{ - margin: '5px', - borderRadius: '10px', - }} - key={index} - onClick={opt.onClick} - > - {opt.component} - </MUIMenuItem> - ) - })} - </MUIMenu> - </> - ) -} - -export default Menu diff --git a/packages/boba/gateway/src/components/global/menu/styles.ts b/packages/boba/gateway/src/components/global/menu/styles.ts deleted file mode 100644 index 10640a71d7..0000000000 --- a/packages/boba/gateway/src/components/global/menu/styles.ts +++ /dev/null @@ -1,13 +0,0 @@ -import styled, { css } from 'styled-components' - -export const StyleMenuButton = styled.div` - display: flex; - justify-content: center; - align-items: center; - padding: 8px 24px; - border-radius: 33px; - cursor: pointer; - gap: 10px; - background: ${({ theme }) => - theme.name === 'light' ? theme.colors.gray[50] : theme.colors.gray[400]}; -` diff --git a/packages/boba/gateway/src/components/global/menu/types.ts b/packages/boba/gateway/src/components/global/menu/types.ts deleted file mode 100644 index 5f64b54c0c..0000000000 --- a/packages/boba/gateway/src/components/global/menu/types.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { ComponentType, ReactElement, ReactNode } from 'react' - -export interface OptionProps { - label?: string - component?: ReactElement<any> - onClick?: (d: any) => void -} - -export interface MenuProps { - name?: string - label?: ReactNode | string - children?: ReactNode - options: Array<OptionProps> -} diff --git a/packages/boba/gateway/src/components/global/modalTypography/index.tsx b/packages/boba/gateway/src/components/global/modalTypography/index.tsx deleted file mode 100644 index 1ebd693ab4..0000000000 --- a/packages/boba/gateway/src/components/global/modalTypography/index.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import styled, { css } from 'styled-components' -import { Typography } from 'components/global/typography' - -export const ModalTypography = styled(Typography)` - font-weight: 400; - line-height: 1.1; - ${(props) => - props.theme.name === 'light' && - css` - color: ${props.theme.colors.gray[700]}; - `} - - ${(props) => - props.theme.name === 'dark' && - css` - color: ${props.theme.colors.gray[100]}; - `} -` diff --git a/packages/boba/gateway/src/components/global/model.ts b/packages/boba/gateway/src/components/global/model.ts deleted file mode 100644 index 6ac3e756da..0000000000 --- a/packages/boba/gateway/src/components/global/model.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { ReactNode } from 'react' - -export type ComponentType = { - children: ReactNode - style?: React.CSSProperties - className?: string -} diff --git a/packages/boba/gateway/src/components/global/placeholderConnect/__snapshots__/index.test.tsx.snap b/packages/boba/gateway/src/components/global/placeholderConnect/__snapshots__/index.test.tsx.snap deleted file mode 100644 index 6eb2f64715..0000000000 --- a/packages/boba/gateway/src/components/global/placeholderConnect/__snapshots__/index.test.tsx.snap +++ /dev/null @@ -1,64 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`PlaceholderConnect PlaceholderConnect is loading 1`] = ` -<DocumentFragment> - <div - class="sc-fFGjHI eWYtNO" - > - loading - <div - class="sc-iVCKna dyLvdT" - > - <div> - <div - data-src="no-data.svg" - src="" - /> - </div> - </div> - <p - class="sc-ewnqHT bIrpBD sc-dicizt jMoYNm" - > - No - </p> - <button - class="sc-bgqQcB hCCYhJ" - label="Connect Wallet" - type="button" - > - Connect Wallet - </button> - </div> -</DocumentFragment> -`; - -exports[`PlaceholderConnect PlaceholderConnect is not loading 1`] = ` -<DocumentFragment> - <div - class="sc-fFGjHI eWYtNO" - > - <div - class="sc-iVCKna dyLvdT" - > - <div> - <div - data-src="no-data.svg" - src="" - /> - </div> - </div> - <p - class="sc-ewnqHT bIrpBD sc-dicizt jMoYNm" - > - No - </p> - <button - class="sc-bgqQcB hCCYhJ" - label="Connect Wallet" - type="button" - > - Connect Wallet - </button> - </div> -</DocumentFragment> -`; diff --git a/packages/boba/gateway/src/components/global/placeholderConnect/index.test.tsx b/packages/boba/gateway/src/components/global/placeholderConnect/index.test.tsx deleted file mode 100644 index 7e64980233..0000000000 --- a/packages/boba/gateway/src/components/global/placeholderConnect/index.test.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import React from 'react' -import { render } from '@testing-library/react' -import { BrowserRouter } from 'react-router-dom' -import CustomThemeProvider from 'themes' -import { Provider } from 'react-redux' -import configureStore from 'redux-mock-store' -import { PlaceholderConnect } from './' -import { PlaceholderConnectInterface } from './types' - -const mockStore = configureStore() -const renderPlaceholderConnect = (props: PlaceholderConnectInterface) => { - return render( - <Provider - store={mockStore({ - ui: { - theme: 'light', - }, - setup: { - netLayer: 'L2', - }, - })} - > - <BrowserRouter> - <CustomThemeProvider> - <PlaceholderConnect {...props} /> - </CustomThemeProvider> - </BrowserRouter> - </Provider> - ) -} - -describe('PlaceholderConnect', () => { - test('PlaceholderConnect is not loading', () => { - const { asFragment } = renderPlaceholderConnect({ - isLoading: false, - }) - expect(asFragment()).toMatchSnapshot() - }) - test('PlaceholderConnect is loading', () => { - const { asFragment } = renderPlaceholderConnect({ - isLoading: true, - preloader: <>{'loading'}</>, - }) - expect(asFragment()).toMatchSnapshot() - }) -}) diff --git a/packages/boba/gateway/src/components/global/placeholderConnect/index.tsx b/packages/boba/gateway/src/components/global/placeholderConnect/index.tsx deleted file mode 100644 index acf493ed5e..0000000000 --- a/packages/boba/gateway/src/components/global/placeholderConnect/index.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import React from 'react' -import { useDispatch, useSelector } from 'react-redux' -import { setConnectBOBA, setConnect } from 'actions/setupAction' -import { useLocation } from 'react-router-dom' -import { selectAccountEnabled, selectLayer } from 'selectors' - -import { Svg } from 'components/global/svg' -import { Button } from 'components/global/button' - -import { PlaceholderContainer, Label } from './styles' -import placehoderIcon from 'assets/images/icons/no-data.svg' -import { LAYER } from 'util/constant' -import { PlaceholderConnectInterface } from './types' -import styled from 'styled-components' - -export const StyledSvg = styled(Svg)` - div { - display: flex; - } - - svg { - fill: ${({ theme }) => - theme.name === 'light' ? theme.colors.gray[600] : theme.colors.gray[100]}; - } -` - -export const PlaceholderConnect = ({ - isLoading = false, - preloader = null, -}: PlaceholderConnectInterface) => { - const layer = useSelector<any>(selectLayer()) - const accountEnabled = useSelector<any>(selectAccountEnabled()) - - const location = useLocation() - const dispatch = useDispatch<any>() - - const handdleConnect = () => { - dispatch(layer === LAYER.L2 ? setConnectBOBA(true) : setConnect(true)) - } - - const DefaultLabel = () => { - return ( - <> - <StyledSvg src={placehoderIcon} /> - <Label variant="body2">No {location?.pathname?.substring(1)}</Label> - </> - ) - } - - return ( - <PlaceholderContainer> - {isLoading && preloader} - {accountEnabled && !isLoading && <DefaultLabel />} - {!accountEnabled && ( - <> - <DefaultLabel /> - <Button small label="Connect Wallet" onClick={handdleConnect} /> - </> - )} - </PlaceholderContainer> - ) -} diff --git a/packages/boba/gateway/src/components/global/placeholderConnect/styles.ts b/packages/boba/gateway/src/components/global/placeholderConnect/styles.ts deleted file mode 100644 index 13466d9086..0000000000 --- a/packages/boba/gateway/src/components/global/placeholderConnect/styles.ts +++ /dev/null @@ -1,20 +0,0 @@ -import styled from 'styled-components' -import { Typography } from 'components/global/typography' - -export const PlaceholderContainer = styled.div` - display: flex; - flex-wrap: wrap; - flex-direction: column; - justify-content: center; - align-items: center; - gap: 5px 0px; - width: 100%; - margin: 25px auto; -` - -export const Label = styled(Typography)` - text-transform: capitalize; - padding-bottom: 15px; - color: ${({ theme }) => - theme.name === 'light' ? theme.colors.gray[600] : theme.colors.gray[100]}; -` diff --git a/packages/boba/gateway/src/components/global/placeholderConnect/types.ts b/packages/boba/gateway/src/components/global/placeholderConnect/types.ts deleted file mode 100644 index 9897a6dee6..0000000000 --- a/packages/boba/gateway/src/components/global/placeholderConnect/types.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface PlaceholderConnectInterface { - preloader?: any - isLoading?: boolean -} diff --git a/packages/boba/gateway/src/components/global/searchInput/index.tsx b/packages/boba/gateway/src/components/global/searchInput/index.tsx deleted file mode 100644 index 7734493fac..0000000000 --- a/packages/boba/gateway/src/components/global/searchInput/index.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import React, { ChangeEventHandler } from 'react' -import { SearchInputContainer, Input } from './styles' -import MagnifyingGlass from 'assets/images/icons/magnifyingGlass.svg' -import { Svg } from 'components/global/svg' - -export interface SearchInputProps { - placeholder: string - value: string - onChange: ChangeEventHandler<HTMLInputElement> -} - -export const SearchInput = (props: SearchInputProps) => { - return ( - <SearchInputContainer> - <Svg src={MagnifyingGlass} /> - <Input // search bar styles - placeholder="Search Here" - value={props.value} - onChange={props.onChange} - /> - </SearchInputContainer> - ) -} diff --git a/packages/boba/gateway/src/components/global/searchInput/styles.ts b/packages/boba/gateway/src/components/global/searchInput/styles.ts deleted file mode 100644 index 1d533cf983..0000000000 --- a/packages/boba/gateway/src/components/global/searchInput/styles.ts +++ /dev/null @@ -1,75 +0,0 @@ -import styled, { css } from 'styled-components' -import { screen } from 'themes/screens' - -export const SearchInputContainer = styled.div` - display: flex; - flex-direction: row; - align-items: center; - font-size: 16px; - border-radius: 12px; - ${(props) => - props.theme.name === 'light' && - css` - background: ${props.theme.colors.gray[50]}; - border: 1px solid ${props.theme.colors.gray[500]}; - color: ${props.theme.colors.gray[600]}; - fill: ${props.theme.colors.gray[600]}; - &:hover { - border: 1px solid ${props.theme.colors.green[800]}; - } - `} - ${(props) => - props.theme.name === 'dark' && - css` - background: ${props.theme.colors.gray[500]}; - border: 1px solid ${props.theme.colors.gray[300]}; - color: ${props.theme.colors.gray[200]}; - fill: ${props.theme.colors.gray[50]}; - &:hover { - border: 1px solid ${props.theme.colors.green[300]}; - } - `} - - div { - padding-left: 5px; - display: flex; - } - svg { - width: 16px; - height: auto; - } - @media ${screen.mobile} { - width: 120px; - height: 30px; - svg { - width: 8px; - height: auto; - } - } -` -// TODO: get rid of duplicates -export const Input = styled.input` - flex: 1; - padding: 10px; - font-size: 16px; - font-style: normal; - font-weight: 500; - background: transparent; - box-shadow: none; - outline: none; - border: none; - ${(props) => - props.theme.name === 'light' && - css` - color: ${props.theme.colors.gray[600]}; - `} - ${(props) => - props.theme.name === 'dark' && - css` - color: ${props.theme.colors.gray[100]}; - `} - @media ${screen.mobile} { - width: 120px; - font-size: 12px; - } -` diff --git a/packages/boba/gateway/src/components/global/svg/__snapshots__/index.test.tsx.snap b/packages/boba/gateway/src/components/global/svg/__snapshots__/index.test.tsx.snap deleted file mode 100644 index 23be688360..0000000000 --- a/packages/boba/gateway/src/components/global/svg/__snapshots__/index.test.tsx.snap +++ /dev/null @@ -1,31 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Svg Render Svg File 1`] = ` -<DocumentFragment> - <div> - <div> - <div - data-src="static/media/src/images/icons/arrowdown.svg" - src="" - /> - </div> - </div> -</DocumentFragment> -`; - -exports[`Svg Render Wrapped Svg file 1`] = ` -<DocumentFragment> - <div - class="sc-bgqQcB dCxkts" - > - <div> - <div> - <div - data-src="static/media/src/images/icons/arrowdown.svg" - src="" - /> - </div> - </div> - </div> -</DocumentFragment> -`; diff --git a/packages/boba/gateway/src/components/global/svg/index.stories.tsx b/packages/boba/gateway/src/components/global/svg/index.stories.tsx deleted file mode 100644 index a98dc48b96..0000000000 --- a/packages/boba/gateway/src/components/global/svg/index.stories.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import React from 'react' -import { Meta, StoryFn } from '@storybook/react' -import Arrow from '../../../images/icons/arrowdown.svg' -import { Svg } from './' -import { SvgTypes } from './types' -import styled from 'styled-components' -export default { - title: 'Components/Svg', - component: Svg, - argTypes: { - fill: { control: 'color' }, - }, -} as Meta - -const ArrowOnHover = styled.div` - svg { - &:hover { - fill: yellow; - } - } -` - -const Template: StoryFn<SvgTypes> = (args: SvgTypes) => ( - <ArrowOnHover> - <Svg {...args} /> - </ArrowOnHover> -) - -export const Default = Template.bind({}) -Default.args = { - src: Arrow, - fill: 'lime', - className: '.yellowOnHover', -} diff --git a/packages/boba/gateway/src/components/global/svg/index.test.tsx b/packages/boba/gateway/src/components/global/svg/index.test.tsx deleted file mode 100644 index 181a221a85..0000000000 --- a/packages/boba/gateway/src/components/global/svg/index.test.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import React from 'react' -import { render } from '@testing-library/react' -import { SvgTypes } from './types' -import CustomThemeProvider from 'themes' -import { Svg } from './' -import { Provider } from 'react-redux' -import configureStore from 'redux-mock-store' -import styled from 'styled-components' -const mockStore = configureStore() -const ArrowOnHover = styled.div` - svg { - &:hover { - fill: red; - } - } -` - -const renderSvg = (props: SvgTypes) => { - return render( - <Provider - store={mockStore({ - ui: { - theme: 'light', - }, - })} - > - <CustomThemeProvider> - <Svg {...props} /> - </CustomThemeProvider> - </Provider> - ) -} - -const renderWrappedSvg = (props: SvgTypes) => { - return render( - <Provider - store={mockStore({ - ui: { - theme: 'light', - }, - })} - > - <CustomThemeProvider> - <ArrowOnHover> - <Svg {...props} /> - </ArrowOnHover> - </CustomThemeProvider> - </Provider> - ) -} - -describe('Svg', () => { - test('Render Svg File', () => { - const { asFragment } = renderSvg({ - fill: '#ccc', - src: 'static/media/src/images/icons/arrowdown.svg', - }) - expect(asFragment()).toMatchSnapshot() - }) - test('Render Wrapped Svg file', () => { - const { asFragment } = renderWrappedSvg({ - fill: 'yellow', - src: 'static/media/src/images/icons/arrowdown.svg', - }) - expect(asFragment()).toMatchSnapshot() - }) -}) diff --git a/packages/boba/gateway/src/components/global/svg/index.tsx b/packages/boba/gateway/src/components/global/svg/index.tsx deleted file mode 100644 index 873c94cae6..0000000000 --- a/packages/boba/gateway/src/components/global/svg/index.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import React from 'react' -import { ReactSVG } from 'react-svg' -import { SvgTypes } from './types' - -export const Svg: React.FC<SvgTypes> = ({ - src, - fill = 'current', - stroke = 'current', - onClick, - className, -}) => ( - // @ts-ignore - <ReactSVG - src={src} - onClick={onClick} - className={className} - beforeInjection={(svg: SVGElement) => { - svg.setAttribute('fill', fill) - svg.setAttribute('stroke', stroke) - }} - /> -) diff --git a/packages/boba/gateway/src/components/global/svg/types.ts b/packages/boba/gateway/src/components/global/svg/types.ts deleted file mode 100644 index 0a23b98e34..0000000000 --- a/packages/boba/gateway/src/components/global/svg/types.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface SvgTypes { - src: string - fill?: string - stroke?: string - onClick?: () => void - className?: string -} diff --git a/packages/boba/gateway/src/components/global/switch/__snapshots__/index.test.tsx.snap b/packages/boba/gateway/src/components/global/switch/__snapshots__/index.test.tsx.snap deleted file mode 100644 index 0f6fbcf767..0000000000 --- a/packages/boba/gateway/src/components/global/switch/__snapshots__/index.test.tsx.snap +++ /dev/null @@ -1,69 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`SwitchButton SwitchButton Default State 1`] = ` -<DocumentFragment> - <label - class="sc-ewnqHT byTfLr" - > - <input - class="sc-gTRrQi fYYSjw" - type="checkbox" - /> - <span - class="sc-bgqQcB fNGpeI" - /> - </label> -</DocumentFragment> -`; - -exports[`SwitchButton SwitchButton is Active 1`] = ` -<DocumentFragment> - <label - class="sc-ewnqHT byTfLr" - > - <input - checked="" - class="sc-gTRrQi fYYSjw" - type="checkbox" - /> - <span - class="sc-bgqQcB fNGpeI" - /> - </label> -</DocumentFragment> -`; - -exports[`SwitchButton SwitchButton is Disable & Active 1`] = ` -<DocumentFragment> - <label - class="sc-ewnqHT byTfLr" - > - <input - checked="" - class="sc-gTRrQi fYYSjw" - disabled="" - type="checkbox" - /> - <span - class="sc-bgqQcB fNGpeI" - /> - </label> -</DocumentFragment> -`; - -exports[`SwitchButton SwitchButton is Disable 1`] = ` -<DocumentFragment> - <label - class="sc-ewnqHT byTfLr" - > - <input - class="sc-gTRrQi fYYSjw" - disabled="" - type="checkbox" - /> - <span - class="sc-bgqQcB fNGpeI" - /> - </label> -</DocumentFragment> -`; diff --git a/packages/boba/gateway/src/components/global/switch/index.stories.tsx b/packages/boba/gateway/src/components/global/switch/index.stories.tsx deleted file mode 100644 index b887ce9903..0000000000 --- a/packages/boba/gateway/src/components/global/switch/index.stories.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import React from 'react' -import { SwitchButton } from './' -import { SwitchButtonTypes } from './types' -import { Meta, StoryFn } from '@storybook/react' - -export default { - title: 'Components/SwitchButton', - component: SwitchButton, -} as Meta - -const Template: StoryFn<SwitchButtonTypes> = (args: any) => ( - <SwitchButton {...args} /> -) - -export const Default = Template.bind({}) -Default.args = { - isDisable: false, - isActive: false, -} - -export const Active = Template.bind({}) -Active.args = { - isDisable: false, - isActive: true, -} - -export const Disabled = Template.bind({}) -Disabled.args = { - isDisable: true, - isActive: false, -} - -export const ActiveDisable = Template.bind({}) -ActiveDisable.args = { - isDisable: true, - isActive: true, -} diff --git a/packages/boba/gateway/src/components/global/switch/index.test.tsx b/packages/boba/gateway/src/components/global/switch/index.test.tsx deleted file mode 100644 index c2288acdf6..0000000000 --- a/packages/boba/gateway/src/components/global/switch/index.test.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import React from 'react' -import { render } from '@testing-library/react' -import { SwitchButtonTypes } from './types' -import CustomThemeProvider from 'themes' -import { SwitchButton } from './' -import { Provider } from 'react-redux' -import configureStore from 'redux-mock-store' - -const mockStore = configureStore() - -const renderSwitch = (props: SwitchButtonTypes) => { - return render( - <Provider - store={mockStore({ - ui: { - theme: 'light', - }, - })} - > - <CustomThemeProvider> - <SwitchButton {...props} /> - </CustomThemeProvider> - </Provider> - ) -} - -describe('SwitchButton', () => { - test('SwitchButton Default State', () => { - const { asFragment } = renderSwitch({ - onStateChange: jest.fn(), - }) - expect(asFragment()).toMatchSnapshot() - }) - test('SwitchButton is Active', () => { - const { asFragment } = renderSwitch({ - isActive: true, - onStateChange: jest.fn(), - }) - expect(asFragment()).toMatchSnapshot() - }) - test('SwitchButton is Disable', () => { - const { asFragment } = renderSwitch({ - isDisable: true, - onStateChange: jest.fn(), - }) - expect(asFragment()).toMatchSnapshot() - }) - test('SwitchButton is Disable & Active', () => { - const { asFragment } = renderSwitch({ - isActive: true, - isDisable: true, - onStateChange: jest.fn(), - }) - expect(asFragment()).toMatchSnapshot() - }) -}) diff --git a/packages/boba/gateway/src/components/global/switch/index.tsx b/packages/boba/gateway/src/components/global/switch/index.tsx deleted file mode 100644 index 567c296c54..0000000000 --- a/packages/boba/gateway/src/components/global/switch/index.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import React, { useState, useEffect } from 'react' -import { Switch, Input, Slider } from './styles' -import { SwitchButtonTypes } from './types' - -export const SwitchButton: React.FC<SwitchButtonTypes> = ({ - isDisable = false, - isActive = false, - onStateChange, -}) => { - const [isChecked, setIsChecked] = useState(isActive) - - useEffect(() => { - setIsChecked(isActive) - }, [isActive]) - - useEffect(() => { - if (onStateChange) { - onStateChange(isChecked) - } - }, [isChecked, onStateChange]) - - const handleSwitchChange = () => { - if (!isDisable) { - setIsChecked(!isChecked) - } - } - - return ( - <Switch> - <Input - type="checkbox" - checked={isChecked} - onChange={handleSwitchChange} - disabled={isDisable} - /> - <Slider as="span" /> - </Switch> - ) -} diff --git a/packages/boba/gateway/src/components/global/switch/styles.ts b/packages/boba/gateway/src/components/global/switch/styles.ts deleted file mode 100644 index 9a0fdfbfe4..0000000000 --- a/packages/boba/gateway/src/components/global/switch/styles.ts +++ /dev/null @@ -1,82 +0,0 @@ -import styled from 'styled-components' - -export const Slider = styled.span` - position: absolute; - cursor: pointer; - top: 0; - left: 0; - right: 0; - bottom: 0; - will-change: background-color; - transform: translateZ(0); - background-color: ${({ theme }) => - theme.name === 'light' ? theme.colors.gray[800] : theme.colors.gray[200]}; - -webkit-transition: 0.4s; - transition: 0.2s; - border-radius: 34px; - border: 0px; - background-clip: content-box; - - &:before { - position: absolute; - border-radius: 17px; - content: ''; - height: 17px; - width: 17px; - left: 2px; - bottom: 2px; - transform: translateZ(0); - background-color: ${({ theme }) => theme.colors.gray[50]}; - -webkit-transition: 0.4s; - transition: 0.4s; - } -` - -export const Input = styled.input` - opacity: 0; - width: 0; - height: 0; - outline: none; - border: none; - - &:checked + ${Slider} { - background-color: ${(props) => props.theme.colors.green[300]}; - border-color: ${(props) => props.theme.colors.green[300]}; - - &:before { - -webkit-transform: translateX(14px); - -ms-transform: translateX(14px); - transform: translateX(14px); - } - } - - &:disabled + ${Slider} { - background-color: ${(props) => props.theme.colors.gray[200]}; - border-color: ${(props) => props.theme.colors.green[200]}; - } - - &:disabled { - & + ${Slider}:before { - background-color: ${(props) => props.theme.colors.gray[500]}; - } - &:checked + ${Slider} { - background-color: ${(props) => props.theme.colors.green[500]}; - border-color: ${(props) => props.theme.colors.green[500]}; - } - } - - &:focus + ${Slider} { - outline: none; - box-shadow: 0 0 1px #2196f3; - } -` - -export const Switch = styled.label` - position: relative; - display: flex; - width: 35px; - height: 21px; - border: 0px; - background-clip: content-box; - border-radius: 34px; -` diff --git a/packages/boba/gateway/src/components/global/switch/types.ts b/packages/boba/gateway/src/components/global/switch/types.ts deleted file mode 100644 index d79aa3a0d8..0000000000 --- a/packages/boba/gateway/src/components/global/switch/types.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface SwitchButtonTypes { - isDisable?: boolean - isActive?: boolean - onStateChange?: (isChecked: boolean) => void -} diff --git a/packages/boba/gateway/src/components/global/tabHeader/index.tsx b/packages/boba/gateway/src/components/global/tabHeader/index.tsx deleted file mode 100644 index e8aea3ae67..0000000000 --- a/packages/boba/gateway/src/components/global/tabHeader/index.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import React from 'react' -import { TabHeaderType } from './types' -import { TabContainer, TabItem } from './styles' -import { Typography } from 'components/global/typography' - -export const TabHeader = ({ options, callback }: TabHeaderType) => { - const [selected, setSelected] = React.useState('All') - - const handleClick = (option: any) => { - callback(option) - setSelected(option.value) - } - - return ( - <TabContainer> - {options.map((option) => { - const { value, label } = option - return ( - <TabItem - key={value} - className={selected === value ? 'active' : ''} - onClick={() => handleClick(option)} - > - <Typography variant="body1">{label}</Typography> - </TabItem> - ) - })} - </TabContainer> - ) -} diff --git a/packages/boba/gateway/src/components/global/tabHeader/styles.tsx b/packages/boba/gateway/src/components/global/tabHeader/styles.tsx deleted file mode 100644 index 9dd10bba88..0000000000 --- a/packages/boba/gateway/src/components/global/tabHeader/styles.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import styled, { css } from 'styled-components' -import { mobile } from 'themes/screens' - -export const TabContainer = styled.div` - display: flex; - ${mobile(css` - width: 110%; - overflow-x: auto; - margin: 10px 0px; - padding: 10px 50px 10px 25px; - `)} -` - -export const TabItem = styled.div` - cursor: pointer; - margin: 0px 8px; - transition: 0.2s all ease; - color: ${(props) => props.theme.colors.gray[100]}; - border-radius: 35px; - padding: 8px 16px; - border: 2px solid transparent; - - ${(props) => - props.theme.name === 'light' && - css` - color: ${props.theme.colors.gray[600]}; - &.active { - background: ${props.theme.colors.gray[50]}; - border-color: ${props.theme.colors.gray[50]}; - color: ${props.theme.colors.gray[800]}; - } - `} - ${(props) => - props.theme.name === 'dark' && - css` - border: 2px solid ${(props) => props.theme.colors.gray[200]}; - &.active { - border-color: ${(props) => props.theme.colors.green[300]}; - color: white; - } - `} - - &:first-of-type { - margin-left: 0px; - } -` diff --git a/packages/boba/gateway/src/components/global/tabHeader/types.ts b/packages/boba/gateway/src/components/global/tabHeader/types.ts deleted file mode 100644 index 9e1b04443b..0000000000 --- a/packages/boba/gateway/src/components/global/tabHeader/types.ts +++ /dev/null @@ -1,9 +0,0 @@ -type itemType = { - value: string - label: string -} - -export interface TabHeaderType { - options: itemType[] - callback: (e: string) => void -} diff --git a/packages/boba/gateway/src/components/global/table/index.tsx b/packages/boba/gateway/src/components/global/table/index.tsx deleted file mode 100644 index e2c2346ced..0000000000 --- a/packages/boba/gateway/src/components/global/table/index.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import React from 'react' - -import { Text } from 'components/global/text' -import Tooltip from 'components/tooltip/Tooltip' -import { HelpOutline } from '@mui/icons-material' -import { TableHeaderContainer, TableRow, TableContentContainer } from './styles' -import { ModalTypography } from '../modalTypography' - -export type TableHeaderOptionType = { - name: string - tooltip?: string - width: number -} - -type TableHeaderType = { - options: TableHeaderOptionType[] - className?: string -} - -export const TableHeader = ({ options, className }: TableHeaderType) => { - return ( - <TableHeaderContainer className={className}> - {options?.map((option) => { - return ( - <TableRow - className={className} - key={option.name} - style={{ maxWidth: option?.width + 'px' }} - > - <ModalTypography variant="body2">{option.name}</ModalTypography> - {option.tooltip && ( - <Tooltip title={option.tooltip}> - <HelpOutline - fontSize="small" - sx={{ ml: '4px', opacity: 0.65 }} - /> - </Tooltip> - )} - </TableRow> - ) - })} - </TableHeaderContainer> - ) -} - -type TableContentOptionType = { - content: any - width: number -} - -type TableContentType = { - options: TableContentOptionType[] - mobileOptions?: number[] - className?: string -} - -export const TableContent = ({ - options, - mobileOptions, - className, -}: TableContentType) => { - const isMobile = false - const currentOptions = - isMobile && mobileOptions ? mobileOptions.map((i) => options[i]) : options - return ( - <TableContentContainer className={className}> - {currentOptions?.map((option, index) => { - return ( - <TableRow - className={className} - key={index} - style={{ maxWidth: option?.width + 'px' }} - > - {option.content} - </TableRow> - ) - })} - </TableContentContainer> - ) -} diff --git a/packages/boba/gateway/src/components/global/table/styles.ts b/packages/boba/gateway/src/components/global/table/styles.ts deleted file mode 100644 index 2e09824fb4..0000000000 --- a/packages/boba/gateway/src/components/global/table/styles.ts +++ /dev/null @@ -1,58 +0,0 @@ -import styled, { css } from 'styled-components' -import { Row } from 'components/global/containers' -import { screen } from 'themes/screens' - -export const TableHeaderContainer = styled(Row)` - padding: 20px; - display: flex; - align-items: center; - justify-content: space-between; - background: ${({ theme: { colors, name } }) => - name === 'light' ? colors.gray[50] : colors.gray[800]}; - - ${({ theme: { name, colors } }) => - name === 'light' - ? css` - border-radius: 12px; - border: 1px solid var(--gray-400-light, #dee0d8); - background: var(--gray-50-light, rgba(253, 255, 248, 0.9)); - /* text box shadow */ - box-shadow: 0px 2px 17px 0px rgba(0, 0, 0, 0.15); - ` - : css` - border-radius: 12px; - border: 1px solid var(--gray-300, #545454); - background: var( - --glass-bg-popup, - linear-gradient( - 129deg, - rgba(48, 48, 48, 0.7) 0%, - rgba(48, 48, 48, 0.7) 46.35%, - rgba(37, 37, 37, 0.7) 94.51% - ) - ); - - /* text box shadow */ - box-shadow: 0px 2px 17px 0px rgba(0, 0, 0, 0.15); - `} - - ${screen.mobile} { - margin-bottom: 5px; - } - ${screen.tablet} { - margin-bottom: 5px; - } -` - -export const TableContentContainer = styled(Row)` - justify-content: space-between; -` - -export const TableRow = styled(Row)` - &:not(:first-of-type) { - margin-left: auto; - } - &:last-of-type { - margin-right: 0px; - } -` diff --git a/packages/boba/gateway/src/components/global/table/themes.ts b/packages/boba/gateway/src/components/global/table/themes.ts deleted file mode 100644 index cda88a56f0..0000000000 --- a/packages/boba/gateway/src/components/global/table/themes.ts +++ /dev/null @@ -1,61 +0,0 @@ -import styled, { css } from 'styled-components' -import { TableHeader, TableContent } from 'components/global/table' -import { Svg } from 'components/global/svg' -import { TableRow } from './styles' -import { mobile, sdesktop } from 'themes/screens' -export const TransactionsTableHeader = styled(TableHeader)` - padding: 10px 24px 10px 24px; - position: sticky; - top: 0; - background: unset; - border-radius: unset; - border: unset; - box-shadow: none; - ${(props) => - props.theme.name === 'light' && - css` - color: ${props.theme.colors.gray[700]}; - border-top: 1px solid ${props.theme.colors.gray[400]}; - `} - ${(props) => - props.theme.name === 'dark' && - css` - color: ${props.theme.colors.gray[100]}; - border-top: 1px solid ${props.theme.colors.gray[300]}; - `} - ${TableRow} { - border: none; - margin: 0px; - padding: 0px; - p { - font-size: 12px; - } - } - ${sdesktop(css` - width: 750px; - `)} - ${mobile(css` - p { - font-size: 10px; - } - `)} -` - -export const TransactionsTableContent = styled(TableContent)` - padding: 16px 24px; - ${TableRow} { - border: none; - } - &:hover { - background: ${(props) => props.theme.colors.gray[300]}; - } - ${(props) => - props.theme.name === 'light' && - css` - fill: ${props.theme.colors.gray[600]}; - `} - ${TableRow} { - margin: 0px; - padding: 0px; - } -` diff --git a/packages/boba/gateway/src/components/global/tabs/index.tsx b/packages/boba/gateway/src/components/global/tabs/index.tsx deleted file mode 100644 index f50c0b85c2..0000000000 --- a/packages/boba/gateway/src/components/global/tabs/index.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React, { useState } from 'react' -import { TabHeader, TabContent, TabIndex } from './styles' -import { TabData } from './types' - -export const TabComponent = ({ tabs }: TabData) => { - const [activeTab, setActiveTab] = useState<number>(0) - - return ( - <> - <TabHeader> - {tabs?.map((tab, index) => ( - <TabIndex - key={index} - onClick={() => setActiveTab(index)} - active={activeTab === index ? true : false} - > - {tab.label} - </TabIndex> - ))} - </TabHeader> - - <TabContent>{tabs[activeTab].content}</TabContent> - </> - ) -} diff --git a/packages/boba/gateway/src/components/global/tabs/styles.ts b/packages/boba/gateway/src/components/global/tabs/styles.ts deleted file mode 100644 index 410323c952..0000000000 --- a/packages/boba/gateway/src/components/global/tabs/styles.ts +++ /dev/null @@ -1,37 +0,0 @@ -import styled from 'styled-components' - -export const TabHeader = styled.div` - display: flex; - justify-content: space-between; - background: ${({ theme }) => - theme.name === 'light' ? theme.colors.gray[100] : theme.colors.gray[600]}; - border-radius: 8px; - padding: 5px; -` - -export const TabContent = styled.div` - display: flex; - flex-direction: column; - padding-top: 32px; - gap: 32px 0px; -` - -export const TabIndex = styled.div<{ - active?: boolean -}>` - width: 100%; - padding: 8px 30px 8px 30px; - text-align: center; - cursor: pointer; - border-radius: 8px; - font-weight: bold; - font-size: ${(props) => props.theme.text.body2}; - background: transparent; - ${(props) => - props.active && - ` - color:${props.theme.colors.gray[600]}; - background:${props.theme.colors.green[300]}; - - `}; -` diff --git a/packages/boba/gateway/src/components/global/tabs/types.ts b/packages/boba/gateway/src/components/global/tabs/types.ts deleted file mode 100644 index 422c4ed1a6..0000000000 --- a/packages/boba/gateway/src/components/global/tabs/types.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { ReactNode } from 'react' - -type tabs = { - label: string - content: ReactNode -} - -export interface TabData { - tabs: tabs[] -} diff --git a/packages/boba/gateway/src/components/global/text/index.tsx b/packages/boba/gateway/src/components/global/text/index.tsx deleted file mode 100644 index dae7d8d6c5..0000000000 --- a/packages/boba/gateway/src/components/global/text/index.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import styled from 'styled-components' - -export const Text = styled.p` - padding: 0px; - margin: 0px; - font-weight: 400; - font-size: 0.9rem; - line-height: 1.25; -` -export const Small = styled.p` - text-transform: uppercase; - padding: 0px; - margin: 0px; - font-weight: 400; - font-size: 0.75rem; - opacity: 0.5; -` diff --git a/packages/boba/gateway/src/components/global/typography/__snapshots__/index.test.tsx.snap b/packages/boba/gateway/src/components/global/typography/__snapshots__/index.test.tsx.snap deleted file mode 100644 index 0d42da2512..0000000000 --- a/packages/boba/gateway/src/components/global/typography/__snapshots__/index.test.tsx.snap +++ /dev/null @@ -1,71 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Typography should match snapshots body1 1`] = ` -<DocumentFragment> - <p - class="sc-bgqQcB ciRvxv" - > - Text goes here - </p> -</DocumentFragment> -`; - -exports[`Typography should match snapshots body2 1`] = ` -<DocumentFragment> - <p - class="sc-bgqQcB eCuYeS" - > - Text goes here - </p> -</DocumentFragment> -`; - -exports[`Typography should match snapshots body3 1`] = ` -<DocumentFragment> - <p - class="sc-bgqQcB eBLtca" - > - Text goes here - </p> -</DocumentFragment> -`; - -exports[`Typography should match snapshots h1 1`] = ` -<DocumentFragment> - <p - class="sc-bgqQcB fLFrDT" - > - Text goes here - </p> -</DocumentFragment> -`; - -exports[`Typography should match snapshots head 1`] = ` -<DocumentFragment> - <p - class="sc-bgqQcB cgRXLP" - > - Text goes here - </p> -</DocumentFragment> -`; - -exports[`Typography should match snapshots subtitle 1`] = ` -<DocumentFragment> - <p - class="sc-bgqQcB bqiEPL" - > - Text goes here - </p> -</DocumentFragment> -`; - -exports[`Typography should match snapshots title 1`] = ` -<DocumentFragment> - <p - class="sc-bgqQcB goFeVO" - > - Text goes here - </p> -</DocumentFragment> -`; diff --git a/packages/boba/gateway/src/components/global/typography/index.stories.tsx b/packages/boba/gateway/src/components/global/typography/index.stories.tsx deleted file mode 100644 index f2cfcf1216..0000000000 --- a/packages/boba/gateway/src/components/global/typography/index.stories.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import React from 'react' -import { Meta, StoryFn } from '@storybook/react' - -import { Typography } from './' -import { TypographyProps } from './types' - -export default { - title: 'Components/Typography', - component: Typography, -} as Meta - -const Template: StoryFn<TypographyProps> = (args: any) => ( - <Typography {...args}> - Heading 1/Roboto/ medium/ 20pt/1.25 rem {args.variant} - </Typography> -) - -export const Default = Template.bind({}) - -export const H1 = Template.bind({}) -H1.args = { - variant: 'h1', -} - -export const Head = Template.bind({}) -Head.args = { - variant: 'head', -} - -export const Title = Template.bind({}) -Title.args = { - variant: 'title', -} - -export const Body1 = Template.bind({}) -Body1.args = { - variant: 'body1', -} - -export const Body2 = Template.bind({}) -Body2.args = { - variant: 'body2', -} - -export const Body3 = Template.bind({}) -Body3.args = { - variant: 'body3', -} - -export const SubTitle = Template.bind({}) -SubTitle.args = { - variant: 'subtitle', -} diff --git a/packages/boba/gateway/src/components/global/typography/index.test.tsx b/packages/boba/gateway/src/components/global/typography/index.test.tsx deleted file mode 100644 index 2f1ae3ff0b..0000000000 --- a/packages/boba/gateway/src/components/global/typography/index.test.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import { render } from '@testing-library/react' -import { TypographyProps } from './types' -import CustomThemeProvider from 'themes' -import { Typography } from '.' -import React from 'react' -import { Provider } from 'react-redux' -import configureStore from 'redux-mock-store' - -const mockStore = configureStore() - -const renderTypography = (props: TypographyProps) => { - return render( - <Provider - store={mockStore({ - ui: { - theme: 'dark', - }, - })} - > - <CustomThemeProvider> - <Typography {...props}>Text goes here</Typography> - </CustomThemeProvider> - </Provider> - ) -} - -describe('Typography', () => { - test('should match snapshots h1', () => { - const { asFragment } = renderTypography({ - variant: 'h1', - }) - expect(asFragment()).toMatchSnapshot() - }) - test('should match snapshots head', () => { - const { asFragment } = renderTypography({ - variant: 'head', - }) - expect(asFragment()).toMatchSnapshot() - }) - test('should match snapshots title', () => { - const { asFragment } = renderTypography({ - variant: 'title', - }) - expect(asFragment()).toMatchSnapshot() - }) - test('should match snapshots body1', () => { - const { asFragment } = renderTypography({ - variant: 'body1', - }) - expect(asFragment()).toMatchSnapshot() - }) - test('should match snapshots body2', () => { - const { asFragment } = renderTypography({ - variant: 'body2', - }) - expect(asFragment()).toMatchSnapshot() - }) - test('should match snapshots body3', () => { - const { asFragment } = renderTypography({ - variant: 'body3', - }) - expect(asFragment()).toMatchSnapshot() - }) - test('should match snapshots subtitle', () => { - const { asFragment } = renderTypography({ - variant: 'subtitle', - }) - expect(asFragment()).toMatchSnapshot() - }) -}) diff --git a/packages/boba/gateway/src/components/global/typography/index.tsx b/packages/boba/gateway/src/components/global/typography/index.tsx deleted file mode 100644 index aff4e4551f..0000000000 --- a/packages/boba/gateway/src/components/global/typography/index.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React, { FC, ReactNode } from 'react' -import { TypographyProps } from './types' -import { StyledText } from './style' - -/** - * - * @param - * component : will have default as <p> since it'll propbably be our most used tag. - * variant : can be one | 'head' | 'title' | 'body1' | 'body2' | 'body3' | 'subtitle' - * - * @returns react component. - */ - -export const Typography: FC<TypographyProps> = ({ - children, - component = 'p', - variant, - ...rest -}) => { - return ( - <StyledText as={component} {...rest} variant={variant}> - {children} - </StyledText> - ) -} diff --git a/packages/boba/gateway/src/components/global/typography/style.ts b/packages/boba/gateway/src/components/global/typography/style.ts deleted file mode 100644 index 47213f1bd7..0000000000 --- a/packages/boba/gateway/src/components/global/typography/style.ts +++ /dev/null @@ -1,53 +0,0 @@ -import styled, { css } from 'styled-components' -import { TypographyStyleProps, VariantType } from './types' - -const options: Record<string, TypographyStyleProps> = { - h1: { - size: '24px', - lineHeight: '1', - fontWeight: 500, - }, - head: { - size: '20px', - lineHeight: '23px', - fontWeight: 500, - }, - title: { - size: '18px', - lineHeight: '21px', - fontWeight: 500, - }, - body1: { - size: '16px', - lineHeight: '19px', - fontWeight: 500, - }, - body2: { - size: '14px', - lineHeight: '16px', - fontWeight: 500, - }, - body3: { - size: '12px', - lineHeight: '14px', - fontWeight: 500, - }, - subtitle: { - size: '12px', - lineHeight: '14px', - fontWeight: 400, - }, -} - -export const StyledText = styled.p<{ variant?: VariantType }>` - font-style: normal; - - ${({ variant }) => - variant && - options[variant] && - css` - font-size: ${options[variant].size}; - line-height: ${options[variant].lineHeight}; - font-weight: ${options[variant].fontWeight}; - `} -` diff --git a/packages/boba/gateway/src/components/global/typography/types.ts b/packages/boba/gateway/src/components/global/typography/types.ts deleted file mode 100644 index 8bc911242d..0000000000 --- a/packages/boba/gateway/src/components/global/typography/types.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { ReactNode } from 'react' - -export type VariantType = - | 'h1' - | 'head' - | 'title' - | 'body1' - | 'body2' - | 'body3' - | 'subtitle' - -export type ComponentType = 'p' | 'span' | 'a' - -export interface TypographyProps { - variant: VariantType - color?: string - error?: boolean - children?: ReactNode - className?: string - component?: ComponentType -} - -export interface TypographyStyleProps { - size: string - lineHeight: string - fontWeight: number -} diff --git a/packages/boba/gateway/src/components/icons/AlertIcon.js b/packages/boba/gateway/src/components/icons/AlertIcon.js deleted file mode 100644 index 55aa4da590..0000000000 --- a/packages/boba/gateway/src/components/icons/AlertIcon.js +++ /dev/null @@ -1,24 +0,0 @@ -import * as React from "react"; -import { useTheme } from "@mui/material/styles"; - -function AlertIcon() { - const theme = useTheme(); - const color = theme.palette.primary.alert; - return ( - <svg width="26" height="24" - viewBox="0 0 26 24" - fill="none" - xmlns="http://www.w3.org/2000/svg"> - <path - fillRule="evenodd" - clipRule="evenodd" - d="M23.3922 17L15.598 3.5C14.4433 1.5 11.5566 1.5 10.4018 3.5L2.60762 17C1.45293 19 2.8963 21.5 5.20571 21.5H20.7942C23.1036 21.5 24.5469 19 23.3922 17ZM17.3301 2.5C15.4056 -0.833337 10.5943 -0.83333 8.6698 2.5L0.875573 16C-1.04893 19.3333 1.35671 23.5 5.20571 23.5H20.7942C24.6432 23.5 27.0488 19.3333 25.1243 16L17.3301 2.5ZM11.8 8.25847C11.8 7.79751 12.1737 7.42382 12.6346 7.42382C13.0956 7.42382 13.4693 7.79751 13.4693 8.25847V13.8969C13.4693 14.3578 13.0956 14.7315 12.6346 14.7315C12.1737 14.7315 11.8 14.3578 11.8 13.8969V8.25847ZM12.6347 16.1914C12.0293 16.1914 11.5385 16.6822 11.5385 17.2876C11.5385 17.8929 12.0293 18.3837 12.6347 18.3837C13.24 18.3837 13.7308 17.8929 13.7308 17.2876C13.7308 16.6822 13.24 16.1914 12.6347 16.1914Z" - fill={color} - fillOpacity="0.7" /> - </svg> - ); -} - -export default AlertIcon; - - diff --git a/packages/boba/gateway/src/components/icons/Boba2Icon.js b/packages/boba/gateway/src/components/icons/Boba2Icon.js deleted file mode 100644 index 364ded009d..0000000000 --- a/packages/boba/gateway/src/components/icons/Boba2Icon.js +++ /dev/null @@ -1,48 +0,0 @@ -import * as React from "react" -import { useTheme } from '@mui/material'; - -function Boba2Icon({ dark = false, selected = true }) { - - const theme = useTheme(); - - const recColor = theme.palette.mode === 'light' ? '#031313' : '#ffffff' - - if (!selected) { - return <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"> - <rect width="30" height="30" rx="8" fill={recColor} fillOpacity="0.15"/> - <path fillRule="evenodd" clipRule="evenodd" d="M8.92819 4C9.26602 4.09607 9.51315 4.28822 9.58244 4.6468C9.63608 4.92885 9.68338 5.21219 9.73066 5.49543L9.73066 5.49545L9.73067 5.49548L9.73067 5.4955L9.73067 5.49552L9.73068 5.49555L9.73068 5.49557L9.73069 5.49559C9.75128 5.61899 9.77188 5.74237 9.79299 5.86561L10.4273 9.56728L11.0982 13.4711C11.1824 13.9617 11.2661 14.4524 11.3497 14.943L11.3498 14.943L11.3498 14.943L11.3498 14.9431L11.3498 14.9431L11.3498 14.9431L11.3498 14.9431L11.3498 14.9432C11.4988 15.8171 11.6479 16.6909 11.7995 17.5642C11.883 18.0449 11.6124 18.462 11.1509 18.5424C10.7143 18.6184 10.3131 18.3269 10.2331 17.8642C9.95457 16.2539 9.67741 14.643 9.40163 13.0313C9.14786 11.5556 8.89379 10.0801 8.63942 8.60476C8.43006 7.38565 8.22129 6.16645 8.01312 4.94714C7.93966 4.51585 8.17966 4.14899 8.6079 4.02572C8.62576 4.01864 8.64297 4.01003 8.65935 4H8.92819ZM11.5733 15.1641C11.5016 14.7473 11.4341 14.3556 11.3651 13.9642C11.3651 13.9557 11.3637 13.947 11.3624 13.9384L11.3618 13.9347C11.305 13.5856 11.305 13.5856 11.6087 13.4082C15.1735 11.3274 19.8478 13.2962 20.8191 17.2878C21.6482 20.6956 19.5499 24.0615 16.1076 24.8458C12.6921 25.6238 9.23789 23.3763 8.59642 19.9531C8.29576 18.3514 8.58779 16.8583 9.44844 15.4731C9.4737 15.4322 9.50091 15.3923 9.53404 15.3438L9.53405 15.3437C9.55122 15.3186 9.56998 15.2911 9.59089 15.2599C9.60756 15.3534 9.62376 15.4429 9.63951 15.53C9.66899 15.6929 9.69686 15.847 9.72322 16.0013C9.75455 16.1847 9.78529 16.3682 9.81602 16.5517L9.81603 16.5518C9.87778 16.9204 9.93953 17.289 10.006 17.6567C10.0236 17.7546 10.006 17.8424 9.98731 17.932C9.49751 20.4228 11.2048 22.9574 13.7201 23.4729C16.3612 24.0136 18.8786 22.399 19.4687 19.7855C20.0456 17.2314 18.3276 14.6028 15.7412 14.0917C14.2379 13.796 12.8863 14.1307 11.6836 15.0728L11.6576 15.0947C11.6354 15.1136 11.6098 15.1354 11.5733 15.1641ZM18.2113 17.3059C18.0554 17.146 17.8426 17.0534 17.6187 17.048C17.3934 17.0473 17.1768 17.1343 17.0151 17.2904C16.8535 17.4465 16.7598 17.6592 16.7539 17.8831C16.7444 18.3487 17.1349 18.7428 17.6068 18.7457C17.8308 18.7434 18.0449 18.6538 18.203 18.4961C18.3611 18.3384 18.4505 18.1253 18.4521 17.9027C18.4536 17.6801 18.3672 17.4657 18.2113 17.3059ZM15.2577 21.5698C15.2567 21.7952 15.1656 22.0111 15.0045 22.1698C14.8433 22.3285 14.6254 22.4171 14.3985 22.4161C14.1717 22.4151 13.9546 22.3245 13.7949 22.1644C13.6352 22.0042 13.5461 21.7876 13.5471 21.5621C13.5471 21.0974 13.9486 20.703 14.4137 20.7134C14.8824 20.7237 15.2619 21.1089 15.2577 21.5698ZM15.5467 15.1215C15.0679 15.12 14.6958 15.4825 14.6926 15.9554C14.6901 16.0662 14.7098 16.1763 14.7506 16.2794C14.7913 16.3825 14.8524 16.4765 14.9301 16.5559C15.0078 16.6353 15.1006 16.6986 15.2031 16.742C15.3057 16.7853 15.4159 16.808 15.5273 16.8086C16.0049 16.8112 16.3865 16.445 16.3915 15.9809C16.3944 15.8689 16.3747 15.7574 16.3335 15.6532C16.2923 15.5489 16.2305 15.4539 16.1518 15.3737C16.073 15.2936 15.9789 15.23 15.8749 15.1867C15.771 15.1434 15.6594 15.1212 15.5467 15.1215ZM17.0656 21.4201C16.9541 21.4218 16.8434 21.4015 16.7399 21.3602C16.6364 21.3189 16.5422 21.2575 16.4629 21.1796C16.3835 21.1017 16.3206 21.0089 16.2777 20.9065C16.2349 20.8042 16.213 20.6944 16.2133 20.5835C16.211 20.4713 16.2312 20.3597 16.2727 20.2553C16.3143 20.1509 16.3763 20.0558 16.4553 19.9755C16.5342 19.8952 16.6285 19.8314 16.7325 19.7877C16.8366 19.744 16.9484 19.7214 17.0613 19.7212C17.1742 19.721 17.2861 19.7431 17.3903 19.7863C17.4946 19.8296 17.5891 19.893 17.6684 19.973C17.7477 20.0529 17.8101 20.1478 17.8521 20.252C17.8941 20.3562 17.9148 20.4677 17.9129 20.58C17.9142 20.6908 17.8931 20.8008 17.851 20.9035C17.8088 21.0061 17.7464 21.0993 17.6675 21.1776C17.5885 21.2559 17.4946 21.3177 17.3912 21.3594C17.2879 21.401 17.1772 21.4217 17.0656 21.4201ZM12.5358 17.726C12.6388 17.7685 12.7494 17.79 12.8609 17.7895C13.3388 17.7927 13.7159 17.4273 13.7186 16.9588C13.7215 16.8467 13.7019 16.7352 13.661 16.6308C13.6201 16.5263 13.5587 16.431 13.4804 16.3503C13.402 16.2697 13.3083 16.2053 13.2047 16.1611C13.1012 16.1168 12.9897 16.0934 12.877 16.0924C12.7642 16.0913 12.6523 16.1126 12.5479 16.1549C12.4435 16.1972 12.3486 16.2598 12.2688 16.3389C12.1889 16.4181 12.1257 16.5123 12.0828 16.6159C12.04 16.7196 12.0183 16.8307 12.019 16.9428C12.0172 17.0537 12.0376 17.1638 12.0791 17.2667C12.1206 17.3697 12.1824 17.4633 12.2608 17.5422C12.3393 17.621 12.4327 17.6835 12.5358 17.726ZM14.1222 18.7596C14.1209 18.6487 14.142 18.5386 14.1843 18.4359C14.2266 18.3333 14.2892 18.2401 14.3685 18.162C14.4478 18.0838 14.542 18.0223 14.6457 17.9812C14.7493 17.94 14.8602 17.9199 14.9718 17.9222C15.0846 17.9213 15.1965 17.9428 15.3008 17.9856C15.4051 18.0283 15.4998 18.0913 15.5792 18.171C15.6587 18.2506 15.7213 18.3452 15.7634 18.4492C15.8055 18.5533 15.8263 18.6647 15.8244 18.7768C15.8198 19.0007 15.7268 19.2137 15.5654 19.3699C15.404 19.5262 15.1873 19.613 14.962 19.6116C14.8505 19.6109 14.7402 19.5883 14.6375 19.545C14.5348 19.5017 14.4417 19.4387 14.3636 19.3595C14.2855 19.2803 14.224 19.1865 14.1826 19.0835C14.1411 18.9806 14.1206 18.8705 14.1222 18.7596ZM11.7262 20.2288C11.8866 20.3857 12.1032 20.4728 12.3282 20.4709C12.4396 20.47 12.5498 20.4473 12.6524 20.4041C12.7549 20.3608 12.848 20.2979 12.9261 20.219C13.0042 20.14 13.066 20.0465 13.1077 19.9439C13.1495 19.8412 13.1706 19.7313 13.1697 19.6206C13.1687 19.5098 13.1459 19.4003 13.1024 19.2984C13.0589 19.1964 12.9956 19.1039 12.9162 19.0263C12.8368 18.9486 12.7427 18.8872 12.6394 18.8457C12.5361 18.8041 12.4256 18.7832 12.3142 18.7841C12.0892 18.786 11.8741 18.8766 11.7163 19.0361C11.5585 19.1955 11.4709 19.4108 11.4728 19.6345C11.4746 19.8582 11.5658 20.0719 11.7262 20.2288Z" fill="#F9F9FA"/> - </svg> - } - - if (theme.palette.mode === 'dark') { - return ( - <svg width="15" height="20" viewBox="0 0 15 20" fill="none" xmlns="http://www.w3.org/2000/svg"> - <path d="M3.62461 8.36303C3.57086 8.05523 3.51759 7.74823 3.46477 7.44206C3.42255 7.19777 3.39114 6.94859 3.336 6.7057C3.30599 6.57308 3.34682 6.50817 3.4564 6.44047C4.52133 5.77722 5.73815 5.39724 6.99127 5.33662C10.1548 5.1747 13.1062 7.1018 14.2153 10.0629C15.8185 14.3377 13.2147 18.9921 8.73097 19.8666C4.78743 20.6344 0.90252 18.0212 0.142778 14.0784C-0.222261 12.1837 0.113814 10.414 1.12413 8.7689C1.17229 8.69038 1.22568 8.61535 1.30141 8.50158C1.34992 8.77344 1.39354 9.00761 1.43368 9.24247C1.54954 9.91671 1.65947 10.5917 1.78266 11.2666C1.83292 11.5458 1.73241 11.8058 1.70763 12.0748C1.5621 13.6617 1.97774 15.0831 3.01004 16.2951C4.2793 17.786 5.92058 18.4526 7.87072 18.2993C10.4557 18.0959 12.6019 16.0397 12.96 13.4635C13.3788 10.4576 11.385 7.65284 8.41269 7.10145C6.70057 6.78387 5.15177 7.18799 3.7813 8.26462C3.74641 8.29323 3.70976 8.32359 3.67277 8.35186C3.65727 8.35767 3.64108 8.36143 3.62461 8.36303Z" fill="#CBFE00"/> - <path d="M4.49311 14.653C4.36213 14.652 4.23264 14.6251 4.11205 14.574C3.99146 14.5228 3.88213 14.4485 3.7903 14.355C3.69848 14.2616 3.62597 14.151 3.57692 14.0296C3.52787 13.9081 3.50324 13.7782 3.50444 13.6472C3.51107 13.0888 3.96509 12.6554 4.5322 12.6617C4.79341 12.6677 5.04197 12.7754 5.22499 12.9619C5.40801 13.1483 5.51104 13.3989 5.51215 13.6601C5.5104 14.2192 5.06021 14.6568 4.49311 14.653Z" fill="#1CD6D1"/> - <path d="M7.94723 15.9371C7.94778 16.1355 7.88943 16.3296 7.77956 16.4948C7.66969 16.66 7.51326 16.7888 7.33009 16.865C7.14692 16.9412 6.94525 16.9613 6.75064 16.9228C6.55603 16.8842 6.37725 16.7888 6.23694 16.6485C6.09664 16.5083 6.00113 16.3295 5.96252 16.1349C5.92391 15.9403 5.94394 15.7387 6.02006 15.5555C6.09619 15.3723 6.22499 15.2158 6.39014 15.1059C6.55528 14.9959 6.74935 14.9375 6.94774 14.938C7.21231 14.9395 7.46563 15.0452 7.65274 15.2322C7.83986 15.4193 7.94567 15.6726 7.94723 15.9371Z" fill="#1CD6D1"/> - <path d="M11.7057 11.6354C11.7021 11.897 11.5954 12.1467 11.4089 12.3301C11.2224 12.5136 10.971 12.6161 10.7093 12.6153C10.5762 12.6171 10.4441 12.5922 10.3206 12.5423C10.1972 12.4924 10.085 12.4184 9.99045 12.3246C9.89594 12.2309 9.82105 12.1192 9.77017 11.9962C9.71929 11.8731 9.69343 11.7412 9.6941 11.6081C9.69478 11.4749 9.72197 11.3433 9.77409 11.2208C9.82621 11.0982 9.90221 10.9873 9.99767 10.8945C10.0931 10.8017 10.2061 10.7289 10.33 10.6802C10.454 10.6315 10.5863 10.608 10.7194 10.6111C11.2785 10.6153 11.7137 11.069 11.7057 11.6354Z" fill="#1CD6D1"/> - <path d="M7.62252 11.6393C7.7535 11.6392 7.88321 11.665 8.00421 11.7151C8.12521 11.7653 8.23512 11.8388 8.32762 11.9316C8.42013 12.0243 8.49341 12.1344 8.54327 12.2555C8.59313 12.3766 8.61859 12.5064 8.61817 12.6374C8.61817 12.9037 8.51239 13.1591 8.3241 13.3474C8.13581 13.5357 7.88043 13.6414 7.61414 13.6414C7.34786 13.6414 7.09248 13.5357 6.90418 13.3474C6.71589 13.1591 6.61011 12.9037 6.61011 12.6374C6.60977 12.505 6.63583 12.3739 6.68676 12.2517C6.7377 12.1295 6.81249 12.0187 6.90676 11.9258C7.00103 11.8328 7.11288 11.7596 7.23578 11.7105C7.35868 11.6613 7.49016 11.6371 7.62252 11.6393Z" fill="#1CD6D1"/> - <path d="M8.27669 10.3299C7.73437 10.3299 7.28348 9.88704 7.2772 9.35274C7.27199 9.15311 7.32647 8.95646 7.43368 8.78797C7.54088 8.61948 7.69593 8.48681 7.87897 8.40696C8.06201 8.3271 8.26472 8.30368 8.46115 8.3397C8.65758 8.37572 8.83879 8.46954 8.98159 8.60914C9.12439 8.74875 9.22228 8.92779 9.26272 9.12336C9.30317 9.31893 9.28434 9.52211 9.20864 9.70691C9.13294 9.89171 9.00381 10.0497 8.83778 10.1607C8.67176 10.2717 8.47639 10.3306 8.27669 10.3299Z" fill="#1CD6D1"/> - <path d="M10.0608 15.7732C9.92992 15.7739 9.80018 15.7485 9.67924 15.6984C9.55831 15.6482 9.44863 15.5744 9.35667 15.4812C9.2647 15.3881 9.1923 15.2774 9.14374 15.1558C9.09518 15.0343 9.07144 14.9042 9.07391 14.7733C9.0765 14.5088 9.18406 14.2561 9.37295 14.0709C9.56183 13.8857 9.81655 13.7831 10.0811 13.7857C10.3456 13.7883 10.5983 13.8959 10.7835 14.0847C10.9687 14.2736 11.0713 14.5283 11.0687 14.7929C11.0656 15.3425 10.621 15.7732 10.0608 15.7732Z" fill="#1CD6D1"/> - <path d="M5.14372 11.4832C5.01284 11.4847 4.88299 11.46 4.76182 11.4105C4.64066 11.361 4.53065 11.2877 4.43829 11.1949C4.34593 11.1022 4.2731 10.9918 4.22409 10.8705C4.17508 10.7491 4.15089 10.6191 4.15295 10.4883C4.15208 10.3574 4.17711 10.2276 4.22659 10.1064C4.27607 9.98515 4.34903 9.87493 4.44128 9.78204C4.53353 9.68914 4.64323 9.61541 4.76409 9.56508C4.88494 9.51475 5.01455 9.48881 5.14547 9.48877C5.27782 9.4889 5.40884 9.5152 5.53099 9.56616C5.65314 9.61711 5.76401 9.69172 5.85722 9.78568C5.95044 9.87964 6.02416 9.9911 6.07413 10.1137C6.12411 10.2362 6.14937 10.3674 6.14845 10.4998C6.14759 10.6305 6.12086 10.7597 6.0698 10.88C6.01874 11.0004 5.94436 11.1094 5.85095 11.2008C5.75755 11.2922 5.64696 11.3643 5.52558 11.4127C5.40419 11.4612 5.27441 11.4852 5.14372 11.4832Z" fill="#1CD6D1"/> - <rect x="0.132324" y="0.321289" width="1.89345" height="12.3559" rx="0.946725" transform="rotate(-9.76137 0.132324 0.321289)" fill="#CBFE00"/> - </svg> - ) - } - - return ( - <svg xmlns="http://www.w3.org/2000/svg" width="15" height="20" viewBox="0 0 15 20" fill="none"> - <path d="M3.62461 8.36303C3.57086 8.05523 3.51759 7.74823 3.46477 7.44206C3.42255 7.19777 3.39114 6.94859 3.336 6.7057C3.30599 6.57308 3.34682 6.50817 3.4564 6.44047C4.52133 5.77722 5.73815 5.39724 6.99127 5.33662C10.1548 5.1747 13.1062 7.1018 14.2153 10.0629C15.8185 14.3377 13.2147 18.9921 8.73097 19.8666C4.78743 20.6344 0.90252 18.0212 0.142778 14.0784C-0.222261 12.1837 0.113814 10.414 1.12413 8.7689C1.17229 8.69038 1.22568 8.61535 1.30141 8.50158C1.34992 8.77344 1.39354 9.00761 1.43368 9.24247C1.54954 9.91671 1.65947 10.5917 1.78266 11.2666C1.83292 11.5458 1.73241 11.8058 1.70763 12.0748C1.5621 13.6617 1.97774 15.0831 3.01004 16.2951C4.2793 17.786 5.92058 18.4526 7.87072 18.2993C10.4557 18.0959 12.6019 16.0397 12.96 13.4635C13.3788 10.4576 11.385 7.65284 8.41269 7.10145C6.70057 6.78387 5.15177 7.18799 3.7813 8.26462C3.74641 8.29323 3.70976 8.32359 3.67277 8.35186C3.65727 8.35767 3.64108 8.36143 3.62461 8.36303Z" fill="#1cd6d1"/> - <path d="M4.49311 14.653C4.36213 14.652 4.23264 14.6251 4.11205 14.574C3.99146 14.5228 3.88213 14.4485 3.7903 14.355C3.69848 14.2616 3.62597 14.151 3.57692 14.0296C3.52787 13.9081 3.50324 13.7782 3.50444 13.6472C3.51107 13.0888 3.96509 12.6554 4.5322 12.6617C4.79341 12.6677 5.04197 12.7754 5.22499 12.9619C5.40801 13.1483 5.51104 13.3989 5.51215 13.6601C5.5104 14.2192 5.06021 14.6568 4.49311 14.653Z" fill="#1cd6d1"/> - <path d="M7.94723 15.9371C7.94778 16.1355 7.88943 16.3296 7.77956 16.4948C7.66969 16.66 7.51326 16.7888 7.33009 16.865C7.14692 16.9412 6.94525 16.9613 6.75064 16.9228C6.55603 16.8842 6.37725 16.7888 6.23694 16.6485C6.09664 16.5083 6.00113 16.3295 5.96252 16.1349C5.92391 15.9403 5.94394 15.7387 6.02006 15.5555C6.09619 15.3723 6.22499 15.2158 6.39014 15.1059C6.55528 14.9959 6.74935 14.9375 6.94774 14.938C7.21231 14.9395 7.46563 15.0452 7.65274 15.2322C7.83986 15.4193 7.94567 15.6726 7.94723 15.9371Z" fill="#1cd6d1"/> - <path d="M11.7057 11.6354C11.7021 11.897 11.5954 12.1467 11.4089 12.3301C11.2224 12.5136 10.971 12.6161 10.7093 12.6153C10.5762 12.6171 10.4441 12.5922 10.3206 12.5423C10.1972 12.4924 10.085 12.4184 9.99045 12.3246C9.89594 12.2309 9.82105 12.1192 9.77017 11.9962C9.71929 11.8731 9.69343 11.7412 9.6941 11.6081C9.69478 11.4749 9.72197 11.3433 9.77409 11.2208C9.82621 11.0982 9.90221 10.9873 9.99767 10.8945C10.0931 10.8017 10.2061 10.7289 10.33 10.6802C10.454 10.6315 10.5863 10.608 10.7194 10.6111C11.2785 10.6153 11.7137 11.069 11.7057 11.6354Z" fill="#1cd6d1"/> - <path d="M7.62252 11.6393C7.7535 11.6392 7.88321 11.665 8.00421 11.7151C8.12521 11.7653 8.23512 11.8388 8.32762 11.9316C8.42013 12.0243 8.49341 12.1344 8.54327 12.2555C8.59313 12.3766 8.61859 12.5064 8.61817 12.6374C8.61817 12.9037 8.51239 13.1591 8.3241 13.3474C8.13581 13.5357 7.88043 13.6414 7.61414 13.6414C7.34786 13.6414 7.09248 13.5357 6.90418 13.3474C6.71589 13.1591 6.61011 12.9037 6.61011 12.6374C6.60977 12.505 6.63583 12.3739 6.68676 12.2517C6.7377 12.1295 6.81249 12.0187 6.90676 11.9258C7.00103 11.8328 7.11288 11.7596 7.23578 11.7105C7.35868 11.6613 7.49016 11.6371 7.62252 11.6393Z" fill="#1cd6d1"/> - <path d="M8.27669 10.3299C7.73437 10.3299 7.28348 9.88704 7.2772 9.35274C7.27199 9.15311 7.32647 8.95646 7.43368 8.78797C7.54088 8.61948 7.69593 8.48681 7.87897 8.40696C8.06201 8.3271 8.26472 8.30368 8.46115 8.3397C8.65758 8.37572 8.83879 8.46954 8.98159 8.60914C9.12439 8.74875 9.22228 8.92779 9.26272 9.12336C9.30317 9.31893 9.28434 9.52211 9.20864 9.70691C9.13294 9.89171 9.00381 10.0497 8.83778 10.1607C8.67176 10.2717 8.47639 10.3306 8.27669 10.3299Z" fill="#1cd6d1"/> - <path d="M10.0608 15.7732C9.92992 15.7739 9.80018 15.7485 9.67924 15.6984C9.55831 15.6482 9.44863 15.5744 9.35667 15.4812C9.2647 15.3881 9.1923 15.2774 9.14374 15.1558C9.09518 15.0343 9.07144 14.9042 9.07391 14.7733C9.0765 14.5088 9.18406 14.2561 9.37295 14.0709C9.56183 13.8857 9.81655 13.7831 10.0811 13.7857C10.3456 13.7883 10.5983 13.8959 10.7835 14.0847C10.9687 14.2736 11.0713 14.5283 11.0687 14.7929C11.0656 15.3425 10.621 15.7732 10.0608 15.7732Z" fill="#1cd6d1"/> - <path d="M5.14372 11.4832C5.01284 11.4847 4.88299 11.46 4.76182 11.4105C4.64066 11.361 4.53065 11.2877 4.43829 11.1949C4.34593 11.1022 4.2731 10.9918 4.22409 10.8705C4.17508 10.7491 4.15089 10.6191 4.15295 10.4883C4.15208 10.3574 4.17711 10.2276 4.22659 10.1064C4.27607 9.98515 4.34903 9.87493 4.44128 9.78204C4.53353 9.68914 4.64323 9.61541 4.76409 9.56508C4.88494 9.51475 5.01455 9.48881 5.14547 9.48877C5.27782 9.4889 5.40884 9.5152 5.53099 9.56616C5.65314 9.61711 5.76401 9.69172 5.85722 9.78568C5.95044 9.87964 6.02416 9.9911 6.07413 10.1137C6.12411 10.2362 6.14937 10.3674 6.14845 10.4998C6.14759 10.6305 6.12086 10.7597 6.0698 10.88C6.01874 11.0004 5.94436 11.1094 5.85095 11.2008C5.75755 11.2922 5.64696 11.3643 5.52558 11.4127C5.40419 11.4612 5.27441 11.4852 5.14372 11.4832Z" fill="#1cd6d1"/> - <rect x="0.132324" y="0.321289" width="1.89345" height="12.3559" rx="0.946725" transform="rotate(-9.76137 0.132324 0.321289)" fill="#1cd6d1"/> - </svg> - ) -} - -export default Boba2Icon diff --git a/packages/boba/gateway/src/components/icons/BobaGlassIcon.js b/packages/boba/gateway/src/components/icons/BobaGlassIcon.js deleted file mode 100644 index c94345f205..0000000000 --- a/packages/boba/gateway/src/components/icons/BobaGlassIcon.js +++ /dev/null @@ -1,18 +0,0 @@ -import * as React from "react" - -function BobaGlassIcon() { - - return ( - <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> - <path d="M23.5065 1.40238L19.5065 2.73571C19.0878 2.87571 18.7518 3.18768 18.6305 3.61168L17.5892 7.27835C17.3865 7.98634 17.7971 8.701 18.5065 8.90367C19.2145 9.105 19.9705 8.69435 20.1731 7.98635L21.0478 4.98636L24.3385 3.90368C25.0372 3.67034 25.4051 2.93568 25.1731 2.23701C24.9398 1.53834 24.2038 1.17038 23.5065 1.40238ZM20.1731 7.98635L18.9225 12.4024C18.7198 13.1117 17.9638 13.5223 17.2558 13.3197C16.5478 13.117 16.1372 12.361 16.3385 11.653L17.3811 7.98635H10.4638C9.03181 7.98635 7.91449 9.18101 8.00515 10.6117L8.96381 25.5277C9.10381 27.6277 10.9052 29.3197 13.0052 29.3197H18.5892C20.6905 29.3197 22.4905 27.6237 22.6305 25.5277L23.8398 10.6117C23.9545 9.17434 22.8225 7.98635 21.3811 7.98635H20.1731ZM15.9225 15.9863C16.6585 15.9863 17.2558 16.5837 17.2558 17.3197C17.2558 18.0557 16.6585 18.653 15.9225 18.653C15.1865 18.653 14.5891 18.0557 14.5891 17.3197C14.5891 16.5837 15.1865 15.9863 15.9225 15.9863ZM14.5891 21.3197C15.3251 21.3197 15.9225 21.917 15.9225 22.653C15.9225 23.389 15.3251 23.9863 14.5891 23.9863C13.8531 23.9863 13.2558 23.389 13.2558 22.653C13.2558 21.917 13.8531 21.3197 14.5891 21.3197Z" fill="url(#paint0_linear_2119_13703)" /> - <defs> - <linearGradient id="paint0_linear_2119_13703" x1="9.91584" y1="2.88786" x2="21.5971" y2="2.53065" gradientUnits="userSpaceOnUse"> - <stop stopColor="#CBFE00" /> - <stop offset="1" stopColor="#1CD6D1" /> - </linearGradient> - </defs> - </svg> - ) -} - -export default BobaGlassIcon diff --git a/packages/boba/gateway/src/components/icons/BobaLogo.js b/packages/boba/gateway/src/components/icons/BobaLogo.js deleted file mode 100644 index 5fa244314f..0000000000 --- a/packages/boba/gateway/src/components/icons/BobaLogo.js +++ /dev/null @@ -1,21 +0,0 @@ -import * as React from "react" -import { useTheme } from '@mui/material'; -import { ReactComponent as LogoBoba2 } from 'assets/images/boba2/logo-boba2.svg'; -import {ReactComponent as LogoBoba2dark} from 'assets/images/boba2/logo-boba2-dark.svg'; - -function BobaLogo() { - - const theme = useTheme(); - - if (theme.palette.mode === 'dark') { - return ( - <LogoBoba2 style={{width: '120px'}}/> - ) - } - - return ( - <LogoBoba2dark style={{width: '120px'}}/> - ) -} - -export default BobaLogo diff --git a/packages/boba/gateway/src/components/icons/CalenderIcon.js b/packages/boba/gateway/src/components/icons/CalenderIcon.js deleted file mode 100644 index 20cd086d81..0000000000 --- a/packages/boba/gateway/src/components/icons/CalenderIcon.js +++ /dev/null @@ -1,18 +0,0 @@ -import * as React from "react"; -import { useTheme } from "@mui/material/styles"; - -function CalenderIcon() { - const theme = useTheme(); - const isLight = theme.palette.mode === 'light'; - const color = theme.palette.common[ isLight ? 'black' : 'white' ]; - return ( - <svg width="25" height="27" - viewBox="0 0 25 27" - fill="none" - xmlns="http://www.w3.org/2000/svg"> - <path d="M6.67472 0.685547C5.93832 0.685547 5.34139 1.28288 5.34139 2.01888C2.39592 2.01888 0.00805664 4.40688 0.00805664 7.35221V20.6855C0.00805664 23.6309 2.39592 26.0189 5.34139 26.0189H18.6747C21.6201 26.0189 24.0081 23.6309 24.0081 20.6855V7.35221C24.0081 4.40688 21.6201 2.01888 18.6747 2.01888C18.6747 1.28288 18.0774 0.685547 17.3414 0.685547C16.6054 0.685547 16.0081 1.28288 16.0081 2.01888H8.00806C8.00806 1.28288 7.41112 0.685547 6.67472 0.685547ZM5.34139 4.68555C5.34139 5.42155 5.93832 6.01888 6.67472 6.01888C7.41112 6.01888 8.00806 5.42155 8.00806 4.68555H16.0081C16.0081 5.42155 16.6054 6.01888 17.3414 6.01888C18.0774 6.01888 18.6747 5.42155 18.6747 4.68555C20.1481 4.68555 21.3414 5.87888 21.3414 7.35221V20.6855C21.3414 22.1589 20.1481 23.3522 18.6747 23.3522H5.34139C3.86859 23.3522 2.67472 22.1589 2.67472 20.6855V7.35221C2.67472 5.87888 3.86859 4.68555 5.34139 4.68555ZM13.3414 10.0189C12.6054 10.0189 12.0081 10.6162 12.0081 11.3522C12.0081 12.0882 12.6054 12.6855 13.3414 12.6855H17.3414C18.0774 12.6855 18.6747 12.0882 18.6747 11.3522C18.6747 10.6162 18.0774 10.0189 17.3414 10.0189H13.3414ZM6.67472 15.3522C5.93832 15.3522 5.34139 15.9495 5.34139 16.6855C5.34139 17.4215 5.93832 18.0189 6.67472 18.0189H10.6747C11.4107 18.0189 12.0081 17.4215 12.0081 16.6855C12.0081 15.9495 11.4107 15.3522 10.6747 15.3522H6.67472Z" fill={color} fillOpacity="0.45" /> - </svg> - ); -} - -export default CalenderIcon; diff --git a/packages/boba/gateway/src/components/icons/DarkIcon.js b/packages/boba/gateway/src/components/icons/DarkIcon.js deleted file mode 100644 index 3192c88be7..0000000000 --- a/packages/boba/gateway/src/components/icons/DarkIcon.js +++ /dev/null @@ -1,32 +0,0 @@ -import * as React from "react"; -import { useTheme } from "@mui/material/styles"; - -function DarkIcon() { - const theme = useTheme(); - const isLight = theme.palette.mode === 'light'; - const color = theme.palette.common[isLight ? 'black' : 'white']; - return ( - <svg - width={32} - height={32} - viewBox="0 0 32 32" - fill="none" - xmlns="http://www.w3.org/2000/svg" - > - <mask id="dark-icon" fill="#fff"> - <path - fillRule="evenodd" - clipRule="evenodd" - d="M12 19a7 7 0 005.897-10.773 8 8 0 11-9.67 9.67A6.967 6.967 0 0012 19z" - /> - </mask> - <path - d="M17.897 8.227l.354-1.458-3.639-.885 2.022 3.152 1.263-.81zm-9.67 9.67l.809-1.263-3.152-2.021.885 3.638 1.457-.354zM17.5 12a5.5 5.5 0 01-5.5 5.5v3a8.5 8.5 0 008.5-8.5h-3zm-.866-2.964c.548.855.866 1.87.866 2.964h3c0-1.685-.492-3.26-1.34-4.583l-2.526 1.62zm.908.648A6.503 6.503 0 0122.5 16h3c0-4.472-3.09-8.22-7.25-9.231l-.708 2.915zM22.5 16a6.5 6.5 0 01-6.5 6.5v3a9.5 9.5 0 009.5-9.5h-3zM16 22.5a6.503 6.503 0 01-6.316-4.957l-2.915.708c1.01 4.16 4.758 7.25 9.23 7.25v-3zm-4-5a5.468 5.468 0 01-2.964-.866l-1.62 2.526A8.467 8.467 0 0012 20.5v-3z" - fill={color} - mask="url(#dark-icon)" - /> - </svg> - ) -} - -export default DarkIcon; diff --git a/packages/boba/gateway/src/components/icons/LightIcon.js b/packages/boba/gateway/src/components/icons/LightIcon.js deleted file mode 100644 index 7d37e2c0de..0000000000 --- a/packages/boba/gateway/src/components/icons/LightIcon.js +++ /dev/null @@ -1,34 +0,0 @@ -import * as React from "react"; -import { useTheme } from "@mui/material/styles"; - -function LightIcon() { - const theme = useTheme(); - const isLight = theme.palette.mode === 'light'; - const color = theme.palette.common[isLight ? 'black' : 'white']; - return ( - <svg - width={32} - height={32} - viewBox="0 0 32 32" - fill="none" - xmlns="http://www.w3.org/2000/svg" - > - <mask id="light-icon" fill="#fff"> - <path d="M21.5 16a5.5 5.5 0 11-11 0 5.5 5.5 0 0111 0z" /> - </mask> - <path - d="M20 16a4 4 0 01-4 4v3a7 7 0 007-7h-3zm-4 4a4 4 0 01-4-4H9a7 7 0 007 7v-3zm-4-4a4 4 0 014-4V9a7 7 0 00-7 7h3zm4-4a4 4 0 014 4h3a7 7 0 00-7-7v3z" - fill={color} - mask="url(#light-icon)" - /> - <path - stroke={color} - strokeWidth={1.5} - strokeLinecap="round" - d="M16.25 5.25v2.5M23.778 8.576l-1.767 1.768M26.75 16.25h-2.5M23.425 23.777l-1.768-1.767M7.75 16.25h-2.5M9.99 10.344L8.222 8.576M16.25 24.25v2.5M10.343 22.01l-1.768 1.768" - /> - </svg> - ) -} - -export default LightIcon; diff --git a/packages/boba/gateway/src/components/icons/SearchIcon.js b/packages/boba/gateway/src/components/icons/SearchIcon.js deleted file mode 100644 index b049e4e1ed..0000000000 --- a/packages/boba/gateway/src/components/icons/SearchIcon.js +++ /dev/null @@ -1,34 +0,0 @@ -import * as React from "react" - -function SearchIcon({ color }) { - return ( - <svg - width="23" - height="23" - viewBox="0 0 23 23" - fill="none" - xmlns="http://www.w3.org/2000/svg" - > - <line - x1="14.2154" - y1="14.3477" - x2="17.1548" - y2="17.287" - stroke={color} - strokeWidth="1.5" - strokeLinecap="round" - /> - <circle - cx="9.50958" - cy="9.83984" - r="5.97429" - transform="rotate(-45 9.50958 9.83984)" - stroke={color} - strokeWidth="1.5" - /> - </svg> - - ) -} - -export default SearchIcon diff --git a/packages/boba/gateway/src/components/icons/chain/L1/AvalancheIcon.js b/packages/boba/gateway/src/components/icons/chain/L1/AvalancheIcon.js deleted file mode 100644 index 50a1f903c7..0000000000 --- a/packages/boba/gateway/src/components/icons/chain/L1/AvalancheIcon.js +++ /dev/null @@ -1,11 +0,0 @@ -import * as React from "react" -import { getCoinImage } from "util/coinImage" - -function AvalancheIcon({ selected = false }) { - - return <> - <img src={getCoinImage('AVAX')} alt="avax icon" /> - </> -} - -export default AvalancheIcon diff --git a/packages/boba/gateway/src/components/icons/chain/L1/BNBIcon.js b/packages/boba/gateway/src/components/icons/chain/L1/BNBIcon.js deleted file mode 100644 index 0667b3d407..0000000000 --- a/packages/boba/gateway/src/components/icons/chain/L1/BNBIcon.js +++ /dev/null @@ -1,10 +0,0 @@ -import * as React from "react" -import { getCoinImage } from "util/coinImage" - -function BnbIcon({ selected = false }) { - return <> - <img src={getCoinImage('BNB')} alt="bnb logo" /> - </> -} - -export default BnbIcon diff --git a/packages/boba/gateway/src/components/icons/chain/L1/EthereumIcon.js b/packages/boba/gateway/src/components/icons/chain/L1/EthereumIcon.js deleted file mode 100644 index 1d13913f3b..0000000000 --- a/packages/boba/gateway/src/components/icons/chain/L1/EthereumIcon.js +++ /dev/null @@ -1,18 +0,0 @@ -import * as React from "react" - -function EthereumIcon({ selected = false }) { - - - return <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> - <rect width="32" height="32" rx="16" fill="#5B78ED" /> - <path d="M16.147 5.33333L16.0039 5.81949V19.9256L16.147 20.0684L22.6948 16.1979L16.147 5.33333Z" fill="#E5E7EB" /> - <path d="M16.148 5.33333L9.6001 16.1979L16.148 20.0684V13.2217V5.33333Z" fill="#F9F9FA" /> - <path d="M16.1471 21.308L16.0664 21.4064V26.4312L16.1471 26.6667L22.6988 17.4396L16.1471 21.308Z" fill="#E5E7EB" /> - <path d="M16.148 26.6667V21.308L9.6001 17.4396L16.148 26.6667Z" fill="#F9F9FA" /> - <path d="M16.147 20.0681L22.6947 16.1977L16.147 13.2214V20.0681Z" fill="#D2D5DA" /> - <path d="M9.6001 16.1977L16.148 20.0681V13.2214L9.6001 16.1977Z" fill="#E5E7EB" /> - </svg> - -} - -export default EthereumIcon diff --git a/packages/boba/gateway/src/components/icons/chain/L2/BobaAvaxIcon.js b/packages/boba/gateway/src/components/icons/chain/L2/BobaAvaxIcon.js deleted file mode 100644 index 74b3fe17ac..0000000000 --- a/packages/boba/gateway/src/components/icons/chain/L2/BobaAvaxIcon.js +++ /dev/null @@ -1,15 +0,0 @@ -import * as React from "react" - -function BobaAvaxIcon({ selected = false }) { - return <svg viewBox="0 0 1202 1202" fill="none" xmlns="http://www.w3.org/2000/svg"> - <circle cx="601" cy="601" r="601" fill="white"/> - <path d="M682 712.3H375.9V265H682C787.1 265 872.2 350.2 872.2 455.2V522C872.2 627.1 787.1 712.3 682 712.3Z" fill="#ACD905"/> - <path d="M760.9 936H375.9V712.3C375.9 588.8 476 488.7 599.5 488.7H760.9C884.4 488.7 984.5 588.8 984.5 712.3C984.5 835.8 884.4 936 760.9 936Z" fill="#AEAFAA"/> - <path d="M872.2 518.4V522.1C872.2 627.2 787.1 712.3 681.9 712.3H375.9C375.9 650.6 401 594.7 441.4 554.2C481.9 513.7 537.8 488.7 599.6 488.7H760.9C801.5 488.7 839.5 499.5 872.2 518.4Z" fill="#5D6E3C"/> - <path d="M376.5 825C500.488 825 601 724.488 601 600.5C601 476.512 500.488 376 376.5 376C252.512 376 152 476.512 152 600.5C152 724.488 252.512 825 376.5 825Z" fill="red"/> - <path fillRule="evenodd" clipRule="evenodd" d="M525.3 695.4C525.1 699.4 523 703.2 519.5 705.4C516.3 707.5 511 707.5 500.4 707.5H428.7C418.1 707.5 412.8 707.5 409.7 705.5C406.3 703.3 404.2 699.5 403.9 695.5C403.7 691.8 406.3 687.3 411.6 678.2L411.7 678L447.5 616.6C452.8 607.5 455.4 603.1 458.7 601.3C462.3 599.5 466.6 599.5 470.2 601.3C473.5 603 476 607.3 481.1 615.8L481.5 616.5L517.4 677.9C517.6 678.2 517.7 678.5 517.9 678.8C522.9 687.4 525.4 691.8 525.3 695.4Z" fill="#FFFFFF"/> - <path fillRule="evenodd" clipRule="evenodd" d="M428.3 542.8C427 548.1 424.2 553.2 418.4 563.2L353.5 677.9L353.3 678.2C347.6 688.2 344.7 693.3 340.7 697.1C336.3 701.3 331.1 704.3 325.3 706C320 707.5 314.2 707.5 302.4 707.5H252.4C241.9 707.5 236.7 707.5 233.5 705.5C230.1 703.3 228 699.6 227.7 695.6C227.5 691.9 230.1 687.3 235.3 678.2L358.9 460.5C364.2 451.3 366.8 446.6 370.2 444.9C373.8 443.1 378.1 443.1 381.7 444.9C385.1 446.6 387.7 451.2 393 460.5L418.4 504.8L418.5 505C424.2 514.9 427.1 519.9 428.3 525.2C429.7 531 429.7 537.1 428.3 542.8Z" fill="#FFFFFF"/> - </svg> -} - -export default BobaAvaxIcon diff --git a/packages/boba/gateway/src/components/icons/chain/L2/BobaBNBIcon.js b/packages/boba/gateway/src/components/icons/chain/L2/BobaBNBIcon.js deleted file mode 100644 index 466387d258..0000000000 --- a/packages/boba/gateway/src/components/icons/chain/L2/BobaBNBIcon.js +++ /dev/null @@ -1,17 +0,0 @@ -import * as React from "react" - -function BobaBnbIcon({ selected = false }) { - - - return <svg viewBox="0 0 1202 1202" fill="none" xmlns="http://www.w3.org/2000/svg"> - <circle cx="601" cy="601" r="601" fill="white"/> - <path d="M682 712.3H375.9V265H682C787.1 265 872.2 350.2 872.2 455.2V522C872.2 627.1 787.1 712.3 682 712.3Z" fill="#ACD905"/> - <path d="M760.9 936H375.9V712.3C375.9 588.8 476 488.7 599.5 488.7H760.9C884.4 488.7 984.5 588.8 984.5 712.3C984.5 835.8 884.4 936 760.9 936Z" fill="#AEAFAA"/> - <path d="M872.2 518.4V522.1C872.2 627.2 787.1 712.3 681.9 712.3H375.9C375.9 650.6 401 594.7 441.4 554.2C481.9 513.7 537.8 488.7 599.6 488.7H760.9C801.5 488.7 839.5 499.5 872.2 518.4Z" fill="#5D6E3C"/> - <path d="M376.5 825C500.488 825 601 724.488 601 600.5C601 476.512 500.488 376 376.5 376C252.512 376 152 476.512 152 600.5C152 724.488 252.512 825 376.5 825Z" fill="black"/> - <path d="M412.4 723.3V765L376.1 786.4L340.8 765V723.3L376.1 744.7L412.4 723.3ZM217.9 579.1L253.2 600.5V672L314 708.3V750L217.9 693.3V579.1ZM534.1 579.1V693.5L437 750.2V708.5L497.8 672.2V600.7L534.1 579.1ZM436.8 522.5L473.1 543.9V585.5L412.3 621.8V694.3L377 715.7L341.9 694.3V621.6L278.9 585.3V543.6L315.2 522.2L376 558.5L436.8 522.5ZM278.9 615.3L314.2 636.7V678.4L278.9 657V615.3ZM473.2 615.3V657L437.9 678.4V636.7L473.2 615.3ZM253.2 486.1L289.5 507.5L253.2 528.9V570.5L217.9 549.1V507.5L253.2 486.1ZM498.8 486.1L535.1 507.5V549.2L498.8 570.5V528.8L463.5 507.5L498.8 486.1ZM376 486.1L412.3 507.5L376 528.9L340.7 507.5L376 486.1ZM376 414.7L473.1 471.4L437.8 492.8L377 456.5L315 492.8L279.7 471.4L376 414.7Z" fill="#F1B82F"/> - </svg> - -} - -export default BobaBnbIcon diff --git a/packages/boba/gateway/src/components/icons/chain/L2/BobaIcon.js b/packages/boba/gateway/src/components/icons/chain/L2/BobaIcon.js deleted file mode 100644 index 4eef997882..0000000000 --- a/packages/boba/gateway/src/components/icons/chain/L2/BobaIcon.js +++ /dev/null @@ -1,22 +0,0 @@ -import * as React from "react" - -function BobaIcon({ selected = false }) { - - return <svg viewBox="0 0 1202 1202" fill="none" xmlns="http://www.w3.org/2000/svg"> - <circle cx="601" cy="601" r="601" fill="white"/> - <path d="M682 711.3H375.9V264H682C787.1 264 872.2 349.2 872.2 454.2V521C872.2 626.1 787.1 711.3 682 711.3Z" fill="#ACD905"/> - <path d="M760.9 935H375.9V711.3C375.9 587.8 476 487.7 599.5 487.7H760.9C884.4 487.7 984.5 587.8 984.5 711.3C984.5 834.8 884.4 935 760.9 935Z" fill="#AEAFAA"/> - <path d="M872.2 517.4V521.1C872.2 626.2 787.1 711.3 681.9 711.3H375.9C375.9 649.6 401 593.7 441.4 553.2C481.9 512.7 537.8 487.7 599.6 487.7H760.9C801.5 487.7 839.5 498.5 872.2 517.4Z" fill="#5D6E3C"/> - <path d="M376.5 824C500.488 824 601 723.488 601 599.5C601 475.512 500.488 375 376.5 375C252.512 375 152 475.512 152 599.5C152 723.488 252.512 824 376.5 824Z" fill="#627EEA"/> - <path d="M376.5 403.2L373.9 412.2V671.7L376.5 674.4L497 603.1L376.5 403.2Z" fill="#C5C5C5"/> - <path d="M376.5 403.2L256 603.1L376.5 674.4V548.4V403.2Z" fill="#E7E7E7"/> - <path d="M376.5 697.2L375 699V791.4L376.5 795.8L497.1 626L376.5 697.2Z" fill="#C5C5C5"/> - <path d="M376.5 795.8V697.2L256 626L376.5 795.8Z" fill="#E7E7E7"/> - <path d="M376.5 674.4L497 603.1L376.5 548.4V674.4Z" fill="#909090"/> - <path d="M256 603.1L376.5 674.4V548.4L256 603.1Z" fill="#AEAEAE"/> - </svg> - - -} - -export default BobaIcon diff --git a/packages/boba/gateway/src/components/index.ts b/packages/boba/gateway/src/components/index.ts deleted file mode 100644 index 9e347c0a5d..0000000000 --- a/packages/boba/gateway/src/components/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -export { default as Copy } from 'components/copy/Copy' -export { default as Disconnect } from 'components/disconnect/Disconnect' -export { default as CounterButton } from 'components/counterButton/CounterButton' -export { default as Pager } from 'components/pager/Pager' -export { default as PageTitle } from 'components/pageTitle/PageTitle' - -export * from 'components/availableBridges' -export * from 'components/mainMenu/' diff --git a/packages/boba/gateway/src/components/input/Input.js b/packages/boba/gateway/src/components/input/Input.js deleted file mode 100644 index 74bd62a80f..0000000000 --- a/packages/boba/gateway/src/components/input/Input.js +++ /dev/null @@ -1,252 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React from 'react' -import BN from 'bignumber.js' -import Select from 'react-select' -import * as S from './Input.styles' - -import { selectCustomStyles } from './Select.styles' - -import Button from 'components/button/Button' - -import { useTheme, Box, Typography } from '@mui/material' - -import { getCoinImage } from 'util/coinImage' - -export const Input = ({ - placeholder, - label, - type = 'text', - disabled, - disabledExitAll, - icon, - unit, - value, - onChange, - onSelect, - sx, - paste, - maxValue, - fullWidth, - size, - variant, - newStyle = false, - allowUseAll = false, - onUseMax, - loading, - maxLength, - selectOptions, - defaultSelect, - selectValue, - style, - isBridge, - openTokenPicker, - textarea = false, - maxRows = 10, -}) => { - - const handlePaste = async () => { - try { - const text = await navigator.clipboard.readText() - if (text) { - onChange({ target: { value: text } }) - } - } catch (err) { - // navigator clipboard api not supported in client browser - } - } - - const handleClickMax = () => { - onUseMax() - } - - const underZero = new BN(value).lt(new BN(0)) - const overMax = new BN(value).gt(new BN(maxValue)) - const theme = useTheme() - - const tokenImageElement = (unit) => { - return ( - <> - <Typography variant="body2" component="div">{unit}</Typography> - <img src={getCoinImage(unit)} alt="logo" width={50} height={50} /> - </> - ) - } - - const options = selectOptions ? selectOptions.reduce((acc, cur) => { - acc.push({ value: cur, label: tokenImageElement(cur) }) - return acc - }, []): null - - if (textarea) { - return ( - <div style={{width: '100%'}}> - <S.Wrapper newstyle={newStyle ? 1 : 0} style={style}> - <S.TextareaAutosizeWrapper - maxRows={maxRows} - placeholder={placeholder} - value={value} - onChange={onChange} - /> - - {paste && ( - <Box - onClick={handlePaste} - sx={{ - color: theme.palette.secondary.main, - opacity: 0.9, - cursor: 'pointer', - position: 'absolute', - right: '70px', - fontSize: '14px', - zIndex: '100' - }} - > - PASTE - </Box> - )} - </S.Wrapper> - </div> - ) - } - - return ( - <div style={{width: '100%'}}> - <S.Wrapper newstyle={newStyle ? 1 : 0} style={style}> - {!unit && ( - <S.InputWrapperFull> - {label && ( - <Typography variant="body2" component="div" sx={{opacity: 0.7, mb: 1}}> - {label} - </Typography> - )} - <S.TextFieldTag - placeholder={placeholder} - type={type} - value={value} - onChange={onChange} - disabled={disabled} - fullWidth={fullWidth} - size={size} - variant={variant} - error={underZero || overMax} - sx={sx} - newstyle={newStyle ? 1 : 0} - /> - </S.InputWrapperFull> - )} - - {unit && ( - <> - {selectOptions ? - <Select - options={options} - styles={selectCustomStyles(newStyle, theme)} - isSearchable={false} - onChange={onSelect} - value={selectValue ? { value: selectValue, label: tokenImageElement(selectValue) } : null} - />: - <S.UnitContent> - <Box - sx={{ - cursor: 'pointer' - }} - onClick={() => { - if (isBridge) { - openTokenPicker() - } - }}> - {tokenImageElement(unit)} - </Box> - </S.UnitContent> - } - <S.InputWrapper> - {label && ( - <Typography variant="body2" component="div" sx={{opacity: 0.7, mb: 1}}> - {label} - </Typography> - )} - <S.TextFieldTag - placeholder={placeholder} - type={type} - value={value} - onChange={onChange} - disabled={disabled} - fullWidth={fullWidth} - size={size} - variant={variant} - error={underZero || overMax} - sx={sx} - newstyle={newStyle ? 1 : 0} - /> - </S.InputWrapper> - </> - ) - } - - {unit && ( - <S.ActionsWrapper> - <Typography variant="body2" component="p" sx={{opacity: 0.7, textAlign: "end", mb: 2}}> - Max Amount<br/>{Number(maxValue).toFixed(5)} - </Typography> - {allowUseAll && ( - <Box> - <Button - onClick={handleClickMax} - color='primary' - variant='contained' - size="small" - > - Use All - </Button> - </Box> - )} - </S.ActionsWrapper> - )} - - {paste && ( - <Box - onClick={handlePaste} - sx={{ - color: theme.palette.secondary.main, - opacity: 0.9, - cursor: 'pointer', - position: 'absolute', - right: '70px', - fontSize: '14px', - zIndex: '100' - }} - > - PASTE - </Box> - )} - </S.Wrapper> - {value !== '' && underZero ? - <Typography variant="body2" sx={{mt: 1}}> - Value too small: the value must be greater than 0 - </Typography> - : null - } - {value !== '' && overMax ? - <Typography variant="body2" sx={{mt: 1}}> - Value too large: the value must be smaller than {Number(maxValue).toFixed(5)} - </Typography> - : null} - </div> - ) -} - -export default React.memo(Input) diff --git a/packages/boba/gateway/src/components/input/Input.styles.js b/packages/boba/gateway/src/components/input/Input.styles.js deleted file mode 100644 index cb77eef500..0000000000 --- a/packages/boba/gateway/src/components/input/Input.styles.js +++ /dev/null @@ -1,86 +0,0 @@ -import { styled } from '@mui/material/styles' -import { Box, TextField, TextareaAutosize } from '@mui/material' - -export const Wrapper = styled(Box)` - display: flex; - align-items: center; - justify-content: space-between; - background-color: ${(props) => props.newstyle ? props.theme.palette.background.input : 'transparent' }; - border-radius: 20px; - padding: ${(props) => props.newstyle ? '10px 20px' : '0' }; - border: ${(props) => props.newstyle ? '1px solid rgba(255, 255, 255, 0.06)' : 'none' }; -`; - -export const TextFieldTag = styled(TextField)(({ ...props }) => ({ - "input::-webkit-outer-spin-button, input::-webkit-inner-spin-button": { - "WebkitAppearance": "none", - "margin": 0, - }, - "input[type=number]": { - "MozAppearance": "textfield" - }, - '& .MuiInputBase-input': { - fontSize: '16px', - }, -})); - -export const UnitContent = styled(Box)` - display: flex; - justify-content: flex-start; - border-right: ${(props) => props.theme.palette.mode === 'light' ? '1px solid rgba(0, 0, 0, 0.2)' : '1px solid rgba(255,255,255,0.2)'}; - margin-right: 30px; - flex: 2; - div { - display: flex; - flex-direction: column; - align-items: center; - } -`; - -export const InputWrapper = styled(Box)(({ theme }) => ({ - display: 'flex', - flexDirection: 'column', - flex: 6, - [theme.breakpoints.down('md')]: { - flex: 4, - }, -})); - -export const InputWrapperFull = styled(Box)(({ theme }) => ({ - display: 'flex', - flexDirection: 'column', - flex: 1, -})) - -export const ActionsWrapper = styled(Box)` - display: flex; - flex-direction: column; - align-items: center; - flex: 3; - margin-left: 10px; -`; - -export const TextareaAutosizeWrapper = styled(TextareaAutosize)(({ theme }) => ({ - width: '100%', - backgroundColor: 'transparent', - font: 'inherit !important', - fontSize: '0.9em !important', - padding: '17.5px 15px', - borderRadius: '4px', - borderColor: theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255,255,255,0.23)', - color: theme.palette.mode === 'light' ? 'black' : 'white', - '&::placeholder': { - color: theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.35)' : 'rgba(255,255,255,0.45)', - }, - '&:hover': { - backgroundColor: theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.05)' : 'rgba(255,255,255,0.05)', - borderColor: theme.palette.mode === 'light' ? 'black' : 'white', - }, - '&:focus': { - padding: '16.5px 14px', - borderColor: '#478ddf', - borderWidth: '2px', - outline: '0px !important', - outlineOffset: '0px !important', - }, -})); diff --git a/packages/boba/gateway/src/components/input/Select.styles.js b/packages/boba/gateway/src/components/input/Select.styles.js deleted file mode 100644 index c4e460c636..0000000000 --- a/packages/boba/gateway/src/components/input/Select.styles.js +++ /dev/null @@ -1,72 +0,0 @@ -export const selectCustomStyles = (newStyle, theme) => { - return { - control: (provided, state) => ({ - ...provided, - borderWidth: '0px', - boxShadow: 'none', - backgroundColor: 'transparent', - // 'box-shadow': newStyle ? '-13px 15px 19px rgba(0, 0, 0, 0.15), inset 53px 36px 120px rgba(255, 255, 255, 0.06)' : 'none' - }), - indicatorSeparator: (provided, state) => ({ - ...provided, - width: '0px' - }), - indicatorsContainer: (provided, state) => ({ - ...provided, - marginRight: '30px', - borderRight: theme.palette.mode === 'light' ? '1px solid rgba(0, 0, 0, 0.2)' : '1px solid rgba(255,255,255,0.2)' - }), - valueContainer: (provided, state) => ({ - ...provided, - padding: '0px', - }), - singleValue: (provided, state) => ({ - ...provided, - color: 'auto', - display: 'flex', - flexDirection: 'column', - alignItems: 'center', - }), - menu: (provided, state) => ({ - ...provided, - color: 'auto', - backgroundColor: newStyle ? theme.palette.background.input : 'transparent', - boxShadow: newStyle ? '-13px 15px 19px rgba(0, 0, 0, 0.15), inset 53px 36px 120px rgba(255, 255, 255, 0.06)' : 'none', - '&:hover': { - backgroundColor: 'none', - }, - }), - menuList: (provided, state) => ({ - ...provided, - color: 'auto', - backgroundColor: newStyle ? theme.palette.background.input : 'transparent', - boxShadow: newStyle ? '-13px 15px 19px rgba(0, 0, 0, 0.15), inset 53px 36px 120px rgba(255, 255, 255, 0.06)' : 'none', - '&:hover': { - backgroundColor: 'none', - }, - "::-webkit-scrollbar": { - width: "0px", - height: "0px", - }, - "::-webkit-scrollbar-track": { - background: "#f1f1f1" - }, - "::-webkit-scrollbar-thumb": { - background: "#888" - }, - "::-webkit-scrollbar-thumb:hover": { - background: "#555" - }, - borderRadius: '10px' - }), - option: (provided, state) => ({ - ...provided, - color: 'auto', - backgroundColor: newStyle ? theme.palette.background.input : 'transparent', - boxShadow: newStyle ? '-13px 15px 19px rgba(0, 0, 0, 0.15), inset 53px 36px 120px rgba(255, 255, 255, 0.06)' : 'none', - '&:hover': { - backgroundColor: 'none', - } - }) - } -} diff --git a/packages/boba/gateway/src/components/layout/Footer/FooterLinks/constant.ts b/packages/boba/gateway/src/components/layout/Footer/FooterLinks/constant.ts deleted file mode 100644 index dfc0afc826..0000000000 --- a/packages/boba/gateway/src/components/layout/Footer/FooterLinks/constant.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { ROUTES_PATH } from 'util/constant' - -interface LinkProps { - label: string - path: string - isNav?: boolean -} - -export const FOOTERLINKS: Array<LinkProps> = [ - { - label: 'FAQs', - path: 'https://docs.boba.network/faq', - }, - { - label: 'Dev Tools', - path: ROUTES_PATH.DEV_TOOLS, - isNav: true, - }, - { - label: 'Bobascope', - path: ROUTES_PATH.BOBASCOPE, - isNav: true, - }, -] - -export const FOOTERLINKS_RIGHT: Array<LinkProps> = [ - { - label: 'Boba Network Website', - path: 'https://boba.network', - }, - { - label: 'Terms of Use', - path: 'https://boba.network/terms-of-use/', - }, -] diff --git a/packages/boba/gateway/src/components/layout/Footer/FooterLinks/index.tsx b/packages/boba/gateway/src/components/layout/Footer/FooterLinks/index.tsx deleted file mode 100644 index 664cd76a95..0000000000 --- a/packages/boba/gateway/src/components/layout/Footer/FooterLinks/index.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import React, { useEffect } from 'react' -import { FOOTERLINKS, FOOTERLINKS_RIGHT } from './constant' -import { useSelector, useDispatch } from 'react-redux' -import { LinkContainer, StyledLink, StyledNavLink } from './style' -import { selectBlockExplorerLinks, selectBaseEnabled } from 'selectors' -import { fetchBlockExplorerUrls } from 'actions/networkAction' - -const FooterLinks = () => { - const dispatch = useDispatch<any>() - const links = useSelector(selectBlockExplorerLinks()) - const baseEnabled = useSelector(selectBaseEnabled()) - - useEffect(() => { - if (!!baseEnabled) { - dispatch(fetchBlockExplorerUrls()) - } - }, [baseEnabled]) - - return ( - <LinkContainer> - <div> - {FOOTERLINKS.map((link) => { - if (link.isNav) { - return ( - <StyledNavLink to={link.path} key={link.label}> - {link.label} - </StyledNavLink> - ) - } - return ( - <StyledLink key={link.label} href={link.path} target="_blank"> - {link.label} - </StyledLink> - ) - })} - {links && links.length > 0 ? ( - <> - <StyledLink key={'Blockexplorer'} href={links[0]} target="_blank"> - Blockexplorer - </StyledLink> - <StyledLink - key={'BobaBlockexplorer'} - href={links[1]} - target="_blank" - > - Boba Blockexplorer - </StyledLink> - </> - ) : null} - </div> - <div> - {FOOTERLINKS_RIGHT.map((link) => ( - <StyledLink target="_blank" key={link.label} href={link.path}> - {link.label} - </StyledLink> - ))} - </div> - </LinkContainer> - ) -} - -export default FooterLinks diff --git a/packages/boba/gateway/src/components/layout/Footer/FooterLinks/style.ts b/packages/boba/gateway/src/components/layout/Footer/FooterLinks/style.ts deleted file mode 100644 index 111939e069..0000000000 --- a/packages/boba/gateway/src/components/layout/Footer/FooterLinks/style.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { NavLink } from 'react-router-dom' -import styled, { css } from 'styled-components' -import { mobile } from 'themes/screens' - -export const LinkContainer = styled.div` - display: flex; - justify-content: space-between; - margin: 25px 0; - div { - display: flex; - gap: 24px; - } - - ${mobile(css` - width: 100%; - flex-direction: column; - align-items: center; - gap: 24px; - `)} -` - -export const StyledLink = styled.a` - font-size: 14px; - line-height: 16px; - font-weight: 500; - cursor: pointer; - text-decoration: none; - color: ${({ theme }) => - theme.name === 'light' - ? theme.colors['gray'][600] - : theme.colors['gray'][200]}; - &:hover, - &.active { - color: ${({ theme }) => - theme.name === 'light' - ? theme.colors['gray'][800] - : theme.colors['gray'][100]}; - } -` -export const StyledNavLink = styled(NavLink)` - font-size: 14px; - line-height: 16px; - font-weight: 500; - cursor: pointer; - text-decoration: none; - color: ${({ theme }) => - theme.name === 'light' - ? theme.colors['gray'][600] - : theme.colors['gray'][200]}; - &:hover, - &.active { - color: ${({ theme }) => - theme.name === 'light' - ? theme.colors['gray'][800] - : theme.colors['gray'][100]}; - } -` diff --git a/packages/boba/gateway/src/components/layout/Footer/GasWatcher/index.tsx b/packages/boba/gateway/src/components/layout/Footer/GasWatcher/index.tsx deleted file mode 100644 index 0c129820b6..0000000000 --- a/packages/boba/gateway/src/components/layout/Footer/GasWatcher/index.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import React, { FC } from 'react' -import { - GasListContainer, - GasListItem, - GasListItemLabel, - GasListItemValue, -} from './style' -import useGasWatcher from 'hooks/useGasWatcher' -import { useSelector } from 'react-redux' -import { selectActiveNetworkName } from 'selectors' - -const GasWatcher: FC = () => { - const { gas, savings, verifierStatus } = useGasWatcher() - const networkName = useSelector(selectActiveNetworkName()) - - if (!gas) { - return null - } - - return ( - <GasListContainer> - <GasListItem> - <GasListItemLabel>{networkName['l1']}</GasListItemLabel> - <GasListItemValue>{gas?.gasL1} Gwei</GasListItemValue> - </GasListItem> - <GasListItem> - <GasListItemLabel>{networkName['l2']}</GasListItemLabel> - <GasListItemValue>{gas?.gasL2} Gwei</GasListItemValue> - </GasListItem> - <GasListItem> - <GasListItemLabel>Savings</GasListItemLabel> - <GasListItemValue>{savings?.toFixed(0)}x</GasListItemValue> - </GasListItem> - <GasListItem> - <GasListItemLabel>L1</GasListItemLabel> - <GasListItemValue>{gas?.blockL1}</GasListItemValue> - </GasListItem> - <GasListItem> - <GasListItemLabel>L2</GasListItemLabel> - <GasListItemValue>{gas?.blockL2}</GasListItemValue> - </GasListItem> - <GasListItem> - <GasListItemLabel>Last Verified Block</GasListItemLabel> - <GasListItemValue> - {Number(verifierStatus?.matchedBlock || 0)} - </GasListItemValue> - </GasListItem> - </GasListContainer> - ) -} - -export default GasWatcher diff --git a/packages/boba/gateway/src/components/layout/Footer/GasWatcher/style.ts b/packages/boba/gateway/src/components/layout/Footer/GasWatcher/style.ts deleted file mode 100644 index c0d1e373b3..0000000000 --- a/packages/boba/gateway/src/components/layout/Footer/GasWatcher/style.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { Typography } from 'components/global' -import styled, { css } from 'styled-components' -import { mobile } from 'themes/screens' - -export const GasListContainer = styled.div` - self-align: flex-end; - display: flex; - gap: 24px; - justify-content: flex-end; - ${mobile(css` - display: none; - `)} -` - -export const GasListItem = styled.div` - display: flex; - align-items: center; - gap: 5px; -` - -export const GasListItemLabel = styled(Typography).attrs({ - variant: 'body2', -})` - color: ${({ theme }) => - theme.name === 'light' - ? theme.colors['gray'][600] - : theme.colors['gray'][100]}; -}; -` - -export const GasListItemValue = styled(Typography).attrs({ - variant: 'body2', -})` - color: ${({ theme }) => - theme.name === 'light' - ? theme.colors['gray'][700] - : theme.colors['gray'][200]};}; -` diff --git a/packages/boba/gateway/src/components/layout/Footer/SocialLinks/icons/discord.tsx b/packages/boba/gateway/src/components/layout/Footer/SocialLinks/icons/discord.tsx deleted file mode 100644 index ba36827528..0000000000 --- a/packages/boba/gateway/src/components/layout/Footer/SocialLinks/icons/discord.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import React from 'react' - -interface Props {} - -const DiscordIcon = (props: Props) => { - return ( - <svg - width="24" - height="19" - viewBox="0 0 24 19" - fill="none" - xmlns="http://www.w3.org/2000/svg" - > - <path - d="M20.2415 2.18563C18.7257 1.49012 17.1003 0.9777 15.4007 0.684215C15.3698 0.67855 15.3389 0.692705 15.3229 0.721016C15.1139 1.09283 14.8823 1.57788 14.7202 1.95913C12.8922 1.68547 11.0736 1.68547 9.28318 1.95913C9.12099 1.56941 8.88103 1.09283 8.67104 0.721016C8.6551 0.69365 8.62418 0.679495 8.59323 0.684215C6.89465 0.976762 5.26918 1.48918 3.75245 2.18563C3.73932 2.19129 3.72807 2.20074 3.7206 2.213C0.637438 6.81917 -0.207169 11.3121 0.207167 15.7494C0.209041 15.7711 0.221228 15.7919 0.238101 15.8051C2.27228 17.2989 4.24273 18.2058 6.17659 18.8069C6.20754 18.8164 6.24034 18.8051 6.26003 18.7796C6.71749 18.1549 7.12527 17.4962 7.4749 16.8035C7.49553 16.7629 7.47584 16.7148 7.43366 16.6987C6.78686 16.4534 6.17097 16.1542 5.57852 15.8145C5.53166 15.7871 5.52791 15.7201 5.57102 15.688C5.69569 15.5946 5.8204 15.4974 5.93944 15.3992C5.96098 15.3813 5.99099 15.3775 6.01631 15.3889C9.90842 17.1659 14.1221 17.1659 17.9683 15.3889C17.9936 15.3766 18.0236 15.3804 18.0461 15.3983C18.1652 15.4965 18.2898 15.5946 18.4154 15.688C18.4585 15.7201 18.4557 15.7871 18.4089 15.8145C17.8164 16.1608 17.2005 16.4534 16.5528 16.6978C16.5106 16.7138 16.4919 16.7629 16.5125 16.8035C16.8696 17.4952 17.2774 18.1539 17.7264 18.7786C17.7452 18.8051 17.7789 18.8164 17.8099 18.8069C19.7531 18.2058 21.7235 17.2989 23.7577 15.8051C23.7755 15.7919 23.7868 15.772 23.7887 15.7503C24.2845 10.6204 22.9581 6.16426 20.2724 2.21394C20.2659 2.20074 20.2546 2.19129 20.2415 2.18563ZM8.05612 13.0476C6.88433 13.0476 5.91881 11.9718 5.91881 10.6506C5.91881 9.3294 6.86561 8.25361 8.05612 8.25361C9.25598 8.25361 10.2122 9.33884 10.1934 10.6506C10.1934 11.9718 9.2466 13.0476 8.05612 13.0476ZM15.9585 13.0476C14.7867 13.0476 13.8212 11.9718 13.8212 10.6506C13.8212 9.3294 14.768 8.25361 15.9585 8.25361C17.1584 8.25361 18.1145 9.33884 18.0958 10.6506C18.0958 11.9718 17.1584 13.0476 15.9585 13.0476Z" - fill="#5F5F5F" - /> - </svg> - ) -} - -export default DiscordIcon diff --git a/packages/boba/gateway/src/components/layout/Footer/SocialLinks/icons/docs.tsx b/packages/boba/gateway/src/components/layout/Footer/SocialLinks/icons/docs.tsx deleted file mode 100644 index 8efd8302cc..0000000000 --- a/packages/boba/gateway/src/components/layout/Footer/SocialLinks/icons/docs.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import React from 'react' - -interface Props {} - -const DocsIcon = (props: Props) => { - return ( - <svg - id="docs" - width="18" - height="22" - viewBox="0 0 18 22" - fill="none" - xmlns="http://www.w3.org/2000/svg" - > - <path - d="M11.5 1H3C2.46957 1 1.96086 1.21071 1.58579 1.58579C1.21071 1.96086 1 2.46957 1 3V19C1 19.5304 1.21071 20.0391 1.58579 20.4142C1.96086 20.7893 2.46957 21 3 21H15C15.5304 21 16.0391 20.7893 16.4142 20.4142C16.7893 20.0391 17 19.5304 17 19V6.5L11.5 1Z" - strokeWidth="2" - strokeLinecap="round" - strokeLinejoin="round" - /> - <path - d="M11 1V7H17" - strokeWidth="2" - strokeLinecap="round" - strokeLinejoin="round" - /> - <path - d="M13 12H5" - strokeWidth="2" - strokeLinecap="round" - strokeLinejoin="round" - /> - <path - d="M13 16H5" - strokeWidth="2" - strokeLinecap="round" - strokeLinejoin="round" - /> - <path - d="M7 8H5" - strokeWidth="2" - strokeLinecap="round" - strokeLinejoin="round" - /> - </svg> - ) -} - -export default DocsIcon diff --git a/packages/boba/gateway/src/components/layout/Footer/SocialLinks/icons/telegram.tsx b/packages/boba/gateway/src/components/layout/Footer/SocialLinks/icons/telegram.tsx deleted file mode 100644 index 8a4a4e0065..0000000000 --- a/packages/boba/gateway/src/components/layout/Footer/SocialLinks/icons/telegram.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import React from 'react' - -interface Props {} - -const TelegramIcon = (props: Props) => { - return ( - <svg - width="24" - height="24" - viewBox="0 0 24 24" - xmlns="http://www.w3.org/2000/svg" - > - <path - fillRule="evenodd" - clipRule="evenodd" - d="M2.03714 11.2933C8.23863 8.59144 12.3739 6.81019 14.443 5.94958C20.3507 3.49236 21.5783 3.06551 22.3784 3.05142C22.5544 3.04832 22.9479 3.09193 23.2028 3.29875C23.418 3.47337 23.4772 3.70927 23.5055 3.87484C23.5339 4.04041 23.5691 4.41758 23.5411 4.71228C23.2209 8.07603 21.8357 16.2389 21.131 20.0064C20.8328 21.6005 20.2456 22.1351 19.6772 22.1874C18.4418 22.301 17.5037 21.371 16.3072 20.5866C14.4349 19.3593 13.3772 18.5953 11.5598 17.3977C9.45952 16.0136 10.8211 15.2529 12.018 14.0097C12.3313 13.6844 17.7743 8.73353 17.8796 8.28441C17.8928 8.22824 17.905 8.01887 17.7806 7.90831C17.6563 7.79775 17.4727 7.83556 17.3402 7.86563C17.1524 7.90825 14.1614 9.88519 8.36716 13.7965C7.51817 14.3794 6.74918 14.6635 6.0602 14.6486C5.30064 14.6322 3.83957 14.2191 2.75341 13.8661C1.42119 13.433 0.362372 13.2041 0.454571 12.4686C0.502595 12.0855 1.03012 11.6938 2.03714 11.2933Z" - /> - </svg> - ) -} - -export default TelegramIcon diff --git a/packages/boba/gateway/src/components/layout/Footer/SocialLinks/icons/twitter.tsx b/packages/boba/gateway/src/components/layout/Footer/SocialLinks/icons/twitter.tsx deleted file mode 100644 index 4104e79494..0000000000 --- a/packages/boba/gateway/src/components/layout/Footer/SocialLinks/icons/twitter.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react' - -interface Props {} - -const TwitterIcon = (props: Props) => { - return ( - <svg - width="24" - height="22" - viewBox="0 0 24 22" - xmlns="http://www.w3.org/2000/svg" - > - <path d="M21.5337 5.92715C21.5435 6.14946 21.5435 6.36168 21.5435 6.58399C21.5532 13.3242 16.6011 21.1053 7.54509 21.1053C4.87409 21.1053 2.25183 20.307 0 18.8114C0.389927 18.8619 0.779854 18.8821 1.16978 18.8821C3.38262 18.8821 5.53696 18.1141 7.28188 16.6893C5.17628 16.6489 3.32413 15.224 2.68075 13.1423C3.42161 13.2939 4.18197 13.2636 4.90333 13.0514C2.61251 12.5865 0.965069 10.4947 0.955321 8.05937C0.955321 8.03916 0.955321 8.01894 0.955321 7.99873C1.63769 8.39284 2.4078 8.61516 3.18765 8.63537C1.03331 7.13978 0.360682 4.15872 1.66694 1.8244C4.17222 5.01767 7.85703 6.94778 11.8148 7.15999C11.4151 5.39157 11.961 3.53219 13.238 2.27914C15.2169 0.349025 18.3363 0.450078 20.208 2.50145C21.3095 2.27914 22.3721 1.85471 23.3371 1.2585C22.9667 2.44082 22.1966 3.44125 21.173 4.07788C22.1478 3.95662 23.1032 3.68377 24 3.27956C23.3371 4.3103 22.4988 5.19957 21.5337 5.92715Z" /> - </svg> - ) -} - -export default TwitterIcon diff --git a/packages/boba/gateway/src/components/layout/Footer/SocialLinks/index.tsx b/packages/boba/gateway/src/components/layout/Footer/SocialLinks/index.tsx deleted file mode 100644 index 2aff0f974f..0000000000 --- a/packages/boba/gateway/src/components/layout/Footer/SocialLinks/index.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import React from 'react' -import { - AppVersion, - SocialLinkItem, - SocialLinksContainer, - StyledSocialLinks, -} from './style' -import DocsIcon from './icons/docs' -import DiscordIcon from './icons/discord' -import TwitterIcon from './icons/twitter' -import TelegramIcon from './icons/telegram' -import { WALLET_VERSION } from 'util/constant' - -interface Props {} - -const SocialLinks = (props: Props) => { - return ( - <SocialLinksContainer> - <StyledSocialLinks> - <SocialLinkItem - href="https://docs.boba.network" - target="_blank" - aria-label="bobadocs" - > - <DocsIcon /> - </SocialLinkItem> - <SocialLinkItem - href="https://boba.eco/twitter" - target="_blank" - aria-label="twitter" - > - <TwitterIcon /> - </SocialLinkItem> - <SocialLinkItem - href="https://boba.eco/discord" - target="_blank" - aria-label="discord" - > - <DiscordIcon /> - </SocialLinkItem> - <SocialLinkItem - href="https://boba.eco/telegram" - target="_blank" - aria-label="telegram" - > - <TelegramIcon /> - </SocialLinkItem> - </StyledSocialLinks> - <AppVersion>v{WALLET_VERSION}</AppVersion> - </SocialLinksContainer> - ) -} - -export default SocialLinks diff --git a/packages/boba/gateway/src/components/layout/Footer/SocialLinks/style.ts b/packages/boba/gateway/src/components/layout/Footer/SocialLinks/style.ts deleted file mode 100644 index 4669aaffe7..0000000000 --- a/packages/boba/gateway/src/components/layout/Footer/SocialLinks/style.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { Typography } from '@mui/material' -import styled, { css } from 'styled-components' -import { mobile } from 'themes/screens' - -export const SocialLinksContainer = styled.div` - display: flex; - justify-content: space-between; - align-items: center; - ${mobile(css` - flex-direction: column-reverse; - gap: 24px; - `)} -` - -export const StyledSocialLinks = styled.div` - display: flex; - justify-content: flex-start; - align-items: center; - gap: 30px; - flex: 1; -` - -export const SocialLinkItem = styled.a` - user-select: none; - display: flex; - text-decoration: none; - text-align: center; - overflow: visible; - svg { - &#docs { - path { - fill: none; - stroke: ${({ theme }) => - theme.name === 'light' - ? theme.colors['gray'][600] - : theme.colors['gray'][200]}; - }; - } - } - path { - fill: ${({ theme }) => - theme.name === 'light' - ? theme.colors['gray'][600] - : theme.colors['gray'][200]} - }; - } - } - &:hover { - svg { - &#docs { - path { - fill: none; - stroke: ${({ theme }) => - theme.name === 'light' - ? theme.colors['gray'][700] - : theme.colors['gray'][100]}}; - } - } - path { - fill: ${({ theme }) => - theme.name === 'light' - ? theme.colors['gray'][700] - : theme.colors['gray'][100]}}; - } - } - } -` - -export const AppVersion = styled(Typography).attrs({ - variant: 'body2', -})` - justify-self: flex-end; - color: ${({ theme }) => - theme.name === 'light' - ? theme.colors['gray'][600] - : theme.colors['gray'][200]}; -` diff --git a/packages/boba/gateway/src/components/layout/Footer/index.stories.tsx b/packages/boba/gateway/src/components/layout/Footer/index.stories.tsx deleted file mode 100644 index 0fc98ef17c..0000000000 --- a/packages/boba/gateway/src/components/layout/Footer/index.stories.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react' -import { Meta, StoryFn } from '@storybook/react' -import { Footer } from '.' -import { FooterProps } from './types' -import { Provider } from 'react-redux' -import createMockStore from 'redux-mock-store' -import thunk from 'redux-thunk' -import { MemoryRouter } from 'react-router-dom' - -const mockStore = createMockStore([thunk]) - -export default { - title: 'Layout/Footer', - component: Footer, -} as Meta - -const Template: StoryFn<FooterProps> = (args) => { - return ( - <div - style={{ - height: '100vh', - width: '100%', - }} - > - <MemoryRouter> - <Provider - store={mockStore({ - ui: { - theme: 'dark', - }, - })} - > - <Footer {...args} /> - </Provider> - </MemoryRouter> - </div> - ) -} - -export const Default = Template.bind({}) diff --git a/packages/boba/gateway/src/components/layout/Footer/index.tsx b/packages/boba/gateway/src/components/layout/Footer/index.tsx deleted file mode 100644 index 5692ae6a16..0000000000 --- a/packages/boba/gateway/src/components/layout/Footer/index.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React, { FC } from 'react' -import { FooterProps } from './types' -import { DividerLine, StyledFooter } from './style' -import GasWatcher from './GasWatcher' -import SocialLinks from './SocialLinks' -import FooterLinks from './FooterLinks' - -export const Footer: FC<FooterProps> = (props) => { - return ( - <StyledFooter> - <GasWatcher /> - <DividerLine /> - <SocialLinks /> - <FooterLinks /> - </StyledFooter> - ) -} diff --git a/packages/boba/gateway/src/components/layout/Footer/style.ts b/packages/boba/gateway/src/components/layout/Footer/style.ts deleted file mode 100644 index 1edbf91bf6..0000000000 --- a/packages/boba/gateway/src/components/layout/Footer/style.ts +++ /dev/null @@ -1,18 +0,0 @@ -import styled, { css } from 'styled-components' -import { mobile } from 'themes/screens' - -export const StyledFooter = styled.div` - display: flex; - flex-direction: column; - justify-content: space-between; - margin: 32px 32px 0px; -` - -export const DividerLine = styled.hr` - border-color: ${({ theme }) => theme.colors['gray'][200]}; - box-sizing: border-box; - width: 100%; - ${mobile(css` - display: none; - `)} -` diff --git a/packages/boba/gateway/src/components/layout/Footer/types.ts b/packages/boba/gateway/src/components/layout/Footer/types.ts deleted file mode 100644 index 116bd6eed9..0000000000 --- a/packages/boba/gateway/src/components/layout/Footer/types.ts +++ /dev/null @@ -1 +0,0 @@ -export interface FooterProps {} diff --git a/packages/boba/gateway/src/components/layout/Header/NavDrawer/AccountDrawer/icons/copy.tsx b/packages/boba/gateway/src/components/layout/Header/NavDrawer/AccountDrawer/icons/copy.tsx deleted file mode 100644 index 6ae0e06748..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/NavDrawer/AccountDrawer/icons/copy.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react' - -const CopyIcon = () => { - return ( - <svg - width="15" - height="16" - viewBox="0 0 15 16" - fill="none" - xmlns="http://www.w3.org/2000/svg" - > - <path - d="M3.31852 0C1.48578 0 0 1.592 0 3.55556V8.88889C0 10.8524 1.48578 12.4444 3.31852 12.4444C3.31852 14.408 4.8043 16 6.63704 16H11.6148C13.4476 16 14.9333 14.408 14.9333 12.4444V7.11111C14.9333 5.14756 13.4476 3.55556 11.6148 3.55556C11.6148 1.592 10.129 0 8.2963 0H3.31852ZM11.6148 5.33333C12.5312 5.33333 13.2741 6.12889 13.2741 7.11111V12.4444C13.2741 13.4267 12.5312 14.2222 11.6148 14.2222H6.63704C5.72063 14.2222 4.97778 13.4267 4.97778 12.4444H8.2963C10.129 12.4444 11.6148 10.8524 11.6148 8.88889V5.33333Z" - fill="#A8A8A8" - /> - </svg> - ) -} - -export default CopyIcon diff --git a/packages/boba/gateway/src/components/layout/Header/NavDrawer/AccountDrawer/icons/disconnect.tsx b/packages/boba/gateway/src/components/layout/Header/NavDrawer/AccountDrawer/icons/disconnect.tsx deleted file mode 100644 index 953f5078c5..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/NavDrawer/AccountDrawer/icons/disconnect.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react' - -const DisconnectIcon = () => { - return ( - <svg - width="13" - height="12" - viewBox="0 0 13 12" - fill="none" - xmlns="http://www.w3.org/2000/svg" - > - <path - d="M0 2.66667C0 1.194 1.19393 0 2.66667 0H5.33334C6.80601 0 8.00001 1.194 8.00001 2.66667C8.00001 3.03467 7.70134 3.33333 7.33334 3.33333C6.96534 3.33333 6.66667 3.03467 6.66667 2.66667C6.66667 1.93 6.07001 1.33333 5.33334 1.33333H2.66667C1.93027 1.33333 1.33333 1.93 1.33333 2.66667V9.33333C1.33333 10.07 1.93027 10.6667 2.66667 10.6667H5.33334C6.07001 10.6667 6.66667 10.07 6.66667 9.33333C6.66667 8.96533 6.96534 8.66667 7.33334 8.66667C7.70134 8.66667 8.00001 8.96533 8.00001 9.33333C8.00001 10.806 6.80601 12 5.33334 12H2.66667C1.19393 12 0 10.806 0 9.33333V2.66667ZM4.66667 6C4.66667 5.632 4.96534 5.33333 5.33334 5.33333H10.3753L9.06268 4L10 3.06266L12.4793 5.52067C12.7393 5.78134 12.7393 6.21866 12.4793 6.47933L10 8.93734L9.06268 8L10.3753 6.66667H5.33334C4.96534 6.66667 4.66667 6.368 4.66667 6Z" - fill="#A8A8A8" - /> - </svg> - ) -} - -export default DisconnectIcon diff --git a/packages/boba/gateway/src/components/layout/Header/NavDrawer/AccountDrawer/index.tsx b/packages/boba/gateway/src/components/layout/Header/NavDrawer/AccountDrawer/index.tsx deleted file mode 100644 index 13ab5b3004..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/NavDrawer/AccountDrawer/index.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import Drawer from '@mui/material/Drawer' -import { Button } from 'components/global' -import React, { FC } from 'react' - -import CopyIcon from './icons/copy' -import DisconnectIcon from './icons/disconnect' -import { - AccountContainer, - Action, - Content, - ItemLabel, - MenuItemStyle, -} from '../styles' -import networkService from 'services/networkService' -import useDisconnect from 'hooks/useDisconnect' - -interface Props { - open: boolean - onClose: () => void - onCloseNav: () => void -} - -const CopyElement = () => { - const onCopyAddress = () => { - navigator.clipboard.writeText(networkService.account as string) - } - - return ( - <MenuItemStyle onClick={() => onCopyAddress()}> - <CopyIcon /> - <ItemLabel>Copy Address</ItemLabel> - </MenuItemStyle> - ) -} - -const DisconnectElement = ({ onDisconnect }: { onDisconnect: any }) => { - return ( - <MenuItemStyle onClick={onDisconnect}> - <DisconnectIcon /> - <ItemLabel>Disconnect</ItemLabel> - </MenuItemStyle> - ) -} - -const AccountDrawer: FC<Props> = ({ onClose, onCloseNav, open = false }) => { - const { disconnect } = useDisconnect() - const onDisconnect = () => { - disconnect() - onClose() - onCloseNav() - } - return ( - <> - <Drawer - anchor="bottom" - open={open} - onClose={onClose} - style={{ background: 'transperant' }} - > - <AccountContainer> - <Content> - <CopyElement /> - <DisconnectElement onDisconnect={onDisconnect} /> - </Content> - <Action> - <Button - onClick={() => onClose()} - style={{ width: '100%' }} - label="Cancel" - /> - </Action> - </AccountContainer> - </Drawer> - </> - ) -} - -export default AccountDrawer diff --git a/packages/boba/gateway/src/components/layout/Header/NavDrawer/FeeSwitcherDrawer/index.tsx b/packages/boba/gateway/src/components/layout/Header/NavDrawer/FeeSwitcherDrawer/index.tsx deleted file mode 100644 index 6026afe6cc..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/NavDrawer/FeeSwitcherDrawer/index.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import Drawer from '@mui/material/Drawer' -import { Button } from 'components/global' -import React, { FC } from 'react' - -import { - AccountContainer, - Action, - Content, - ItemLabel, - MenuItemStyle, -} from '../styles' -import networkService from 'services/networkService' -import { getCoinImage } from 'util/coinImage' -import BobaLogo from 'assets/images/Boba_Logo_White_Circle.png' -import useFeeSwitcher from 'hooks/useFeeSwitcher' - -interface Props { - open: boolean - onClose: () => void -} - -const FeeSwitcherDrawer: FC<Props> = ({ onClose, open = false }) => { - const { switchFeeUse } = useFeeSwitcher() - - const onFeeSwitch = async (target: any) => { - await switchFeeUse(target) - onClose() - } - - return ( - <> - <Drawer - anchor="bottom" - open={open} - onClose={onClose} - style={{ background: 'transperant' }} - > - <AccountContainer> - <Content> - <MenuItemStyle - onClick={() => onFeeSwitch(networkService.L1NativeTokenSymbol)} - > - <img - src={getCoinImage(networkService.L1NativeTokenSymbol)} - alt="" - width="30px" - /> - <ItemLabel>{networkService.L1NativeTokenSymbol}</ItemLabel> - </MenuItemStyle> - <MenuItemStyle onClick={() => onFeeSwitch('BOBA')}> - <img src={BobaLogo} alt="" width="30px" /> - <ItemLabel>BOBA</ItemLabel> - </MenuItemStyle> - </Content> - <Action> - <Button - onClick={() => onClose()} - style={{ width: '100%' }} - label="Cancel" - /> - </Action> - </AccountContainer> - </Drawer> - </> - ) -} - -export default FeeSwitcherDrawer diff --git a/packages/boba/gateway/src/components/layout/Header/NavDrawer/index.tsx b/packages/boba/gateway/src/components/layout/Header/NavDrawer/index.tsx deleted file mode 100644 index 47756527f9..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/NavDrawer/index.tsx +++ /dev/null @@ -1,146 +0,0 @@ -import { Drawer } from '@mui/material' -import { makeStyles } from '@mui/styles' -import SunIcon from 'assets/images/theme-sun.svg' -import { Svg, SwitchButton } from 'components/global' -import React, { FC, useState } from 'react' -import { useTheme } from 'styled-components' -import { MENU_LIST } from '../Navigation/constant' -import { BobaLogo } from '../styles' -import { - ActionContainer, - ActionIcon, - ActionItem, - ActionLabel, - ActionValue, - CloseIcon, - DrawerHeader, - HeaderDivider, - NavLinkItem, - NavList, - StyleDrawer, - ThemeIcon, - WrapperCloseIcon, -} from './styles' -import useThemeSwitcher from 'hooks/useThemeSwitcher' -import { THEME_NAME } from '../types' -import { getCoinImage } from 'util/coinImage' -import truncateMiddle from 'truncate-middle' -import networkService from 'services/networkService' -import { useSelector } from 'react-redux' -import { - selectAccountEnabled, - selectBobaFeeChoice, - selectLayer, -} from 'selectors' -import AccountDrawer from './AccountDrawer' -import FeeSwitcherDrawer from './FeeSwitcherDrawer' - -import BobaLogoPng from 'assets/images/Boba_Logo_White_Circle.png' - -interface Props { - onClose: () => void - open: boolean -} - -const useStyles = makeStyles({ - root: { - width: '100%', - color: 'f00', - borderRadius: '0px', - }, -}) - -const NavDrawer: FC<Props> = ({ onClose, open }) => { - const classes = (useStyles as any)() - const { currentTheme, setThemeDark, setThemeLight } = useThemeSwitcher() - const theme: any = useTheme() - const [userDrawer, setUserDrawer] = useState<boolean>(false) - const [feeSwitcherDrawer, setFeeSwitcherDrawer] = useState<boolean>(false) - - const layer = useSelector(selectLayer()) - const accountEnabled = useSelector(selectAccountEnabled()) - const feeUseBoba = useSelector(selectBobaFeeChoice()) - - return ( - <Drawer open={open} classes={{ paper: classes.root }}> - <StyleDrawer> - <DrawerHeader> - <BobaLogo /> - <WrapperCloseIcon> - <CloseIcon onClick={onClose} /> - </WrapperCloseIcon> - </DrawerHeader> - <HeaderDivider /> - <ActionContainer> - <ActionItem> - <ActionIcon /> - <ActionLabel>Account</ActionLabel> - <ActionValue onClick={() => setUserDrawer(true)}> - {truncateMiddle(networkService.account as string, 5, 5, '...')} - </ActionValue> - </ActionItem> - {!!accountEnabled && layer === 'L2' ? ( - <ActionItem> - <ThemeIcon> - <img - src={feeUseBoba ? BobaLogoPng : getCoinImage('ETH')} - alt="use token" - /> - </ThemeIcon> - <ActionLabel>Gas Fee</ActionLabel> - <ActionValue onClick={() => setFeeSwitcherDrawer(true)}> - {feeUseBoba ? 'BOBA' : networkService.L1NativeTokenSymbol} - </ActionValue> - </ActionItem> - ) : null} - <ActionItem> - <ThemeIcon> - <Svg src={SunIcon} fill={theme.colors['gray'][600]} /> - </ThemeIcon> - <ActionLabel>Light Mode</ActionLabel> - <SwitchButton - isActive={currentTheme === THEME_NAME.DARK} - onStateChange={(d: any) => { - if (d) { - setThemeDark() - } else { - setThemeLight() - } - }} - /> - </ActionItem> - </ActionContainer> - <HeaderDivider /> - <NavList> - {MENU_LIST.map((menu) => { - return ( - <NavLinkItem - key={menu.label} - to={menu.path} - activeclassname="active" - onClick={onClose} - > - {menu.label} - </NavLinkItem> - ) - })} - </NavList> - <AccountDrawer - onCloseNav={onClose} - open={userDrawer} - onClose={() => { - setUserDrawer(false) - }} - /> - <FeeSwitcherDrawer - open={feeSwitcherDrawer} - onClose={() => { - setFeeSwitcherDrawer(false) - }} - /> - </StyleDrawer> - </Drawer> - ) -} - -export default NavDrawer diff --git a/packages/boba/gateway/src/components/layout/Header/NavDrawer/styles.ts b/packages/boba/gateway/src/components/layout/Header/NavDrawer/styles.ts deleted file mode 100644 index deafa84a98..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/NavDrawer/styles.ts +++ /dev/null @@ -1,204 +0,0 @@ -import Close from 'assets/images/close.svg' -import { Typography, Svg, Heading } from 'components/global' -import { NavLink } from 'react-router-dom' -import styled from 'styled-components' - -export const CloseIcon = styled(Svg).attrs({ - src: Close, - fill: '#fff', -})`` - -export const StyleDrawer = styled.div` - height: 100%; - background: ${({ theme: { colors, name } }) => - name === 'light' ? colors.gray[200] : colors.gray[600]}; -` - -export const DrawerHeader = styled.div` - display: flex; - justify-content: space-between; - align-items: center; - padding: 16px; -` - -export const WrapperCloseIcon = styled.div` - border-radius: 50%; - cursor: pointer; - &:hover { - background: ${({ theme: { name, colors } }) => - name === 'light' ? colors.gray[400] : colors.gray[300]}; - } - div { - padding: 4px; - height: 32px; - width: 32px; - display: flex; - justify-content: center; - align-items: center; - border-radius: 50%; - } -` - -export const HeaderDivider = styled.div` - box-sizing: border-box; - width: 100%; - border: none; - border-top: 1px solid ${({ theme }) => theme.colors.gray[300]}; -` - -export const ActionContainer = styled.div` - display: flex; - flex-direction: column; - width: 100%; - gap: 2px; -` -export const ActionItem = styled.div` - display: flex; - justify-content: space-between; - align-items: center; - padding: 16px; - gap: 8px; -` -export const ActionIcon = styled.div` - height: 32px; - width: 32px; - border-radius: 50%; - background: blue; - justify-self: flex-start; -` -export const ThemeIcon = styled.div` - display: flex; - justify-content: center; - align-items: center; - border-radius: 50%; - cursor: pointer; - img { - height: 30px; - width: 30px; - } - div { - padding: 4px; - height: 32px; - width: 32px; - display: flex; - justify-content: center; - align-items: center; - } -` -export const ActionLabel = styled(Typography).attrs({ - variant: 'title', -})` - flex: 1; - justify-self: flex-start; - color: ${({ theme }) => - theme.name === 'light' - ? theme.colors['gray'][800] - : theme.colors['gray'][100]}; -` -export const ActionValue = styled.button.attrs({ - variant: 'title', -})` - border: none; - background: transparent; - font-size: 18px; - font-style: normal; - font-weight: 500; - line-height: normal; - color: ${({ theme }) => - theme.name === 'light' - ? theme.colors['gray'][800] - : theme.colors['gray'][50]}; - - &:after { - content: '\\27E9'; - font-size: 19px; - font-weight: 600; - display: inline-block; - padding-left: 10px; - color: ${({ theme }) => - theme.name === 'light' - ? theme.colors['gray'][800] - : theme.colors['gray'][50]}; - } -` - -export const NavList = styled.div` - display: flex; - flex-direction: column; - gap: 40px; - padding: 40px 16px; -` -export const NavLinkItem = styled(NavLink)` - padding: 0px 16px; - font-family: Montserrat; - font-size: 24px; - font-style: normal; - line-height: normal; - font-weight: 700; - text-transform: uppercase; - cursor: pointer; - text-decoration: none; - color: ${({ theme }) => - theme.name === 'light' - ? theme.colors['gray'][600] - : theme.colors['gray'][100]}; - &:hover, - &.active { - color: ${({ theme }) => - theme.name === 'light' - ? theme.colors['gray'][800] - : theme.colors['green'][300]}; - } -` - -/**** for drawer 1.Account 2. feeSwitcher ****/ - -export const ItemLabel = styled(Typography).attrs({ - variant: 'body3', -})` - color: ${(props) => props.theme.color}; -` - -export const MenuItemStyle = styled.button.attrs({ - variant: 'body3', -})` - width: 100%; - border-radius: 8px; - background: var(--gray-400, #393939); - border: none; - padding: 10px; - margin-bottom: 5px; - gap: 10px !important; - display: flex !important; - align-items: center; - justify-content: flex-start; - - img { - height: 30px; - width: 30px; - padding: 5px; - } -` - -export const AccountContainer = styled.div` - display: flex; - flex-direction: column; - align-items: center; - gap: 16px; - justify-content: flex-start; - padding: 16px; - width: 100%; - background: #262626; -` -export const Content = styled.div` - padding: 8px; - flex-direction: column; - align-items: flex-start; - gap: 16px; - width: 100%; -` - -export const Action = styled.div` - width: 100%; - margin-bottom: 10px; -` diff --git a/packages/boba/gateway/src/components/layout/Header/Navigation/__snapshots__/index.test.tsx.snap b/packages/boba/gateway/src/components/layout/Header/Navigation/__snapshots__/index.test.tsx.snap deleted file mode 100644 index ebb10f3c4f..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/Navigation/__snapshots__/index.test.tsx.snap +++ /dev/null @@ -1,45 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Layout => Header => Menu should match the snapshot 1`] = ` -<DocumentFragment> - <div - class="sc-bgqQcB bHAysJ" - > - <a - activeclassname="active" - class="sc-gTRrQi fGVotN" - href="/bridge" - > - Bridge - </a> - <a - activeclassname="active" - class="sc-gTRrQi fGVotN" - href="/history" - > - History - </a> - <a - activeclassname="active" - class="sc-gTRrQi fGVotN" - href="/earn" - > - Earn - </a> - <a - activeclassname="active" - class="sc-gTRrQi fGVotN" - href="/stake" - > - Stake - </a> - <a - activeclassname="active" - class="sc-gTRrQi fGVotN" - href="/DAO" - > - Dao - </a> - </div> -</DocumentFragment> -`; diff --git a/packages/boba/gateway/src/components/layout/Header/Navigation/constant.ts b/packages/boba/gateway/src/components/layout/Header/Navigation/constant.ts deleted file mode 100644 index a0bd21738d..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/Navigation/constant.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ROUTES_PATH } from 'util/constant' -import { IMenuItem } from './types' - -export const MENU_LIST: Array<IMenuItem> = [ - { - label: 'Bridge', - path: ROUTES_PATH.BRIDGE, - }, - { - label: 'History', - path: ROUTES_PATH.HISTORY, - }, - { - label: 'Earn', - path: ROUTES_PATH.EARN, - }, - { - label: 'Stake', - path: ROUTES_PATH.STAKE, - }, - { - label: 'Dao', - path: ROUTES_PATH.DAO, - }, -] diff --git a/packages/boba/gateway/src/components/layout/Header/Navigation/index.test.tsx b/packages/boba/gateway/src/components/layout/Header/Navigation/index.test.tsx deleted file mode 100644 index 3049f0475d..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/Navigation/index.test.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { fireEvent, render, screen } from '@testing-library/react' -import React from 'react' -import CustomThemeProvider from 'themes' -import { Provider } from 'react-redux' -import { MemoryRouter } from 'react-router-dom' -import Navigation from '.' -import store from 'store' -import { MENU_LIST } from './constant' - -const renderHeaderMenu = () => { - return render( - <MemoryRouter> - <Provider store={store}> - <CustomThemeProvider> - <Navigation /> - </CustomThemeProvider> - </Provider> - </MemoryRouter> - ) -} - -describe('Layout => Header => Menu', () => { - test('should match the snapshot', () => { - const { asFragment } = renderHeaderMenu() - expect(asFragment()).toMatchSnapshot() - }) - - test('should have menu length of 6 with expected labels & paths', () => { - renderHeaderMenu() - const links = screen.getAllByRole('link') - expect(links.length).toBe(5) - links.forEach((link, index) => { - expect(link).toHaveTextContent(MENU_LIST[index].label) - expect(link).toHaveAttribute('href', MENU_LIST[index].path) - }) - }) - - test('should change the location on clicking menu', () => { - renderHeaderMenu() - const links = screen.getAllByRole('link') - links.forEach((link) => { - fireEvent.click(link) - expect(link).toHaveClass('active') - }) - }) -}) diff --git a/packages/boba/gateway/src/components/layout/Header/Navigation/index.tsx b/packages/boba/gateway/src/components/layout/Header/Navigation/index.tsx deleted file mode 100644 index a9f5065a23..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/Navigation/index.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import React, { FC } from 'react' -import { StyledNav, NavLinkItem } from './style' -import { MENU_LIST } from './constant' -import { MenuProps } from './types' -import { useSelector } from 'react-redux' -import { selectActiveNetwork } from 'selectors' -import { NETWORK } from 'util/network/network.util' - -/** - * - * Below pages will be available for all networks - * - * History - * Ecosystem - * Bridge - * Earn - * - * Stake / Dao - Only available for eth Boba (Testnet / Mainnet) - * - * Filter is not required on menulist as we can force user to - * connect to boba network on stake & dao page. - * - * @param isOpen - is the flag to open and show the menu in case of mobile view. - * - * - * @returns - */ - -const Navigation: FC<MenuProps> = ({ isOpen }) => { - const activeNetwork = useSelector(selectActiveNetwork()) - - return ( - <StyledNav> - {MENU_LIST.map((menu) => { - if ( - activeNetwork !== NETWORK.ETHEREUM && - ['Stake', 'Dao'].includes(menu.label) - ) { - return null - } - - return ( - <NavLinkItem - key={menu.label} - to={menu.path} - activeclassname="active" - // onClick={() => isMobile ? setOpen(false) : null} - > - {menu.label} - </NavLinkItem> - ) - })} - </StyledNav> - ) -} - -export default Navigation diff --git a/packages/boba/gateway/src/components/layout/Header/Navigation/style.ts b/packages/boba/gateway/src/components/layout/Header/Navigation/style.ts deleted file mode 100644 index b313d2a3f4..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/Navigation/style.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { NavLink } from 'react-router-dom' -import styled, { css } from 'styled-components' -import { mobile } from 'themes/screens' - -export const StyledNav = styled.div` - display: flex; - gap: 24px; - ${mobile(css` - display: none; - `)} -` - -export const NavLinkItem = styled(NavLink)` - font-size: 14px; - line-height: 16px; - font-weight: 500; - text-transform: uppercase; - cursor: pointer; - text-decoration: none; - color: ${({ theme }) => - theme.name === 'light' - ? theme.colors['gray'][600] - : theme.colors['gray'][100]}; - &:hover, - &.active { - color: ${({ theme }) => - theme.name === 'light' - ? theme.colors['gray'][800] - : theme.colors['green'][300]}; - } -` diff --git a/packages/boba/gateway/src/components/layout/Header/Navigation/types.ts b/packages/boba/gateway/src/components/layout/Header/Navigation/types.ts deleted file mode 100644 index 49f6ee0dea..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/Navigation/types.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface IMenuItem { - label: string - path: string -} - -export interface MenuProps { - isOpen?: boolean -} diff --git a/packages/boba/gateway/src/components/layout/Header/ThemeSwitcher/__snapshots__/index.test.tsx.snap b/packages/boba/gateway/src/components/layout/Header/ThemeSwitcher/__snapshots__/index.test.tsx.snap deleted file mode 100644 index 0a9c010314..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/ThemeSwitcher/__snapshots__/index.test.tsx.snap +++ /dev/null @@ -1,19 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Layout => Header => ThemeSwitcher should match the snapshot 1`] = ` -<DocumentFragment> - <div - class="sc-fABZjn jWXFnH" - title="light-icon" - > - <div> - <div> - <div - data-src="theme-sun.svg" - src="" - /> - </div> - </div> - </div> -</DocumentFragment> -`; diff --git a/packages/boba/gateway/src/components/layout/Header/ThemeSwitcher/index.test.tsx b/packages/boba/gateway/src/components/layout/Header/ThemeSwitcher/index.test.tsx deleted file mode 100644 index 95b0d9bca6..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/ThemeSwitcher/index.test.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import { fireEvent, render, screen } from '@testing-library/react' -import React from 'react' -import CustomThemeProvider from 'themes' -import { Provider } from 'react-redux' -import { MemoryRouter } from 'react-router-dom' -import ThemeSwitcher from '.' -import store from 'store' - -const renderThemeSwitcher = () => { - return render( - <MemoryRouter> - <Provider store={store}> - <CustomThemeProvider> - <ThemeSwitcher /> - </CustomThemeProvider> - </Provider> - </MemoryRouter> - ) -} - -describe('Layout => Header => ThemeSwitcher', () => { - beforeEach(() => { - jest.spyOn(Storage.prototype, 'setItem') - Storage.prototype.setItem = jest.fn() - }) - - test('should match the snapshot', () => { - const { asFragment } = renderThemeSwitcher() - expect(asFragment()).toMatchSnapshot() - }) - - test('should switch themes & show icons correctly when clicked on button', () => { - renderThemeSwitcher() - - expect(screen.queryByTitle('dark-icon')).toBeNull() - expect(screen.getByTitle('light-icon')).toBeVisible() - - fireEvent.click(screen.getByTitle('light-icon')) - expect(localStorage.setItem).toHaveBeenCalledWith('theme', 'light') - - expect(screen.getByTitle('dark-icon')).toBeVisible() - expect(screen.queryByTitle('light-icon')).toBeNull() - }) -}) diff --git a/packages/boba/gateway/src/components/layout/Header/ThemeSwitcher/index.tsx b/packages/boba/gateway/src/components/layout/Header/ThemeSwitcher/index.tsx deleted file mode 100644 index d3b1659d09..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/ThemeSwitcher/index.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { Svg } from 'components/global' -import React, { FC } from 'react' - -import MoonIcon from 'assets/images/theme-moon.svg' -import SunIcon from 'assets/images/theme-sun.svg' -import useThemeSwitcher from 'hooks/useThemeSwitcher' -import { useTheme } from 'styled-components' -import { THEME_NAME } from '../types' -import { IconWrapper } from './styles' - -const ThemeSwitcher: FC = () => { - const { currentTheme, setThemeDark, setThemeLight } = useThemeSwitcher() - const theme: any = useTheme() - - return ( - <> - {currentTheme === THEME_NAME.LIGHT ? ( - <IconWrapper title="dark-icon" onClick={setThemeDark}> - <Svg src={MoonIcon} fill={theme.colors['gray'][600]} /> - </IconWrapper> - ) : ( - <IconWrapper title="light-icon" onClick={setThemeLight}> - <Svg src={SunIcon} fill={theme.colors['gray'][100]} /> - </IconWrapper> - )} - </> - ) -} - -export default ThemeSwitcher diff --git a/packages/boba/gateway/src/components/layout/Header/ThemeSwitcher/styles.ts b/packages/boba/gateway/src/components/layout/Header/ThemeSwitcher/styles.ts deleted file mode 100644 index e946c36512..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/ThemeSwitcher/styles.ts +++ /dev/null @@ -1,22 +0,0 @@ -import styled, { css } from 'styled-components' -import { mobile } from 'themes/screens' - -export const IconWrapper = styled.div` - border-radius: 50%; - cursor: pointer; - &:hover { - background: ${({ theme: { name, colors } }) => - name === 'light' ? colors.gray[400] : colors.gray[300]}; - } - div { - padding: 4px; - height: 32px; - width: 32px; - display: flex; - justify-content: center; - align-items: center; - } - ${mobile(css` - display: none; - `)} -` diff --git a/packages/boba/gateway/src/components/layout/Header/WalletAddress/icons/copy.tsx b/packages/boba/gateway/src/components/layout/Header/WalletAddress/icons/copy.tsx deleted file mode 100644 index 6ae0e06748..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/WalletAddress/icons/copy.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react' - -const CopyIcon = () => { - return ( - <svg - width="15" - height="16" - viewBox="0 0 15 16" - fill="none" - xmlns="http://www.w3.org/2000/svg" - > - <path - d="M3.31852 0C1.48578 0 0 1.592 0 3.55556V8.88889C0 10.8524 1.48578 12.4444 3.31852 12.4444C3.31852 14.408 4.8043 16 6.63704 16H11.6148C13.4476 16 14.9333 14.408 14.9333 12.4444V7.11111C14.9333 5.14756 13.4476 3.55556 11.6148 3.55556C11.6148 1.592 10.129 0 8.2963 0H3.31852ZM11.6148 5.33333C12.5312 5.33333 13.2741 6.12889 13.2741 7.11111V12.4444C13.2741 13.4267 12.5312 14.2222 11.6148 14.2222H6.63704C5.72063 14.2222 4.97778 13.4267 4.97778 12.4444H8.2963C10.129 12.4444 11.6148 10.8524 11.6148 8.88889V5.33333Z" - fill="#A8A8A8" - /> - </svg> - ) -} - -export default CopyIcon diff --git a/packages/boba/gateway/src/components/layout/Header/WalletAddress/icons/disconnect.tsx b/packages/boba/gateway/src/components/layout/Header/WalletAddress/icons/disconnect.tsx deleted file mode 100644 index 953f5078c5..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/WalletAddress/icons/disconnect.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react' - -const DisconnectIcon = () => { - return ( - <svg - width="13" - height="12" - viewBox="0 0 13 12" - fill="none" - xmlns="http://www.w3.org/2000/svg" - > - <path - d="M0 2.66667C0 1.194 1.19393 0 2.66667 0H5.33334C6.80601 0 8.00001 1.194 8.00001 2.66667C8.00001 3.03467 7.70134 3.33333 7.33334 3.33333C6.96534 3.33333 6.66667 3.03467 6.66667 2.66667C6.66667 1.93 6.07001 1.33333 5.33334 1.33333H2.66667C1.93027 1.33333 1.33333 1.93 1.33333 2.66667V9.33333C1.33333 10.07 1.93027 10.6667 2.66667 10.6667H5.33334C6.07001 10.6667 6.66667 10.07 6.66667 9.33333C6.66667 8.96533 6.96534 8.66667 7.33334 8.66667C7.70134 8.66667 8.00001 8.96533 8.00001 9.33333C8.00001 10.806 6.80601 12 5.33334 12H2.66667C1.19393 12 0 10.806 0 9.33333V2.66667ZM4.66667 6C4.66667 5.632 4.96534 5.33333 5.33334 5.33333H10.3753L9.06268 4L10 3.06266L12.4793 5.52067C12.7393 5.78134 12.7393 6.21866 12.4793 6.47933L10 8.93734L9.06268 8L10.3753 6.66667H5.33334C4.96534 6.66667 4.66667 6.368 4.66667 6Z" - fill="#A8A8A8" - /> - </svg> - ) -} - -export default DisconnectIcon diff --git a/packages/boba/gateway/src/components/layout/Header/WalletAddress/index.tsx b/packages/boba/gateway/src/components/layout/Header/WalletAddress/index.tsx deleted file mode 100644 index 8d4b6c959a..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/WalletAddress/index.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import { generateAvatarURL } from '@cfx-kit/wallet-avatar' -import React from 'react' - -import { Heading } from 'components/global' -import Menu from 'components/global/menu' -import useDisconnect from 'hooks/useDisconnect' -import networkService from 'services/networkService' -import truncate from 'truncate-middle' -import CopyIcon from './icons/copy' -import DisconnectIcon from './icons/disconnect' -import { MenuItemStyle, ProfileIndicator } from './style' - -interface Props {} - -const CopyElement = () => { - return ( - <MenuItemStyle> - <CopyIcon /> Copy - </MenuItemStyle> - ) -} - -const DisconnectElement = () => { - return ( - <MenuItemStyle> - <DisconnectIcon /> - Disconnect - </MenuItemStyle> - ) -} - -export const WalletAddress = ({}: Props) => { - const { disconnect } = useDisconnect() - - const onCopyAddress = () => { - navigator.clipboard.writeText(networkService.account as string) - } - const onDisconnect = () => { - disconnect() - } - - const profile = generateAvatarURL(networkService.account as string) - - return ( - <Menu - name="walletAddress" - options={[ - { - component: <CopyElement />, - onClick: onCopyAddress, - }, - { - component: <DisconnectElement />, - onClick: onDisconnect, - }, - ]} - > - <> - <ProfileIndicator src={profile} /> - <Heading variant="h5"> - {truncate(networkService.account, 6, 4, '...')} - </Heading> - </> - </Menu> - ) -} diff --git a/packages/boba/gateway/src/components/layout/Header/WalletAddress/style.ts b/packages/boba/gateway/src/components/layout/Header/WalletAddress/style.ts deleted file mode 100644 index 5d23b41783..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/WalletAddress/style.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Typography } from 'components/global' -import styled from 'styled-components' - -export const CircleIndicator = styled.div` - height: 24px; - width: 24px; - border-radius: 50%; - background: #0787af; -` - -export const MenuItemStyle = styled(Typography).attrs({ - variant: 'body3', -})` - padding: 5px 10px; - gap: 10px !important; - display: flex !important; - align-items: center; - justify-content: space-around; -` - -export const ProfileIndicator = styled.img.attrs({ - alt: 'profile image', -})` - height: 24px; - width: 24px; - border-radius: 50%; -` diff --git a/packages/boba/gateway/src/components/layout/Header/__snapshots__/index.test.tsx.snap b/packages/boba/gateway/src/components/layout/Header/__snapshots__/index.test.tsx.snap deleted file mode 100644 index 0c4d35b95d..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/__snapshots__/index.test.tsx.snap +++ /dev/null @@ -1,96 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Layout => Header should match the snapshot 1`] = ` -<DocumentFragment> - <div - class="sc-fABZjn fNXwka" - > - <a - class="" - href="/bridge" - > - <div - class="sc-gUMnWI dkUFbU" - /> - </a> - <div - class="sc-hjLWnZ kFZkac" - > - <a - activeclassname="active" - class="sc-fWFeAW dJFBmS" - href="/bridge" - > - Bridge - </a> - <a - activeclassname="active" - class="sc-fWFeAW dJFBmS" - href="/history" - > - History - </a> - <a - activeclassname="active" - class="sc-fWFeAW dJFBmS" - href="/earn" - > - Earn - </a> - <a - activeclassname="active" - class="sc-fWFeAW dJFBmS" - href="/stake" - > - Stake - </a> - <a - activeclassname="active" - class="sc-fWFeAW dJFBmS" - href="/DAO" - > - Dao - </a> - </div> - <div - class="sc-hUOJWJ kkAMsz" - > - <button - class="sc-crozmw joSqYT" - label="Connect Wallet" - style="white-space: nowrap;" - type="button" - > - Connect Wallet - </button> - <div - class="sc-dPwPAC UluVn" - > - <div - class="sc-ePzlA-D hiWbI" - > - <div> - <div - data-src="hamburger.svg" - src="" - /> - </div> - </div> - </div> - <div - class="sc-gjJAnY imSQnB" - title="light-icon" - > - <div> - <div> - <div - data-src="theme-sun.svg" - src="" - /> - </div> - </div> - </div> - </div> - </div> -</DocumentFragment> -`; diff --git a/packages/boba/gateway/src/components/layout/Header/feeSwitcher/index.tsx b/packages/boba/gateway/src/components/layout/Header/feeSwitcher/index.tsx deleted file mode 100644 index 1550010286..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/feeSwitcher/index.tsx +++ /dev/null @@ -1,102 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React, { FC } from 'react' -import { useSelector } from 'react-redux' - -import { - selectAccountEnabled, - selectActiveNetworkName, - selectBobaFeeChoice, - selectLayer, -} from 'selectors' - -import Select from 'components/select/Select' -import Tooltip from 'components/tooltip/Tooltip' - -import networkService from 'services/networkService.js' - -import useFeeSwitcher from 'hooks/useFeeSwitcher' -import { getCoinImage } from 'util/coinImage' -import { - FeeLabel, - FeeSwitcherIcon, - FeeSwitcherLabel, - FeeSwitcherLabelWrapper, - FeeSwitcherWrapper, -} from './styles' - -import BobaLogo from 'assets/images/Boba_Logo_White_Circle.png' - -const OptionBoba = () => ({ - value: 'BOBA', - title: 'BOBA', - icon: BobaLogo, -}) - -const OptionNativeToken = () => ({ - value: networkService.L1NativeTokenSymbol, - title: networkService.L1NativeTokenName, - icon: getCoinImage(networkService.L1NativeTokenSymbol), -}) - -const FeeSwitcher: FC = () => { - const accountEnabled = useSelector(selectAccountEnabled()) - const feeUseBoba = useSelector(selectBobaFeeChoice()) - const networkName = useSelector(selectActiveNetworkName()) - const layer = useSelector(selectLayer()) - - const { switchFeeUse } = useFeeSwitcher() - - if (!accountEnabled && layer !== 'L2') { - return ( - <FeeSwitcherWrapper> - <Tooltip - title={`After switching to the Boba network, you can modify the Gas fee token used by the Boba network. The whole network will use BOBA or ${networkService.L1NativeTokenSymbol} as the gas fee token according to your choice.`} - > - <FeeSwitcherIcon fontSize="small" /> - </Tooltip> - <FeeSwitcherLabel>Fee</FeeSwitcherLabel> - </FeeSwitcherWrapper> - ) - } - - return ( - <FeeSwitcherWrapper> - <FeeSwitcherLabelWrapper> - <FeeLabel>Fee</FeeLabel> - <Tooltip - title={`BOBA or ${networkService.L1NativeTokenSymbol} will be used across ${networkName['l2']} according to your choice.`} - > - <FeeSwitcherIcon fontSize="small" /> - </Tooltip> - </FeeSwitcherLabelWrapper> - <Select - isMulti={false} - loading={false} - newSelect={true} - label="" - className="" - onSelect={(e: any) => { - switchFeeUse(e.value) - }} - value={feeUseBoba ? OptionBoba() : OptionNativeToken()} - options={[OptionBoba(), OptionNativeToken()]} - /> - </FeeSwitcherWrapper> - ) -} - -export default FeeSwitcher diff --git a/packages/boba/gateway/src/components/layout/Header/feeSwitcher/styles.ts b/packages/boba/gateway/src/components/layout/Header/feeSwitcher/styles.ts deleted file mode 100644 index 01e2b8d3cc..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/feeSwitcher/styles.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { HelpOutline } from '@mui/icons-material' -import { Heading, Typography } from 'components/global' -import styled, { css } from 'styled-components' -import { mobile } from 'themes/screens' - -export const FeeSwitcherWrapper = styled.div` - display: flex; - gap: 8px; - align-items: center; - justify-content: space-around; - ${mobile(css` - display: none; - `)} -` - -export const FeeSwitcherLabel = styled(Heading).attrs({ - variant: 'h5', -})` - white-space: nowrap; - padding: 5px 10px; -` - -export const FeeSwitcherIcon = styled(HelpOutline)` - color: ${({ theme }) => - theme.name === 'light' ? theme.colors.gray[600] : theme.colors.gray[100]}; -` - -export const MenuItemStyle = styled(Typography).attrs({ - variant: 'body3', -})` - padding: 5px 10px; - gap: 10px !important; - display: flex !important; - align-items: center; - justify-content: space-around; -` - -export const FeeSwitcherLabelWrapper = styled.div` - display: flex; - align-items: center; - justify-content: space-between; - gap: 4px; -` -export const FeeLabel = styled(Typography).attrs({ - variant: 'body2', -})` - color: ${({ theme: { name, colors } }) => - name === 'light' ? colors.gray[600] : colors.gray[100]}; -` diff --git a/packages/boba/gateway/src/components/layout/Header/index.stories.tsx b/packages/boba/gateway/src/components/layout/Header/index.stories.tsx deleted file mode 100644 index 1bda6bff8e..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/index.stories.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react' -import { Meta, StoryFn } from '@storybook/react' -import { Header } from '.' -import { HeaderProps } from './types' -import { Provider } from 'react-redux' -import createMockStore from 'redux-mock-store' -import thunk from 'redux-thunk' -import { MemoryRouter } from 'react-router-dom' - -const mockStore = createMockStore([thunk]) - -export default { - title: 'Layout/Header', - component: Header, -} as Meta - -const Template: StoryFn<HeaderProps> = (args) => { - return ( - <div - style={{ - height: '100vh', - width: '100%', - }} - > - <MemoryRouter> - <Provider - store={mockStore({ - ui: { - theme: 'dark', - }, - })} - > - <Header {...args} /> - </Provider> - </MemoryRouter> - </div> - ) -} - -export const Default = Template.bind({}) diff --git a/packages/boba/gateway/src/components/layout/Header/index.test.tsx b/packages/boba/gateway/src/components/layout/Header/index.test.tsx deleted file mode 100644 index 558bbf8541..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/index.test.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { render, screen } from '@testing-library/react' -import React from 'react' -import { Header } from '.' -import CustomThemeProvider from 'themes' -import { Provider } from 'react-redux' -import { MemoryRouter } from 'react-router-dom' -import store from 'store' - -const renderHeader = () => { - return render( - <MemoryRouter> - <Provider store={store}> - <CustomThemeProvider> - <Header /> - </CustomThemeProvider> - </Provider> - </MemoryRouter> - ) -} - -describe('Layout => Header', () => { - test('should match the snapshot', () => { - const { asFragment } = renderHeader() - - expect(asFragment()).toMatchSnapshot() - }) - - test('should have button with label connect wallet', () => { - renderHeader() - expect(screen.getByText('Connect Wallet')).toBeVisible() - }) -}) diff --git a/packages/boba/gateway/src/components/layout/Header/index.tsx b/packages/boba/gateway/src/components/layout/Header/index.tsx deleted file mode 100644 index 68624aa2bf..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/index.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import React, { FC, useState } from 'react' -import { HeaderProps } from './types' -import { - BobaLogo, - HeaderAction, - HeaderContainer, - HumberIcon, - MobileMenuIcon, -} from './styles' -import { Button } from 'components/global' -import ThemeSwitcher from './ThemeSwitcher' -import Navigation from './Navigation' -import { useDispatch, useSelector } from 'react-redux' -import { setConnect } from 'actions/setupAction' -import { selectAccountEnabled, selectLayer } from 'selectors' -import { WalletAddress } from './WalletAddress' -import { LAYER, ROUTES_PATH } from 'util/constant' -import FeeSwitcher from './feeSwitcher' -import NavDrawer from './NavDrawer' -import { NetworkSelector } from 'components/NetworkSelector' -import { NavLink } from 'react-router-dom' - -export const Header: FC<HeaderProps> = () => { - const dispatch = useDispatch<any>() - const layer = useSelector<any>(selectLayer()) - const accountEnabled = useSelector<any>(selectAccountEnabled()) - const [showDrawer, setShowDrawer] = useState(false) - - const onConnect = () => { - dispatch(setConnect(true)) - } - - return ( - <HeaderContainer> - <NavLink to={ROUTES_PATH.BRIDGE}> - <BobaLogo /> - </NavLink> - <Navigation /> - <NavDrawer open={showDrawer} onClose={() => setShowDrawer(false)} /> - <HeaderAction> - {accountEnabled ? ( - <> - {layer === LAYER.L2 ? <FeeSwitcher /> : null} - <NetworkSelector /> - <WalletAddress /> - </> - ) : ( - <Button - style={{ whiteSpace: 'nowrap' }} - onClick={onConnect} - small - label="Connect Wallet" - /> - )} - <MobileMenuIcon> - <HumberIcon onClick={() => setShowDrawer(true)} /> - </MobileMenuIcon> - <ThemeSwitcher /> - </HeaderAction> - </HeaderContainer> - ) -} diff --git a/packages/boba/gateway/src/components/layout/Header/styles.ts b/packages/boba/gateway/src/components/layout/Header/styles.ts deleted file mode 100644 index 6a448cf133..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/styles.ts +++ /dev/null @@ -1,75 +0,0 @@ -import styled, { css } from 'styled-components' -import BobaLogoImage from 'assets/images/boba-logo.png' -import MenuIcon from 'assets/images/hamburger.svg' -import { Svg } from 'components/global' -import { mobile } from 'themes/screens' - -export const HeaderContainer = styled.div` - height: 73px; - margin: 0px; - padding: 0px 32px; - display: flex; - align-items: center; - justify-content: flex-start; - backdrop-filter: blur(7.5px); - z-index: 9999; - background: ${({ theme: { name, colors } }) => - name === 'light' ? 'rgba(255, 255, 255, 0.35)' : 'rgba(0, 0, 0, 0.05)'}; - - ${mobile(css` - padding: 0px 16px; - `)} -` - -export const BobaLogo = styled.div` - width: 30px; - height: 32px; - margin-right: 32px; - background: ${({ theme }) => `url(${BobaLogoImage}) no-repeat`}; - background-position: 100%; - background-size: contain; - ${mobile(css` - width: 32px; - height: 32px; - margin-right: 12px; - `)} -` - -export const HeaderAction = styled.div` - display: flex; - align-items: center; - flex: 1; - justify-content: flex-end; - gap: 15px; - ${mobile(css` - gap: 8px; - `)} -` - -export const MobileMenuIcon = styled.div` - display: none; - - ${mobile(css` - display: block; - `)} -` - -export const HumberIcon = styled(Svg).attrs({ - src: MenuIcon, - fill: 'current', -})` - stroke: ${({ theme }) => - theme.name === 'light' ? theme.colors.gray[600] : '#fff'}; - fill: ${({ theme }) => - theme.name === 'light' ? theme.colors.gray[600] : '#fff'}; - - ${mobile(css` - display: block; - height: 34px; - width: 32px; - div { - display: flex; - align-items: center; - } - `)} -` diff --git a/packages/boba/gateway/src/components/layout/Header/types.ts b/packages/boba/gateway/src/components/layout/Header/types.ts deleted file mode 100644 index b281e35f00..0000000000 --- a/packages/boba/gateway/src/components/layout/Header/types.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface HeaderProps {} - -export enum THEME_NAME { - LIGHT = 'light', - DARK = 'dark', -} diff --git a/packages/boba/gateway/src/components/layout/PageTitle/__snapshots__/index.test.tsx.snap b/packages/boba/gateway/src/components/layout/PageTitle/__snapshots__/index.test.tsx.snap deleted file mode 100644 index 5daa1be8b8..0000000000 --- a/packages/boba/gateway/src/components/layout/PageTitle/__snapshots__/index.test.tsx.snap +++ /dev/null @@ -1,16 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`PageTitle should match snapshots head 1`] = ` -<DocumentFragment> - <div - class="sc-ewnqHT iQmlNb" - > - <h1 - class="sc-bgqQcB jYvPsJ sc-fFGjHI MzdwS" - > - Page Title - </h1> - This is the current slug - </div> -</DocumentFragment> -`; diff --git a/packages/boba/gateway/src/components/layout/PageTitle/constants.tsx b/packages/boba/gateway/src/components/layout/PageTitle/constants.tsx deleted file mode 100644 index fa22546c11..0000000000 --- a/packages/boba/gateway/src/components/layout/PageTitle/constants.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { ROUTES_PATH } from 'util/constant' -export const pageTitleWhiteList = [ - { - title: 'History', - slug: 'Look back on past transactions', - path: ROUTES_PATH.HISTORY, - }, - { - title: 'Earn', - slug: 'Stake more, Earn more', - path: ROUTES_PATH.EARN, - }, - { - title: 'Stake', - slug: 'Stake BOBA and earn rewards.', - path: ROUTES_PATH.STAKE, - }, - { - title: 'DAO', - slug: 'Participate in voting on proposals concerning the future of Boba Network', - path: ROUTES_PATH.DAO, - }, - { - title: 'Dev Tools', - slug: '', - path: ROUTES_PATH.DEV_TOOLS, - }, - { - title: 'Boba Scope', - slug: '', - path: ROUTES_PATH.BOBASCOPE, - }, -] diff --git a/packages/boba/gateway/src/components/layout/PageTitle/index.stories.tsx b/packages/boba/gateway/src/components/layout/PageTitle/index.stories.tsx deleted file mode 100644 index 3bca948e48..0000000000 --- a/packages/boba/gateway/src/components/layout/PageTitle/index.stories.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import React from 'react' -import { Meta, StoryFn } from '@storybook/react' - -import { PageTitle } from '.' -import { PageTitleTypes } from './types' -import { BrowserRouter } from 'react-router-dom' - -export default { - title: 'Layout/PageTitle', - component: PageTitle, - decorators: [ - (StoryFn) => ( - <BrowserRouter> - <StoryFn /> - </BrowserRouter> - ), - ], -} as Meta - -const Template: StoryFn<PageTitleTypes> = (args: any) => <PageTitle {...args} /> - -export const Default = Template.bind({}) -Default.args = { - title: 'History', - slug: 'Look back on past transactions', -} - -export const WithoutSlug = Template.bind({}) -WithoutSlug.args = { - title: 'Title only', -} diff --git a/packages/boba/gateway/src/components/layout/PageTitle/index.test.tsx b/packages/boba/gateway/src/components/layout/PageTitle/index.test.tsx deleted file mode 100644 index 9f1761bc80..0000000000 --- a/packages/boba/gateway/src/components/layout/PageTitle/index.test.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import React from 'react' -import { BrowserRouter } from 'react-router-dom' -import { Provider } from 'react-redux' -import configureStore from 'redux-mock-store' - -import { render } from '@testing-library/react' - -import CustomThemeProvider from 'themes' -import { PageTitleTypes } from './types' - -import { PageTitle } from '.' - -const mockStore = configureStore() - -const renderTypography = (props: PageTitleTypes) => { - return render( - <Provider - store={mockStore({ - ui: { - theme: 'dark', - }, - })} - > - <BrowserRouter> - <CustomThemeProvider> - <PageTitle {...props}>Text goes here</PageTitle> - </CustomThemeProvider> - </BrowserRouter> - </Provider> - ) -} - -describe('PageTitle', () => { - test('should match snapshots head', () => { - const { asFragment } = renderTypography({ - title: 'Page Title', - slug: 'This is the current slug', - }) - expect(asFragment()).toMatchSnapshot() - }) -}) diff --git a/packages/boba/gateway/src/components/layout/PageTitle/index.tsx b/packages/boba/gateway/src/components/layout/PageTitle/index.tsx deleted file mode 100644 index 83e068f584..0000000000 --- a/packages/boba/gateway/src/components/layout/PageTitle/index.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React, { FC } from 'react' -import { useLocation } from 'react-router-dom' - -import { pageTitleWhiteList } from './constants' -import { PageTitleTypes } from './types' -import { PageTitleContainer, Title, Slug } from './styles' - -export const PageTitle: FC<PageTitleTypes> = ({ title, slug }) => { - const location = useLocation() - const currentPath = location.pathname - - const { title: pageTitle = '', slug: pageSlug = '' } = - pageTitleWhiteList.find((page) => page.path === currentPath) || {} - - if (!title && !pageTitle) { - return <></> - } - - return ( - <PageTitleContainer> - <Title variant="h1">{pageTitle || title} - {slug || (pageSlug && {pageSlug || slug})} - - ) -} diff --git a/packages/boba/gateway/src/components/layout/PageTitle/styles.ts b/packages/boba/gateway/src/components/layout/PageTitle/styles.ts deleted file mode 100644 index 79a354def7..0000000000 --- a/packages/boba/gateway/src/components/layout/PageTitle/styles.ts +++ /dev/null @@ -1,42 +0,0 @@ -import styled, { css } from 'styled-components' - -import { Heading } from 'components/global/heading' -import { Typography } from 'components/global/typography' -import { mobile } from 'themes/screens' - -export const PageTitleContainer = styled.div` - display: flex; - align-items: center; - flex-direction: column; - padding: 50px 15px; - gap: 15px 0px; - ${mobile(css` - text-align: center; - `)} -` - -export const Title = styled(Heading)` - ${(props) => - props.theme.name === 'light' && - css` - color: ${props.theme.colors.gray[800]}; - `} - ${(props) => - props.theme.name === 'dark' && - css` - color: #fff; - `} -` - -export const Slug = styled(Typography)` - ${(props) => - props.theme.name === 'light' && - css` - color: ${props.theme.colors.gray[700]}; - `} - ${(props) => - props.theme.name === 'dark' && - css` - color: #acacac; - `} -` diff --git a/packages/boba/gateway/src/components/layout/PageTitle/types.ts b/packages/boba/gateway/src/components/layout/PageTitle/types.ts deleted file mode 100644 index 4179a8751d..0000000000 --- a/packages/boba/gateway/src/components/layout/PageTitle/types.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface PageTitleTypes { - title: string - slug: string -} diff --git a/packages/boba/gateway/src/components/layout/index.ts b/packages/boba/gateway/src/components/layout/index.ts deleted file mode 100644 index 4df430c05a..0000000000 --- a/packages/boba/gateway/src/components/layout/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './Header' -export * from './Footer' diff --git a/packages/boba/gateway/src/components/listEarn/ListEarn.js b/packages/boba/gateway/src/components/listEarn/ListEarn.js deleted file mode 100644 index f792436d9d..0000000000 --- a/packages/boba/gateway/src/components/listEarn/ListEarn.js +++ /dev/null @@ -1,273 +0,0 @@ -import React from 'react'; -import { connect } from 'react-redux'; -import { isEqual } from 'util/lodash'; - -import { logAmount, powAmount, formatLargeNumber } from 'util/amountConvert'; -import { BigNumber } from 'ethers'; - -import { openAlert, openModal } from 'actions/uiAction'; -import { getEarnInfo, updateStakeToken, updateWithdrawToken } from 'actions/earnAction'; -import networkService from 'services/networkService' -import { Box,Fade, CircularProgress } from '@mui/material'; -import * as S from "./styles" -import { getAllAddresses, getReward } from 'actions/networkAction'; -import {IconLabel} from 'components/global/IconLabel'; -import {TableContent} from 'components/global/table' - -import { Typography } from 'components/global/typography' -import { Button } from 'components/global/button' - -import ActionIcon from 'assets/images/icons/actions.svg' -import { SvgContianer } from './styles' -import { Svg } from 'components/global/svg' - -class ListEarn extends React.Component { - - constructor(props) { - - super(props) - - const { - poolInfo, - userInfo, - L1orL2Pool, - balance, - showAll, - showStakesOnly, - accountEnabled, - chainId - } = this.props; - - this.state = { - balance, - L1orL2Pool, - chainId, - // data - poolInfo, - userInfo, - showAll, - showStakesOnly, - //drop down box - dropDownBox: false, - dropDownBoxInit: true, - // loading - loading: false, - // provider status - accountEnabled, - } - - } - - componentDidMount() { - this.props.dispatch(getAllAddresses()); - } - - componentDidUpdate(prevProps, prevState) { - const { chainId, poolInfo, userInfo, balance, showAll, showStakesOnly, accountEnabled } = this.props; - const config = { - chainId, - poolInfo, - userInfo, - balance, - showAll, - showStakesOnly, - accountEnabled - }; - - Object.keys(config).forEach(key => { - if (!isEqual(prevProps[key], this.props[key])) { - this.setState({ [key]: this.props[key] }); - } - }); - } - - async handleStakeToken() { - - const { poolInfo, L1orL2Pool, balance } = this.state - - const { allAddresses } = this.props.earn - - this.props.dispatch(updateStakeToken({ - symbol: poolInfo.symbol, - currency: L1orL2Pool === 'L1LP' ? poolInfo.l1TokenAddress : poolInfo.l2TokenAddress, - LPAddress: L1orL2Pool === 'L1LP' ? allAddresses.L1LPAddress : allAddresses.L2LPAddress, - L1orL2Pool, - balance, - decimals: poolInfo.decimals - })) - - this.props.dispatch(openModal('EarnDepositModal')) - } - - async handleWithdrawToken() { - - const { poolInfo, L1orL2Pool, balance } = this.state - - const { allAddresses } = this.props.earn - - this.props.dispatch(updateWithdrawToken({ - symbol: poolInfo.symbol, - currency: L1orL2Pool === 'L1LP' ? poolInfo.l1TokenAddress : poolInfo.l2TokenAddress, - LPAddress: L1orL2Pool === 'L1LP' ? allAddresses.L1LPAddress : allAddresses.L2LPAddress, - L1orL2Pool, - balance, - decimals: poolInfo.decimals - })) - - this.props.dispatch(openModal('EarnWithdrawModal')) - } - - async handleHarvest() { - - const { poolInfo, L1orL2Pool, userInfo } = this.state; - - this.setState({ loading: true }) - - const userReward = BigNumber.from(userInfo.pendingReward).add( - BigNumber.from(userInfo.amount) - .mul(BigNumber.from(poolInfo.accUserRewardPerShare)) - .div(BigNumber.from(powAmount(1, 12))) - .sub(BigNumber.from(userInfo.rewardDebt)) - ).toString() - - let getRewardTX = await this.props.dispatch(getReward( - L1orL2Pool === 'L1LP' ? poolInfo.l1TokenAddress : poolInfo.l2TokenAddress, - userReward, - L1orL2Pool - )) - - if (getRewardTX) { - this.props.dispatch(openAlert(`${logAmount(userReward, poolInfo.decimals, 2)} ${poolInfo.symbol} was added to your account`)) - this.props.dispatch(getEarnInfo()) - this.setState({ loading: false }) - } else { - this.setState({ loading: false }) - } - - } - - - - render() { - const { - poolInfo, userInfo, - dropDownBox, showAll, showStakesOnly, - loading, L1orL2Pool, accountEnabled, - chainId, - } = this.state; - - const pageLoading = Object.keys(poolInfo).length === 0; - - let userReward = 0; - - if (Object.keys(userInfo).length && Object.keys(poolInfo).length && accountEnabled) { - userReward = BigNumber.from(userInfo.pendingReward).add( - BigNumber.from(userInfo.amount) - .mul(BigNumber.from(poolInfo.accUserRewardPerShare)) - .div(BigNumber.from(powAmount(1, 12))) - .sub(BigNumber.from(userInfo.rewardDebt)) - ).toString() - } - - const disabled = !L1orL2Pool.includes(networkService.L1orL2) - const symbol = poolInfo.symbol - const name = poolInfo.name - const decimals = poolInfo.decimals - const address = L1orL2Pool === 'L1LP' ? poolInfo.l1TokenAddress : poolInfo.l2TokenAddress; - - - - const formatNumber = (value,limit) => { - const limits = limit || 2; - return formatLargeNumber(Number(logAmount(value, decimals, limits))) - } - - const tableOptions = [ - { content: , width:225 }, - { content: {formatNumber(poolInfo.tokenBalance)},width:145 }, - { content: {formatNumber(poolInfo.userDepositAmount)} ,width:115 }, - { content: {`${logAmount(poolInfo.APR, 0, 2)}`}, width: 85 }, - { content: {userInfo.amount ? `${logAmount(userInfo.amount, decimals, 2)}` : `0`}, width:90 }, - { content: { userReward ? `${logAmount(userReward, decimals, 5)}` : `0`} - , - width:110 - }, - { - content: ( - - - - ), - width:75 - } - ]; - - if (showAll === false) { - if (Number(logAmount(poolInfo.tokenBalance, decimals, 2)) > 0.001) { - return null - } - } - - if (showStakesOnly === true) { - if (Number(logAmount(userInfo.amount, decimals, 2)) < 0.001) { - return null - } - } - - let enableReward = false - if (Number(logAmount(userReward, decimals, 3)) >= 0.001) { - enableReward = true - } - - return ( - { - this.setState({ dropDownBox: !dropDownBox, dropDownBoxInit: false }) } - } - > - {pageLoading ? ( - - - - ) : ( - - )} - - - {dropDownBox ? ( - - - - - - )} - {getLink({ description: proposal.description }) && ( - - More details - - )} - - - - - - ) -} - - -export default React.memo(ListProposal) diff --git a/packages/boba/gateway/src/components/listProposal/listProposal.styles.js b/packages/boba/gateway/src/components/listProposal/listProposal.styles.js deleted file mode 100644 index a32d5d4fcf..0000000000 --- a/packages/boba/gateway/src/components/listProposal/listProposal.styles.js +++ /dev/null @@ -1,66 +0,0 @@ -import styled, {css} from 'styled-components' -import { mobile } from 'themes/screens' - -export const Wrapper = styled.div` - border: 1px solid ${(props)=> props.theme.colors.box.border}; - border-radius: 12px; - background: ${(props)=> props.theme.colors.box.background}; - - padding: 20px 10px; - -` - -export const GridContainer = styled.div` - ${mobile(css` - justify-content: flex-start; - `)} -` - -export const GridItemTag = styled.div` - display: flex; - flex-direction: column; - justify-content: center; - align-items: flex-start; -` - -export const GridItemTagR = styled.div` - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: flex-start; - width: 100%; - margin: 8px; - padding-right: 8px; -` - -export const DropdownWrapper = styled.div` - display: flex; - align-items: center; - justify-content: center; - gap: 5px; - width: 100%; - padding: 6px; - margin-top: 10px; - background-color: ${props => props.theme.palette.background.secondary}; - border-radius: 4px; - text-align: center; -`; - -export const DropdownContent = styled.div` - width: 100%; - display: flex; - justify-content: space-between; - ${mobile(css` - padding:15px; - `)} - -` - -export const ItemHeaderContainer = styled.div` - display: flex; - align-items: center; - width: 100%; - cursor: pointer; - text-align: left; - padding-left: 8px; -` diff --git a/packages/boba/gateway/src/components/mainMenu/MainMenu.styles.js b/packages/boba/gateway/src/components/mainMenu/MainMenu.styles.js deleted file mode 100644 index da96b93195..0000000000 --- a/packages/boba/gateway/src/components/mainMenu/MainMenu.styles.js +++ /dev/null @@ -1,51 +0,0 @@ - -import { Box } from '@mui/material' -import { styled } from '@mui/system' - -export const Menu = styled('div')({ - display: 'flex', - width: '100%', - height: '100px', - gap: '20px', - justifyContent: 'flex-start', - alignItems: 'center', - paddingTop: '20px', - paddingLeft: '20px', - paddingBottom: '20px', -}) - -export const MobileNavTag = styled(Box)` - width: 100%; - display: flex; - gap: 20px; - align-items: center; - justify-content: space-between; -`; - -export const StyleDrawer = styled(Box)` - background-color: ${(props) => props.theme.palette.mode === 'light' ? 'white' : '#061122'}; - height: 100%; -`; - -export const DrawerHeader = styled(Box)` - display: flex; - flex-direction: column; - gap: 30px; - padding: 40px 40px 20px 40px; -`; - -export const WrapperCloseIcon = styled(Box)` - display: flex; - justify-content: space-between; - align-items: center; -`; - -export const MenuWrapper = styled(Box)(({ theme }) => ({ - display: 'flex', - justifyContent: 'center', - alignItems: 'flex-start', - flexDirection: 'column', - borderRight: 'solid white', - borderWidth: '1px', - paddingRight: '10px', -})) diff --git a/packages/boba/gateway/src/components/mainMenu/feeSwitcher/FeeSwitcher.js b/packages/boba/gateway/src/components/mainMenu/feeSwitcher/FeeSwitcher.js deleted file mode 100644 index f4d8e69bf4..0000000000 --- a/packages/boba/gateway/src/components/mainMenu/feeSwitcher/FeeSwitcher.js +++ /dev/null @@ -1,171 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React, { useCallback } from 'react' -import { useDispatch, useSelector } from 'react-redux' -import { openError, openAlert } from 'actions/uiAction' - -import { - selectAccountEnabled, - selectBobaFeeChoice, - selectLayer, - selectlayer2Balance, - selectActiveNetworkName -} from 'selectors' - - -import { switchFee } from 'actions/setupAction.js' - -import * as S from './FeeSwitcher.styles.js' -import Select from 'components/select/Select' -import Tooltip from 'components/tooltip/Tooltip' -import { isEqual } from 'util/lodash'; - -import BN from 'bignumber.js' -import { logAmount } from 'util/amountConvert.js' -import networkService from 'services/networkService.js' - -import {FeeSwitcherIcon, FeeSwitcherLabel} from "./FeeSwitcher.styles.js"; - - -function FeeSwitcher() { - const dispatch = useDispatch() - const accountEnabled = useSelector(selectAccountEnabled()) - const feeUseBoba = useSelector(selectBobaFeeChoice()) - - const networkName = useSelector(selectActiveNetworkName()) - - const layer = useSelector(selectLayer()) - - const l2Balances = useSelector(selectlayer2Balance, isEqual) - - const l2BalanceNativeToken = l2Balances.filter((i) => i.symbol === networkService.L1NativeTokenSymbol) - const balanceETH = l2BalanceNativeToken[ 0 ] - const l2BalanceBOBA = l2Balances.filter((i) => i.symbol === 'BOBA') - const balanceBOBA = l2BalanceBOBA[0] - - const dispatchSwitchFee = useCallback( - async (targetFee) => { - let tooSmallL1NativeToken = false - // mini balance required for token to use as bridge fee - let minL1NativeBalance = await networkService.estimateMinL1NativeTokenForFee() //0.002 - let tooSmallBOBA = false - - if (typeof balanceBOBA === 'undefined') { - tooSmallBOBA = true - } else { - //check actual balance - tooSmallBOBA = new BN(logAmount(balanceBOBA.balance, 18)).lt(new BN(1)) - } - - if (typeof balanceETH === 'undefined') { - tooSmallL1NativeToken = true - } else { - //check actual balance - tooSmallL1NativeToken = new BN(logAmount(balanceETH.balance, 18)).lt( - new BN(minL1NativeBalance) - ) - } - - if (!balanceBOBA && !balanceETH) { - dispatch( - openError('Wallet empty - please bridge in ETH or BOBA from L1') - ) - return - } - - let res - - if (feeUseBoba && targetFee === 'BOBA') { - // do nothing - already set to BOBA - } else if ( - !feeUseBoba && - targetFee === networkService.L1NativeTokenSymbol - ) { - // do nothing - already set to ETH - } else if (!feeUseBoba && targetFee === 'BOBA') { - // change to BOBA - if (tooSmallBOBA) { - dispatch( - openError(`You cannot change the fee token to BOBA since your BOBA balance is below 1 BOBA. - If you change fee token now, you might get stuck. Please swap some ETH for BOBA first.`) - ) - } else { - res = await dispatch(switchFee(targetFee)) - } - } else if ( - feeUseBoba && - targetFee === networkService.L1NativeTokenSymbol - ) { - // change to L1Native Token - if (tooSmallL1NativeToken) { - dispatch( - openError(`You cannot change the fee token to ${networkService.L1NativeTokenSymbol} since your ${networkService.L1NativeTokenSymbol} balance is below ${minL1NativeBalance}. - If you change fee token now, you might get stuck. Please obtain some ${networkService.L1NativeTokenSymbol} first.`) - ) - } else { - res = await dispatch(switchFee(targetFee)) - } - } - - if (res) { - dispatch(openAlert(`Successfully changed fee to ${targetFee}`)) - } - }, - [dispatch, feeUseBoba, balanceETH, balanceBOBA] - ) - - if (!accountEnabled && layer !== 'L2') { - return ( - - - - - Fee - - ) - } - - return ( - - - - - Fee - { - console.log('e', e) - setSelectedState(e) - }} - sx={{ marginBottom: '20px' }} - value={selectedState} - > - - - - {!!loading && !proposals.length ? Loading... : null} - {proposals - // eslint-disable-next-line array-callback-return - .filter((p) => { - if (selectedState.value === 'All') { - return true; - } - return selectedState.value === p.state; - }) - .map((p, index) => { - return - - - })} - - - - ) -} - -export default React.memo(DAO) diff --git a/packages/boba/gateway/src/containers/VoteAndDao/Dao/Dao.styles.js b/packages/boba/gateway/src/containers/VoteAndDao/Dao/Dao.styles.js deleted file mode 100644 index d0824e057d..0000000000 --- a/packages/boba/gateway/src/containers/VoteAndDao/Dao/Dao.styles.js +++ /dev/null @@ -1,95 +0,0 @@ -import { styled } from '@mui/material/styles' -import { Box } from "@mui/material" - -export const DaoPageContainer = styled(Box)(({ theme }) => ({ - margin: '0px auto', - display: 'flex', - flexDirection: 'column', - justifyContent: 'space-around', - padding: '10px', - paddingTop: '0px', - width: '70%', - gap: '10px', - [theme.breakpoints.between('md', 'lg')]: { - width: '90%', - padding: '0px', - }, - [theme.breakpoints.between('sm', 'md')]: { - width: '90%', - padding: '0px', - }, - [theme.breakpoints.down('sm')]: { - width: '100%', - padding: '0px', - }, - -})); - -export const DaoPageContent = styled(Box)(({ theme }) => ({ - display: 'flex', - flexDirection: 'row', - justifyContent: 'center', - alignItems: 'flex-start', - paddingTop: '0px', - gap: '10px', - [theme.breakpoints.down('sm')]: { - flexDirection: 'column' - }, -})); - -export const DaoWalletContainer = styled(Box)(({ theme }) => ({ - display: 'flex', - flexDirection: 'column', - padding: '0px 20px', - minHeight: '700px', - width: '30%', - gap: '10px', - borderRadius: theme.palette.primary.borderRadius, - background: theme.palette.background.glassy, - [theme.breakpoints.down('sm')]: { - width: '100%', - }, -})); - -export const DaoProposalContainer = styled(Box)(({ theme }) => ({ - width: '70%', - display: 'flex', - flexDirection: 'column', - justifyContent: 'flex-start', - padding: '0 32px', - minHeight: '500px', - borderRadius: theme.palette.primary.borderRadius, - background: theme.palette.background.glassy, - [theme.breakpoints.down('sm')]: { - width: '100%', - padding: '0 20px', - }, -})); - -export const DaoProposalHead = styled(Box)(({ theme }) => ({ - display: 'flex', - alignItems: 'center', - alignSelf: 'flex-start', - justifyContent: 'space-between', - padding: '15px 0px', - width: '100%', - margin: '5px', - [theme.breakpoints.down('sm')]: { - padding: '0px', - }, -})) - -export const DaoProposalListContainer = styled(Box)(({ theme }) => ({ - overflowY: 'auto', - margin: '10px auto', - borderRadius: '8px', - padding: '20px 10px', - width: '100%', - height: '600px', - '.loadingContainer' : { - padding: '10px auto', - }, - [theme.breakpoints.down('sm')]: { - padding: '0px', - }, -})) diff --git a/packages/boba/gateway/src/containers/VoteAndDao/Vote/Pools/poolList.js b/packages/boba/gateway/src/containers/VoteAndDao/Vote/Pools/poolList.js deleted file mode 100644 index ae6b4c7909..0000000000 --- a/packages/boba/gateway/src/containers/VoteAndDao/Vote/Pools/poolList.js +++ /dev/null @@ -1,83 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React, { useState } from 'react' - -import { poolsTableHeads } from './pools.tableHeads' - -import * as G from 'containers/Global.styles' -import PoolListItem from './poolListItem' -import { Pager } from 'components' -import { PER_PAGE } from 'util/constant' -import { useSelector } from 'react-redux' -import { selectPools, selectLoading } from 'selectors' -import { Typography } from '@mui/material' - - -function PoolList({ onPoolVoteChange, token, onDistribute }) { - - const [ page, setPage ] = useState(1) - - const loading = useSelector(selectLoading([ 'VOTE/POOLS' ])) - const pools = useSelector(selectPools) - - // pagination logic - const startingIndex = page === 1 ? 0 : ((page - 1) * PER_PAGE) - const endingIndex = page * PER_PAGE - const paginatedPools = pools.slice(startingIndex, endingIndex) - let totalNumberOfPages = Math.ceil(pools.length / PER_PAGE) - if (totalNumberOfPages === 0) totalNumberOfPages = 1 - - return - - { - poolsTableHeads.map((item) => { - return ( - {item.label} - - ) - }) - } - - {loading && Loading...} - {paginatedPools.map((pool) => { - return - - - })} - setPage(page + 1)} - onClickBack={() => setPage(page - 1)} - /> - -} - -export default PoolList; diff --git a/packages/boba/gateway/src/containers/VoteAndDao/Vote/Pools/poolListItem.js b/packages/boba/gateway/src/containers/VoteAndDao/Vote/Pools/poolListItem.js deleted file mode 100644 index 88de76bbdd..0000000000 --- a/packages/boba/gateway/src/containers/VoteAndDao/Vote/Pools/poolListItem.js +++ /dev/null @@ -1,146 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React, { useEffect, useState } from 'react' -import { Box, Typography, Slider, styled } from '@mui/material' - -import Button from 'components/button/Button' -import bobaLogo from 'assets/images/boba-token.svg' - -import * as G from 'containers/Global.styles' - -// styled component -const ListItemContent = styled(Box)(({ theme }) => ({ - display: 'flex', - flexDirection: 'column', - gap: '20px', - width: '100%', - padding: '10px', - borderBottom: theme.palette.primary.borderBottom -})) - - -function PoolListItem({ - pool, - onPoolVoteChange, - token, - onDistribute, -}) { - - const [ selectedVote, setSelectedVote ] = useState(0); - const [ myVote, setMyVote ] = useState({}); - - const handleVoteChange = (e, value) => { - setSelectedVote(value); - onPoolVoteChange(pool.poolId, value); - } - - useEffect(() => { - if (token) { - let tokenUsed = pool.usedTokens.find((t) => t.tokenId === token.tokenId); - if (tokenUsed) { - let tokenBalance = Number(token.balance); - let poolVote = Number(tokenUsed.vote); - let votePercent = Number((poolVote / tokenBalance) * 100); - setMyVote({ - value: poolVote.toFixed(2), - votePercent, - }) - setSelectedVote(votePercent) - } else { - setSelectedVote(0) - setMyVote({}) - } - } - - }, [ token, pool ]); - - return - - - boba logo - - - {pool.name} - - - {pool.description} - - - - - - - {pool.totalVotes} - - - {pool.votePercentage.toFixed(2)}% - - - - - - - {myVote.value || 0} - - - {myVote.votePercent || 0}% - - - - - - - {selectedVote.toFixed(2)}% - - - - - - - - - - - -} - -export default PoolListItem; diff --git a/packages/boba/gateway/src/containers/VoteAndDao/Vote/Pools/pools.tableHeads.js b/packages/boba/gateway/src/containers/VoteAndDao/Vote/Pools/pools.tableHeads.js deleted file mode 100644 index 7d4d1d7eb4..0000000000 --- a/packages/boba/gateway/src/containers/VoteAndDao/Vote/Pools/pools.tableHeads.js +++ /dev/null @@ -1,39 +0,0 @@ -export const poolsTableHeads = [ - { - label: 'WAGMI Pools', - isSort: false, - size: '20%', - flex: 1, - }, - { - label: 'Total Votes', - isSort: false, - size: '20%', - flex: 1, - }, - { - label: 'My Votes', - isSort: false, - size: '20%', - flex: 1, - }, - { - label: 'My Vote%', - isSort: false, - size: '30%', - flex: 2, - sx: { - textAlign: 'center' - } - } - , - { - label: 'Action', - isSort: false, - size: '10%', - flex: 1, - sx: { - textAlign: 'center' - } - } -] diff --git a/packages/boba/gateway/src/containers/VoteAndDao/Vote/VeNfts/VeNfts.list.js b/packages/boba/gateway/src/containers/VoteAndDao/Vote/VeNfts/VeNfts.list.js deleted file mode 100644 index cd0bb99e52..0000000000 --- a/packages/boba/gateway/src/containers/VoteAndDao/Vote/VeNfts/VeNfts.list.js +++ /dev/null @@ -1,79 +0,0 @@ -import React from 'react' -import { Box, styled, Typography } from '@mui/material' -import CheckMarkIcon from '@mui/icons-material/CheckCircleOutline' - -import Carousel from 'react-multi-carousel' -import "react-multi-carousel/lib/styles.css"; - -import BobaNFTGlass from 'assets/images/boba2/BobaNFTGlass.svg' - -import * as G from 'containers/Global.styles' - -const NftContainer = styled(Box)(({ theme, active }) => ({ - display: 'flex', - justifyContent: 'flex-start', - alignItems: 'center', - background: active ? theme.palette.background.secondary : theme.palette.background.default, - borderRadius: theme.palette.primary.borderRadius, - border: theme.palette.primary.border, - cursor: 'pointer' -})) - -const responsive = { - superLargeDesktop: { - // the naming can be any, depends on you. - breakpoint: { max: 4000, min: 3000 }, - items: 5 - }, - desktop: { - breakpoint: { max: 3000, min: 1024 }, - items: 5 - }, - tablet: { - breakpoint: { max: 1024, min: 464 }, - items: 4 - }, - mobile: { - breakpoint: { max: 464, min: 0 }, - items: 2 - } -}; - - -const VeNftsList = ({ nftRecords, selectedNft, onSelectNft }) => { - - return - {nftRecords.map((nft) => { - return { onSelectNft(nft) }} - > - {nft.tokenId === selectedNft?.tokenId ? - : null} - - {nft.tokenId} - - - #{nft.tokenId} - {nft.balance.toFixed(2)} veBoba - - - })} - -} - -export default React.memo(VeNftsList) diff --git a/packages/boba/gateway/src/containers/VoteAndDao/Vote/Vote.js b/packages/boba/gateway/src/containers/VoteAndDao/Vote/Vote.js deleted file mode 100644 index b3aa233566..0000000000 --- a/packages/boba/gateway/src/containers/VoteAndDao/Vote/Vote.js +++ /dev/null @@ -1,183 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React, { useEffect, useState } from 'react' -import { useDispatch, useSelector } from 'react-redux' - -import { Box, styled, Typography } from '@mui/material' - -import Button from 'components/button/Button' - -import { openAlert } from 'actions/uiAction' - -import { - fetchLockRecords, - fetchPools, - onDistributePool, - onSavePoolVote -} from 'actions/veBobaAction' - -import { selectAccountEnabled, selectLayer,selectLockRecords, selectPools } from 'selectors' - -import { ContentEmpty } from 'containers/Global.styles' - -import PoolList from './Pools/poolList' -import VeNftsList from './VeNfts/VeNfts.list'; - - -// styled component -const Action = styled(Box)({ - display: 'flex', - width: '100%', - justifyContent: 'flex-end' -}); - - - -function Vote({ - connectToBOBA -}) { - const dispatch = useDispatch() - - const nftRecords = useSelector(selectLockRecords); - const accountEnabled = useSelector(selectAccountEnabled()) - const layer = useSelector(selectLayer()) - const pools = useSelector(selectPools) - - const [ selectedNft, setSelectedNft ] = useState(null); - const [ poolsVote, setPoolsVote ] = useState({}); - const [ usedVotingPower, setUsedVotingPower ] = useState(0); - - const onPoolVoteChange = (poolId, value) => { - setPoolsVote({ - ...poolsVote, - [ poolId ]: value - }) - } - - const onVote = async () => { - const res = await dispatch(onSavePoolVote({ - tokenId: selectedNft.tokenId, - pools: Object.keys(poolsVote), - weights: Object.values(poolsVote), - })) - if (res) { - setSelectedNft(null) - dispatch(fetchLockRecords()); - dispatch(fetchPools()); - dispatch( - openAlert(`Vote has been submitted successfully!`) - ) - } - } - - const onDistribute = async (gaugeAddress) => { - const res = await dispatch(onDistributePool({ - gaugeAddress - })) - - if (res) { - dispatch(fetchPools()); - dispatch(fetchLockRecords()); - dispatch( - openAlert(`Pool has been distributed successfully!`) - ) - } - } - - useEffect(() => { - if (selectedNft && pools.length > 0) { - let usedVotes = {}; - pools.forEach((pool) => { - let tokenUsed = pool.usedTokens.find((t) => t.tokenId === selectedNft.tokenId) - if (tokenUsed) { - let nftBalance = parseInt(selectedNft.balance); - let poolVote = Number(tokenUsed.vote); - let votePercent = parseInt((poolVote / nftBalance) * 100); - - usedVotes = { - ...usedVotes, - [pool.poolId]: votePercent - } - } - }) - setPoolsVote(usedVotes) - } - }, [ selectedNft, pools ]); - - useEffect(() => { - if (Object.keys(poolsVote).length > 0) { - let powerSum = Object.values(poolsVote).reduce((s, a) => s + a, 0); - setUsedVotingPower(parseInt(powerSum)) - } - },[poolsVote]) - - useEffect(() => { - if (!!accountEnabled && layer === 'L2') { - dispatch(fetchLockRecords()); - dispatch(fetchPools()); - } - }, [ accountEnabled, dispatch, layer ]); - - return <> - - Please select a govBoba to vote - { - !nftRecords.length - ? - Oh! You don't have veBoba NFT, Please go to Lock to get them. - - : - } - - - {(!accountEnabled || layer !== 'L2') ? - - : - {selectedNft && Selected #{selectedNft.tokenId}, Voting power used {usedVotingPower} %} - - - } - - - -} - -export default React.memo(Vote) diff --git a/packages/boba/gateway/src/containers/VoteAndDao/index.js b/packages/boba/gateway/src/containers/VoteAndDao/index.js deleted file mode 100644 index b0f4637e82..0000000000 --- a/packages/boba/gateway/src/containers/VoteAndDao/index.js +++ /dev/null @@ -1,106 +0,0 @@ -import React, { useEffect, useState } from 'react' -import { Box, Typography } from '@mui/material' - -import * as S from './Dao/Dao.styles'; -import * as G from '../Global.styles' -import {PageTitle} from 'components' -import Tabs from 'components/tabs/Tabs'; -import { useDispatch, useSelector } from 'react-redux'; -import { selectLockRecords, selectAccountEnabled, selectLayer } from 'selectors'; -import { fetchLockRecords } from 'actions/veBobaAction'; -import Vote from './Vote/Vote'; -import Dao from './Dao/Dao'; -import { setConnectBOBA } from 'actions/setupAction'; - -const DAO_TABS = { - VOTE: "Liquidity Bootstrapping", - PROPOSAL: "Proposals", -} - -function VoteAndDAO() { - - const [ page, setPage ] = useState(DAO_TABS.VOTE); - const [ balance, setBalance ] = useState('--'); - - const dispatch = useDispatch() - const nftRecords = useSelector(selectLockRecords); - const accountEnabled = useSelector(selectAccountEnabled()) - const layer = useSelector(selectLayer()) - - - async function connectToBOBA() { - dispatch(setConnectBOBA(true)) - } - - useEffect(() => { - if (!!accountEnabled && layer === 'L2') { - dispatch(fetchLockRecords()); - } - }, [ accountEnabled, dispatch, layer ]); - - useEffect(() => { - if (!!accountEnabled) { - const veBoba = nftRecords.reduce((s, record) => s + Number(record.balance), 0); - setBalance(veBoba.toFixed(2)) - } - }, [ accountEnabled, nftRecords ]); - - const veNftDisclaimer = () => { - if (page !== DAO_TABS.VOTE) { - return null; - } - - return ( - - Votes are due by Wednesday at 23:59 UTC, when the next epoch begins. Each veNFT can only cast votes once per epoch. Your vote will allocate 100% of that veNFT's vote-power. Each veNFT's votes will carry over into the next epoch. However, you must resubmit each veNFT's vote in each epoch to earn the bribes placed in that epoch. Voters will earn bribes no matter when in the epoch the bribes are added. - - - For details refer to our Docs - - ) - } - - const handlePageChange = (type) => { - if (DAO_TABS.VOTE === type) { - setPage(DAO_TABS.VOTE) - } else if (DAO_TABS.PROPOSAL === type) { - setPage(DAO_TABS.PROPOSAL) - } - } - - return - - {/* page hero section */} - - - My total voting power - {balance} - govBOBA - - {veNftDisclaimer()} - - - {/* page tabs section */} - - handlePageChange(t)} - aria-label="Page Tab" - tabs={[ DAO_TABS.VOTE, DAO_TABS.PROPOSAL ]} - /> - - {/* page content section */} - {DAO_TABS.VOTE === page ? - - : } - - - -} - - -export default React.memo(VoteAndDAO); diff --git a/packages/boba/gateway/src/containers/bobaScope/BobaScope.js b/packages/boba/gateway/src/containers/bobaScope/BobaScope.js deleted file mode 100644 index 648bf5aba7..0000000000 --- a/packages/boba/gateway/src/containers/bobaScope/BobaScope.js +++ /dev/null @@ -1,103 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React, { useEffect, useState } from 'react' -import { useDispatch } from 'react-redux' -import { isEqual, orderBy } from 'util/lodash'; - - -import { useSelector } from 'react-redux' - -import "react-datepicker/dist/react-datepicker.css" - -import { setActiveDataTab } from 'actions/uiAction' -import { fetchSevens, fetchFastExits } from 'actions/networkAction' - -import { selectBaseEnabled, selectActiveDataTab, selectSevens, selectFastExits } from 'selectors' - -import Tabs from 'components/tabs/Tabs' - -import Sevens from './Sevens' -import FastExits from './FastExits' - -import useInterval from 'hooks/useInterval' - -import { POLL_INTERVAL } from 'util/constant' -import {Header, BobaScopeContainer, ContentContainer} from './styles' -import { TabComponent } from 'components/global/tabs'; -import { SearchInput } from 'components/global/searchInput'; - -function BobaScope() { - - const dispatch = useDispatch() - - const [ searchData, setSearchData ] = useState('') - - const activeTab = useSelector(selectActiveDataTab, isEqual) - const baseEnabled = useSelector(selectBaseEnabled()) - - const unorderedSevens = useSelector(selectSevens, isEqual) - const orderedSevens = orderBy(unorderedSevens, i => i.timeStamp, 'desc') - const sevens = orderedSevens - - const unorderedFastExits = useSelector(selectFastExits, isEqual) - const orderedFastExits = orderBy(unorderedFastExits, i => i.timeStamp, 'desc') - const fastExits = orderedFastExits - - useEffect(() => { - if (baseEnabled) { - dispatch(fetchSevens()) - dispatch(fetchFastExits()) - } - }, [ dispatch, baseEnabled ]) - - useInterval(() => { - if (baseEnabled) { - dispatch(fetchSevens()) - dispatch(fetchFastExits()) - } - }, POLL_INTERVAL) - - return ( - -
- { setSearchData(i.target.value) }}/> -
- - ) - }, - {label:"Fast Exits", - content:( ) - } - ]} - /> - -
- ); -} - -export default React.memo(BobaScope) diff --git a/packages/boba/gateway/src/containers/bobaScope/FastExits.js b/packages/boba/gateway/src/containers/bobaScope/FastExits.js deleted file mode 100644 index 99987ac957..0000000000 --- a/packages/boba/gateway/src/containers/bobaScope/FastExits.js +++ /dev/null @@ -1,97 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React, { useState, useEffect } from 'react' -import { Grid, Box } from '@mui/material' -import { useSelector } from 'react-redux' -import { formatDate } from 'util/dates' - -import { selectLoading } from 'selectors' -import { Pager } from 'components' -import FastExit from 'components/seven/FastExit' - -import { Svg } from 'components/global/svg' -import noHistoryIcon from 'assets/images/noHistory.svg' -import { HistoryContainer, Content, Disclaimer } from './styles' -import { Typography } from 'components/global' - -const PER_PAGE = 6 - -function FastExits({ searchData, data }) { - - const [ page, setPage ] = useState(1) - - const loading = useSelector(selectLoading([ 'FASTEXITS/GETALL' ])) - - useEffect(() => { setPage(1) }, [ searchData ]) - - const _data = data.filter(i => { - return i.hash.includes(searchData) && i.to !== null - }) - - const startingIndex = page === 1 ? 0 : ((page - 1) * PER_PAGE) - const endingIndex = page * PER_PAGE - const paginatedData = _data.slice(startingIndex, endingIndex) - - let totalNumberOfPages = Math.ceil(_data.length / PER_PAGE) - - //if totalNumberOfPages === 0, set to one so we don't get the strange "page 1 of 0" display - if (totalNumberOfPages === 0) totalNumberOfPages = 1 - - return ( - - setPage(page + 1)} - onClickBack={() => setPage(page - 1)} - /> - - - - - {!paginatedData.length && !loading && ( - - - No Pending fast exits. - - )} - {!paginatedData.length && loading && ( - - - Loading pending fast exits... - - )} - {paginatedData.map((i, index) => { - return ( - - ) - })} - - - - - ); -} - -export default React.memo(FastExits) diff --git a/packages/boba/gateway/src/containers/bobaScope/Sevens.js b/packages/boba/gateway/src/containers/bobaScope/Sevens.js deleted file mode 100644 index b60b50d675..0000000000 --- a/packages/boba/gateway/src/containers/bobaScope/Sevens.js +++ /dev/null @@ -1,96 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React, { useState, useEffect } from 'react' -import { Grid, Box } from '@mui/material' -import { useSelector } from 'react-redux' -import {formatDate} from 'util/dates' - -import { selectLoading } from 'selectors' -import { Pager } from 'components' -import Seven from 'components/seven/Seven' -import { Svg } from 'components/global/svg' -import noHistoryIcon from 'assets/images/noHistory.svg' -import { HistoryContainer, Content, Disclaimer } from './styles' -import { Typography } from 'components/global' - -const PER_PAGE = 6 - -function Sevens({ searchData, sevens }) { - - const [page, setPage] = useState(1) - - const loading = useSelector(selectLoading(['SEVENS/GETALL'])) - - useEffect(() => {setPage(1)}, [searchData]) - - const _sevens = sevens.filter(i => { - return i.hash.includes(searchData) && i.to !== null - }) - - const startingIndex = page === 1 ? 0 : ((page - 1) * PER_PAGE) - const endingIndex = page * PER_PAGE - const paginatedSevens = _sevens.slice(startingIndex, endingIndex) - - let totalNumberOfPages = Math.ceil(_sevens.length / PER_PAGE); - - //if totalNumberOfPages === 0, set to one so we don't get the strange "page 1 of 0" display - if (totalNumberOfPages === 0) totalNumberOfPages = 1 - - return ( - - setPage(page + 1)} - onClickBack={()=>setPage(page - 1)} - /> - - - - - {!paginatedSevens.length && !loading && ( - - - No Pending 7 day exits. - - )} - {!paginatedSevens.length && loading && ( - - - Loading pending 7 day exits... - - )} - {paginatedSevens.map((i, index) => { - return ( - - ) - })} - - - - - ); -} - -export default React.memo(Sevens) diff --git a/packages/boba/gateway/src/containers/bobaScope/styles.ts b/packages/boba/gateway/src/containers/bobaScope/styles.ts deleted file mode 100644 index af01160bac..0000000000 --- a/packages/boba/gateway/src/containers/bobaScope/styles.ts +++ /dev/null @@ -1,74 +0,0 @@ -import styled, { css } from 'styled-components' - -export const HistoryContainer = styled.div` - border-radius: 8px; - margin-bottom: 20px; -` - -export const Header = styled.div` - display: flex; - flex-direction: row; - justify-content: space-between; - align-items: center; - margin-bottom: 20px; -` - -export const BobaScopeContainer = styled.div` - margin: 0px auto; - display: flex; - flex-direction: column; - justify-content: space-around; - padding: 10px; - width: 70%; -` - -export const ContentContainer = styled.div` - display: flex; - flex-direction: column; - width: 100%; -` - -export const Content = styled.div` - display: flex; - flex-direction: column; - gap: 10px; - margin-bottom: 10px; - border-radius: 6px; -` - -export const Disclaimer = styled.div` - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - margin-left: auto; - margin-right: auto; - padding: 20px; - padding-top: 10%; - font-size: 16px; - gap: 10px; - - ${(props) => - props.theme.name === 'light' && - css` - color: ${props.theme.colors.gray[700]}; - `} - ${(props) => - props.theme.name === 'dark' && - css` - color: ${props.theme.colors.gray[100]}; - `} - - svg { - ${(props) => - props.theme.name === 'light' && - css` - fill: ${props.theme.colors.gray[700]}; - `} - ${(props) => - props.theme.name === 'dark' && - css` - fill: ${props.theme.colors.gray[100]}; - `} - } -` diff --git a/packages/boba/gateway/src/containers/connect/Connect.js b/packages/boba/gateway/src/containers/connect/Connect.js deleted file mode 100644 index ce6660cf96..0000000000 --- a/packages/boba/gateway/src/containers/connect/Connect.js +++ /dev/null @@ -1,55 +0,0 @@ -import React from 'react' -import * as G from '../Global.styles' - -import { useDispatch } from 'react-redux' -import AlertIcon from 'components/icons/AlertIcon' -import {Button} from 'components/global/button' - -import { setConnectBOBA, setConnect } from 'actions/setupAction' - -const Connect = ({ - userPrompt, - accountEnabled, - connectToBoba = false, - layer = '', -}) => { - const dispatch = useDispatch() - - if (!accountEnabled && !connectToBoba) { - return ( - - - - - {userPrompt} - - - - - {contractMethos.length > 0 && ( - - Methods - {contractMethos.map((method, methodIndex) => { - const functionName = method.key - const stateMutability = method.value.stateMutability - const inputs = method.value.inputs - const inputStyle = {borderWidth: 0, borderRadius: 0, padding: '5px 0px', backgroundColor: 'transparent'} - const TxResult = TxBuilderResult[methodIndex] || {} - return ( - - - {`${functionName} ${stateMutability}`} - {inputs.length > 0 && inputs.map((input, inputIndex) => { - return ( - updateContractInput(methodIndex, inputIndex, i.target.value)} - fullWidth - sx={{fontSize: '50px'}} - newStyle - key={inputIndex} - style={inputStyle} - /> - ) - })} - {stateMutability === 'payable' && ( - updateContractInput(methodIndex, inputs.length, i.target.value)} - fullWidth - sx={{fontSize: '50px'}} - newStyle - style={inputStyle} - /> - )} - {(typeof TxResult.err !== 'undefined' || typeof TxResult.result !== 'undefined' || typeof TxResult.result !== 'undefined') && ( - - {TxResult.err && {TxResult.err}} - {TxResult.result && {TxResult.result}} - {TxResult.transactionHash && - - Succeeded! - - - } - - )} - - - - - - ) - })} - - )} - - - ) -} - -export default TxBuilder; diff --git a/packages/boba/gateway/src/containers/devtools/TxBuilder.styles.js b/packages/boba/gateway/src/containers/devtools/TxBuilder.styles.js deleted file mode 100644 index 090e003bdd..0000000000 --- a/packages/boba/gateway/src/containers/devtools/TxBuilder.styles.js +++ /dev/null @@ -1,52 +0,0 @@ -import { Box } from '@mui/material'; -import { styled } from '@mui/material/styles'; - -export const TxBuilderWrapper = styled(Box)(({ theme }) => ({ - background: theme.palette.background.secondary, - backdropFilter: 'blur(100px)', - borderRadius: theme.palette.primary.borderRadius, - border: theme.palette.primary.border, - flex: 1, - minHeight: 'fit-content', - padding: '20px', - width: '100%', -})) - -export const Wrapper = styled(Box)(({ theme }) => ({ - display: 'flex', - flexDirection: 'column', - marginTop: 20, - marginBottom: 20, - width: '100%', -})) - -export const ButtonWrapper = styled(Box)(({ theme }) => ({ - display: 'flex', - justifyContent: 'flex-end', -})) - -export const MethodsWrapper = styled(Box)(({ theme }) => ({ - display: 'flex', - flexDirection: 'column', - marginBottom: 20, - width: '100%', -})) - -export const InputWrapper = styled(Box)(({ theme }) => ({ - marginTop: 20, - marginBottom: 20, - padding: 20, - borderRadius: theme.palette.primary.borderRadius, - border: theme.palette.primary.border, - backgroundColor: theme.palette.background.input, -})) - -export const TxResultWrapper = styled(Box)(({ theme }) => ({ - marginTop: 20, - marginBottom: 10, -})) - -export const TxSuccessWrapper = styled(Box)(({ theme }) => ({ - display: 'flex', - alignItems: 'center', -})) diff --git a/packages/boba/gateway/src/containers/earn/Earn.js b/packages/boba/gateway/src/containers/earn/Earn.js deleted file mode 100644 index d8c6e999b1..0000000000 --- a/packages/boba/gateway/src/containers/earn/Earn.js +++ /dev/null @@ -1,215 +0,0 @@ -/* - Utility Functions for OMG Plasma - Copyright (C) 2021 Enya Inc. Palo Alto, CA - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -import React, { useState, useEffect } from 'react' -import { useDispatch, useSelector } from 'react-redux'; - -import { HelpOutline } from '@mui/icons-material' - -import { - selectUserInfo, - selectPoolInfo, - selectlayer1Balance, - selectlayer2Balance, - selectBaseEnabled, - selectAccountEnabled, - selectLayer, - selectActiveNetworkName -} from 'selectors' - -import { getEarnInfo } from 'actions/earnAction' - -import Connect from 'containers/connect/Connect' - -import ListEarn from 'components/listEarn/ListEarn' -import AlertIcon from 'components/icons/AlertIcon' -import Tooltip from 'components/tooltip/Tooltip'; -import LayerSwitcher from 'components/mainMenu/layerSwitcher/LayerSwitcher' - -import networkService from 'services/networkService' - -import * as S from './styles' -import { fetchBalances } from 'actions/networkAction'; - -import { TableHeader } from 'components/global/table' -import { CheckboxWithLabel } from 'components/global/checkbox' -import { tableHeaderOptions } from './consts' -import { Typography } from 'components/global/typography' -import { toLayer } from './types' - -import { BridgeTooltip } from './tooltips' - -const Earn = () => { - const dispatch = useDispatch(); - - const activeNetworkName = useSelector(selectActiveNetworkName()) - const layer = useSelector(selectLayer()) - - const userInfo = useSelector(selectUserInfo()) - const poolInfo = useSelector(selectPoolInfo()) - - const layer1Balance = useSelector(selectlayer1Balance) - const layer2Balance = useSelector(selectlayer2Balance) - - const baseEnabled = useSelector(selectBaseEnabled()) - const accountEnabled = useSelector(selectAccountEnabled()) - - const [showMDO, setShowMDO] = useState(false) - const [showMSO, setShowMSO] = useState(false) - const [lpChoice, setLpChoice] = useState( - networkService.L1orL2 === 'L1' ? 'L1LP' : 'L2LP' - ) - - const isLp1 = lpChoice === 'L1LP'; - const isLp2 = lpChoice === 'L2LP'; - - const [poolTab, setPoolTab] = useState( - activeNetworkName[layer?.toLowerCase()] - ) - - useEffect(()=> { - setPoolTab(activeNetworkName[layer?.toLowerCase()]) - }, [layer, networkService]) - - - useEffect(() => { - if (baseEnabled) { - dispatch(getEarnInfo()) - } - - if (accountEnabled) { - dispatch(fetchBalances()) - } - }, [dispatch, baseEnabled, accountEnabled]) - - - const getBalance = (address, chain) => { - const tokens = - chain === 'L1' - ? Object.values(layer1Balance) - : chain === 'L2' - ? Object.values(layer2Balance) - : [] - const token = tokens.find(t => t.address.toLowerCase() === address.toLowerCase()) - return token ? [token.balance, token.decimals] : [0, 0] - } - - - const selectedPoolInfo = lpChoice === 'L1LP' ? poolInfo.L1LP : poolInfo.L2LP; - const selectedNetworkConfig = - lpChoice === 'L1LP' - ? networkService?.networkConfig?.L1?.chainIdHex - : networkService?.networkConfig?.L2?.chainIdHex - - useEffect(()=>{ - setLpChoice(networkService.L1orL2 === 'L1' ? 'L1LP' : 'L2LP') - },[networkService.L1orL2]) - - return ( - - - - - - Bridging fees are proportionally distributed to stakers. The bridges - are not farms. Your earnings only increase when someone uses the - bridge you have staked into. - - - }> - - - - {((layer === 'L2' && isLp1) || (layer === 'L1' && isLp2)) && ( - - - - - You are on {layer}. To transact on {toLayer[layer]}, SWITCH LAYER to {toLayer[layer]} - - - - - )} - -
- - - { - setLpChoice('L1LP') - setPoolTab(activeNetworkName['l1']) - }}> - {activeNetworkName['l1']} Pools - - { - setLpChoice('L2LP') - setPoolTab(activeNetworkName['l2']) - }}> - {activeNetworkName['l2']} Pools - - - - - setShowMSO(status)} - /> - - - - - - - {Object.keys(selectedPoolInfo).map((v, i) => { - const ret = getBalance(v, lpChoice === 'L1LP' ? 'L1' : 'L2'); - if (showMDO && Number(ret[0]) === 0) { - return null - } - return ( - - ); - })} - -
-
- ) -} - -export default React.memo(Earn); diff --git a/packages/boba/gateway/src/containers/earn/EarnWrapper.js b/packages/boba/gateway/src/containers/earn/EarnWrapper.js deleted file mode 100644 index 55ad52b047..0000000000 --- a/packages/boba/gateway/src/containers/earn/EarnWrapper.js +++ /dev/null @@ -1,10 +0,0 @@ -import { useMediaQuery, useTheme } from '@mui/material'; -import React from 'react'; -import Earn from './Earn'; - -const EarnWrapper = ({ ...rest }) => { - const theme = useTheme(); - const isMobile = useMediaQuery(theme.breakpoints.down('md')); - return ; -} -export default EarnWrapper; \ No newline at end of file diff --git a/packages/boba/gateway/src/containers/earn/consts.ts b/packages/boba/gateway/src/containers/earn/consts.ts deleted file mode 100644 index 8e6bfb24e7..0000000000 --- a/packages/boba/gateway/src/containers/earn/consts.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { tabSwitcherTypes } from './types' - -export const TabSwitcherEnum: tabSwitcherTypes = { - L1LP: { - name: 'L1LP', - tab: 'Ethereum Pool', - }, - L2LP: { - name: 'L2LP', - tab: 'Boba L2 Pool', - }, -} - -export const tableHeaderOptions = [ - { name: 'Token', width: 225 }, - { - name: 'Available Balance', - tooltip: - 'Available Balance refers to the amount of funds currently in each pool.', - width: 145, - }, - { - name: 'Total Staked', - tooltip: 'Total staked denotes the funds staked by liquidity providers.', - width: 115, - }, - { - name: 'APR', - tooltip: - 'The APR is the historical APR, which reflects the fees people paid to bridge and the previous usage patterns for each pool.', - width: 85, - }, - { name: 'Your Stake', width: 90 }, - { name: 'Earned', width: 110 }, - { name: 'Actions', width: 75 }, -] diff --git a/packages/boba/gateway/src/containers/earn/styles.ts b/packages/boba/gateway/src/containers/earn/styles.ts deleted file mode 100644 index 6378c5c6c5..0000000000 --- a/packages/boba/gateway/src/containers/earn/styles.ts +++ /dev/null @@ -1,153 +0,0 @@ -import styled, { css } from 'styled-components' -import { Typography } from 'components/global/typography' - -export const EarnPageContainer = styled.div` - margin: 0px auto; - display: flex; - flex-direction: column; - justify-content: space-around; - padding: 10px; - padding-top: 0px; - width: 1025px; -` - -export const TableHeading = styled.div` - padding: 20px, - border-radius: 6px 6px 0 0; - display: flex; - align-items: center; - background: ${(props) => props.theme.colors.box.background}; -` - -export const LayerAlert = styled.div` - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; - gap: 30px; - border-radius: 8px; - margin: 8px 0px; - padding: 10px; - background: ${(props) => props.theme.colors.box.background}; -` - -export const Help = styled.div` - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; - gap: 30px; - margin: 10px 0px; - padding: 10px; - border-radius: 8px; - background: ${(props) => props.theme.colors.box.background}; - ${({ theme: { name, colors } }) => css` - border: 1px solid ${name === 'light' ? colors.blue[200] : colors.blue[100]}; - background: ${name === 'light' ? colors.blue[50] : colors.blue[500]}; - color: ${name === 'light' ? colors.blue[500] : colors.blue[100]}; - `} -` - -export const AlertText = styled(Typography)` - margin-left: 10px; - flex: 4; -` - -export const AlertInfo = styled.div` - display: flex; - justify-content: space-around; - align-items: center; - flex: 1; -` - -export const Wrapper = styled.div` - border-radius: 8px; -` - -export const GridItemTagContainer = styled.div` - spacing: 2, - flex-direction: row; - justify-content: left; - align-items: center; -` - -export const GridItemTag = styled.div` - display: flex; - flex-direction: row; - align-items: center; - gap: 5px; -` - -export const EarnAction = styled.div` - display: flex; - justify-content: space-around; - align-items: center; -` - -export const EarnActionContainer = styled.div` - display: flex; - justify-content: space-between; - align-items: center; - margin: 10px 0px; -` - -export const EarnListContainer = styled.div` - display: flex; - flex-direction: column; - gap: 10px 0px; - padding: 10px 0px; -` - -export const BpIcon = styled.span` - border-radius: 3; - width: 16; - height: 16; -` - -export const PageSwitcher = styled.div` - width: fit-content; - padding: 3px; - cursor: pointer; - display: flex; - border-radius: 12px; - height: 48px; - span { - padding: 2px 15px; - font-weight: bold; - border-radius: 12px; - display: flex; - justify-content: center; - align-items: center; - &.active { - color: #031313; - background: #bae21a; - } - } -` - -export const TabSwitcherContainer = styled.div` - display: flex; - padding: 4px; - gap: 0px 15px; - border-radius: 8px; - ${({ theme: { colors, name } }) => - name === 'light' - ? css` - background: ${colors.gray[50]}; - ` - : css` - background: ${colors.gray[500]}; - `} -` - -export const Tab = styled.div<{ active: boolean }>` - padding: 8px 24px; - border-radius: 8px; - cursor: pointer; - ${(props) => - props.active && - ` - color:${props.theme.colors.gray[800]}; - background:${props.theme.colors.green[300]} - `} -` diff --git a/packages/boba/gateway/src/containers/earn/tooltips.tsx b/packages/boba/gateway/src/containers/earn/tooltips.tsx deleted file mode 100644 index 72ab532b85..0000000000 --- a/packages/boba/gateway/src/containers/earn/tooltips.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import React from 'react' -import { Typography } from 'components/global/typography' - -export const BridgeTooltip = () => ( - - Staking example. When you stake - 10 BOBA into the L2 pool, then the pool's liquidity and balance both - increase by 10 BOBA. -
-
- Fast Bridge example. When a user - bridges 10 BOBA from L1 to L2 using the fast bridge, they send 10 BOBA to - the L1 pool, increasing its balance by 10 BOBA. Next, 9.99 BOBA flow out - from the L2 pool to the user's L2 wallet, completing the bridge. Note that - bridge operations do not change the pool's liquidity, but only its balance. - The difference between what was deposited into the L1 pool (10 BOBA) and - what was sent to the user on the L2 (9.99 BOBA), equal to 0.01 BOBA, is sent - to the reward pool, for harvesting by stakers. -
-
- Pool rebalancing. In some - circumstances, excess balances can accumulate on one chain. For example, if - many people bridge from L1 to L2, then L1 pool balances will increase, while - L2 balances will decrease. When needed, the pool operator can rebalance the - pools, using 'classic' deposit and exit operations to move funds from one - pool to another. Rebalancing takes 7 days, due to the 7 day fraud proof - window, which also applies to the operator. -
-
- Dynamic fees. The pools use an - automatic supply-and-demand approach to setting the fees. When a pool's - liquidity is low, the fees are increased to attract more liquidity into that - pool and vice-versa. -
-) diff --git a/packages/boba/gateway/src/containers/earn/types.ts b/packages/boba/gateway/src/containers/earn/types.ts deleted file mode 100644 index 363d49a570..0000000000 --- a/packages/boba/gateway/src/containers/earn/types.ts +++ /dev/null @@ -1,14 +0,0 @@ -type poolDetail = { - name: string - tab: string -} - -export type tabSwitcherTypes = { - L1LP: poolDetail - L2LP: poolDetail -} - -export enum toLayer { - L1 = 'L2', - L2 = 'L1', -} diff --git a/packages/boba/gateway/src/containers/history/DatePicker.tsx b/packages/boba/gateway/src/containers/history/DatePicker.tsx deleted file mode 100644 index 98c53df48d..0000000000 --- a/packages/boba/gateway/src/containers/history/DatePicker.tsx +++ /dev/null @@ -1,132 +0,0 @@ -import React, { useRef, useState, useEffect, useCallback } from 'react' -import { subMonths } from 'date-fns' -import { - DatePickerDropdown, - DatePickerHeader, - DatePickerContainer, -} from './styles' -import { formatDate } from 'util/dates' -import { DayPicker, DateRange } from 'react-day-picker' -import 'react-day-picker/dist/style.css' - -export interface IDatePickerProps { - selected: Date - timeFormat?: string - onChange: Function - minDate?: Date - maxDate?: Date - range?: boolean - onChangeFrom?: Function - onChangeTo?: Function -} - -const DatePicker = (props: IDatePickerProps) => { - const dropdownRef = useRef(null) - useEffect(() => { - const handleClickOutside = (e: Event) => { - if ( - dropdownRef.current && - !dropdownRef.current.contains(e.target as Node) - ) { - setIsOpen(false) - } - } - // Bind the event listener - document.addEventListener('mousedown', handleClickOutside) - return () => { - // Unbind the event listener on clean up - document.removeEventListener('mousedown', handleClickOutside) - } - }, [dropdownRef]) - - const [selectedDate, setSelectedDate] = useState(props.selected) - const today = new Date() - const pastDate = new Date(2015, 7, 30) - - const disabledPeriod = { - before: props.minDate ? props.minDate : pastDate, - after: props.maxDate ? props.maxDate : today, - } - const disabledDays = [disabledPeriod] - - const [isOpen, setIsOpen] = useState(false) - - const defaultSelectedRange: DateRange = { - from: subMonths(today, 6), - to: today, - } - const [selectedRange, setSelectedRange] = useState( - defaultSelectedRange - ) - - const handleClick = useCallback(() => { - setIsOpen(!isOpen) - }, [isOpen]) - - const handleDateChange = (date: Date | undefined) => { - if (date && selectedDate !== date) { - setSelectedDate(date) - props.onChange(date) - } - } - const handleRangeChange = (range: DateRange | undefined) => { - if (range && range !== selectedRange) { - setSelectedRange(range) - props.onChangeFrom && props.onChangeFrom(range.from) - props.onChangeTo && props.onChangeTo(range.to) - } - } - - if (props.range) { - const dateRangeString = `${ - selectedRange?.from - ? formatDate(selectedRange?.from?.getTime() / 1000, props.timeFormat) - : 'From' - } - ${ - selectedRange?.to - ? formatDate(selectedRange?.to?.getTime() / 1000, props.timeFormat) - : 'To' - }` - - return ( - - - {dateRangeString} - - {isOpen && ( - - handleRangeChange(range)} - disabled={disabledDays} - /> - - )} - - ) - } - - return ( - - - {formatDate(selectedDate.getTime() / 1000, props.timeFormat)} - - {isOpen && ( - - handleDateChange(date)} - disabled={disabledDays} - /> - - )} - - ) -} - -export default DatePicker diff --git a/packages/boba/gateway/src/containers/history/History.tsx b/packages/boba/gateway/src/containers/history/History.tsx deleted file mode 100644 index fb50ea2f9d..0000000000 --- a/packages/boba/gateway/src/containers/history/History.tsx +++ /dev/null @@ -1,272 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React, { useState } from 'react' -import { useDispatch, useSelector } from 'react-redux' -import { isEqual } from 'util/lodash' -import { ValidValuesFromArray } from 'util/objectManipulation' - -import { useTheme } from 'styled-components' - -import { Button } from 'components/global' - -import transactionService from 'services/transaction.service' -import { NETWORK_TYPE } from 'util/network/network.util' -import { - ALL_NETWORKS, - FILTER_OPTIONS, - NETWORK_L1_OPTIONS, - NETWORK_L2_OPTIONS, - TableOptions, -} from './constants' - -import { - selectAccountEnabled, - selectLayer, - selectTransactions, -} from 'selectors' - -import { fetchTransactions } from 'actions/networkAction' - -import { - Table, - NoHistory, - HistoryPageContainer, - TableHeader, - TableFilters, - NetworkDropdowns, - DateDescriptions, - SwitchChainIcon, - SwitchIcon, - TableTransactionsContainer, - DatePickerWrapper, - DropdownNetwork, - MobileDateDescriptions, - MobileDatePickerWrapper, -} from './styles' - -import { setConnect } from 'actions/setupAction' -import useInterval from 'hooks/useInterval' - -import { POLL_INTERVAL } from 'util/constant' - -import FilterIcon from 'assets/images/filter.svg' -import noHistoryIcon from 'assets/images/noHistory.svg' -import { FilterDropDown } from 'components/filter' -import { Svg } from 'components/global/svg' -import { TransactionsTableHeader } from 'components/global/table/themes' -import { TransactionsResolver } from './TransactionsResolver' -import { CHAIN_NAME, TRANSACTION_FILTER_STATUS } from './types' -import { SearchInput } from 'components/global/searchInput' - -import { Typography } from 'components/global/typography' -import DatePicker from './DatePicker' - -const History = () => { - const [toNetwork, setToNetwork] = useState(ALL_NETWORKS) - const [fromNetwork, setFromNetwork] = useState(ALL_NETWORKS) - const [transactionsFound, setTransactionsFound] = useState(true) - const [switched, setSwitched] = useState(false) - - const theme: any = useTheme() - - const dispatch = useDispatch() - - const now = new Date() - const last_6months = new Date( - now.getFullYear(), - now.getMonth() - 6, - now.getDate() - ) - const handleSwitchDropdowns = () => { - const temp = fromNetwork - setFromNetwork(toNetwork) - setToNetwork(temp) - setSwitched((current) => !current) - } - - const [filterStartDate, setFilterStartDate] = useState(last_6months) - const [transactionStatus, setTransactionStatus] = useState('All') - const [filterEndDate, setFilterEndDate] = useState(now) - const layer = useSelector(selectLayer()) - const accountEnabled = useSelector(selectAccountEnabled()) - - const [searchHistory, setSearchHistory] = useState('') - - const transactions = useSelector(selectTransactions, isEqual) - - // TODO: not working as implementation needs be rewrite. - const getDatePicker = (label: string, range: boolean = false) => { - const dateSelector = (date: Date) => { - label === 'To' ? setFilterEndDate(date) : setFilterStartDate(date) - } - return ( - - date && !Array.isArray(date) && dateSelector(date) - } - timeFormat="MM/DD/YYYY" - range={range} - {...(range - ? { onChangeFrom: setFilterStartDate, onChangeTo: setFilterEndDate } - : {})} - {...(label === 'To' - ? { minDate: filterStartDate } - : { maxDate: filterEndDate })} - /> - ) - } - const syncTransactions = async () => { - if (accountEnabled) { - const newTransactions = await transactionService.getTransactions() - if (newTransactions.length === 0) { - setTransactionsFound(false) - } else { - setTransactionsFound(true) - } - if ( - new Set(ValidValuesFromArray(transactions)).size !== - new Set(newTransactions).size - ) { - dispatch(fetchTransactions()) - } - } - } - - useInterval(async () => { - await syncTransactions() - }, POLL_INTERVAL) - - return ( - - {layer && ( - <> - - { - setSearchHistory(i.target.value) - }} - /> - - - Date Range From - - {getDatePicker('From')} - To - {getDatePicker('To')} - - - - Date Range - - {getDatePicker('', true)} - - - - -
- - - From - setFromNetwork(option)} - error={false} - headers={[NETWORK_TYPE.MAINNET, NETWORK_TYPE.TESTNET]} - /> - { - handleSwitchDropdowns() - }} - > - - - To - setToNetwork(option)} - error={false} - headers={[NETWORK_TYPE.MAINNET, NETWORK_TYPE.TESTNET]} - /> - - { - setTransactionStatus(item.value) - }} - error={false} - /> - -
- - - {transactionsFound && ( - - )} - -
- - )} - {!transactionsFound && ( - - -
No Transactions Found.
-
- )} - {!layer && ( - - -
No History.
- - - - ) -} - -export default React.memo(CDMCompletionModal) diff --git a/packages/boba/gateway/src/containers/modals/TransactionSuccessModal/index.styles.ts b/packages/boba/gateway/src/containers/modals/TransactionSuccessModal/index.styles.ts deleted file mode 100644 index 9f083b4796..0000000000 --- a/packages/boba/gateway/src/containers/modals/TransactionSuccessModal/index.styles.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { Typography } from 'components/global' -import styled from 'styled-components' - -export const SuccessContainer = styled.div` - display: flex; - flex-direction: column; - align-items: center; - justify-content: space-around; - gap: 25px; -` - -export const TitleText = styled(Typography).attrs({ - variant: 'body1', -})` - text-align: center; -` - -export const MutedText = styled(Typography).attrs({ - variant: 'body3', -})` - color: ${({ theme }) => - theme.name === 'light' ? theme.colors.gray[700] : theme.colors.gray[50]}; -` - -export const CircleOuter = styled.div` - display: flex; - border-radius: 50%; - justify-content: center; - align-items: center; - height: 150px; - width: 150px; - background: ${({ theme }) => - theme.name === 'light' ? theme.colors.green[300] : theme.colors.green[500]}; -` -export const CircleInner = styled.div` - display: flex; - border-radius: 50%; - justify-content: center; - align-items: center; - height: 120px; - width: 120px; - background: ${({ theme }) => - theme.name === 'light' ? theme.colors.green[300] : theme.colors.green[400]}; -` - -export const SuccessCheck = styled.div` - display: flex; - border-radius: 50%; - justify-content: center; - align-items: center; - height: 90px; - width: 90px; - background: ${({ theme }) => theme.colors.green[300]}; - position: relative; - &:after { - content: '✓'; - font-size: 60px; - color: #fff; - position: absolute; - margin: auto; - } -` - -export const SuccessContent = styled.div` - display: flex; - flex-direction: column; - align-items: center; - justify-content: space-around; - gap: 8px; -` diff --git a/packages/boba/gateway/src/containers/modals/TransactionSuccessModal/index.tsx b/packages/boba/gateway/src/containers/modals/TransactionSuccessModal/index.tsx deleted file mode 100644 index 3ff8726b84..0000000000 --- a/packages/boba/gateway/src/containers/modals/TransactionSuccessModal/index.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import { - SuccessContainer, - SuccessCheck, - MutedText, - CircleOuter, - CircleInner, - TitleText, - SuccessContent, -} from './index.styles' -import React, { FC } from 'react' -import { closeModal } from 'actions/uiAction' -import { Button, Heading, Typography } from 'components/global' -import Modal from 'components/modal/Modal' -import { useDispatch, useSelector } from 'react-redux' -import { useNavigate } from 'react-router-dom' -import { - selectActiveNetworkName, - selectBridgeType, - selectLayer, -} from 'selectors' -import { LAYER } from 'util/constant' -import { BRIDGE_TYPE } from 'containers/Bridging/BridgeTypeSelector' - -interface Props { - open: boolean -} - -const TransactionSuccessModal: FC = ({ open }) => { - const dispatch = useDispatch() - const navigate = useNavigate() - const layer = useSelector(selectLayer()) - const name = useSelector(selectActiveNetworkName()) - const bridgeType = useSelector(selectBridgeType()) - - const estimateTime = () => { - if (bridgeType === BRIDGE_TYPE.CLASSIC) { - if (layer === LAYER.L1) { - return '13 ~ 14mins.' - } else { - return '7 days' - } - } else if (bridgeType === BRIDGE_TYPE.FAST) { - if (layer === LAYER.L1) { - return '1 ~ 5min.' - } else { - return '15min ~ 3hrs.' - } - } else { - // Teleportation, instant - return '~1min.' - } - } - - const handleClose = () => { - dispatch(closeModal('transactionSuccess')) - } - - return ( - - - - - - - - - Bridge Successful - - Your funds will arrive in {estimateTime()} at your wallet on{' '} - {layer === LAYER.L1 ? name['l2'] : name['l1']}. - - To monitor progress, go to History page. - - - - - ) -} - -export default React.memo(NewProposalModal) diff --git a/packages/boba/gateway/src/containers/modals/dao/daoModal.styles.js b/packages/boba/gateway/src/containers/modals/dao/daoModal.styles.js deleted file mode 100644 index cf70ad72e9..0000000000 --- a/packages/boba/gateway/src/containers/modals/dao/daoModal.styles.js +++ /dev/null @@ -1,9 +0,0 @@ -import { Divider, styled } from "@mui/material"; - - -export const DividerLine = styled(Divider)(({ theme }) => ({ - background: `${theme.palette.mode === 'dark' ? 'rgba(255, 255, 255, 0.04)' : 'rgba(3, 19, 19, 0.04)'}`, - boxSizing: 'border-box', - boxShadow: `${theme.palette.mode === 'dark' ? '0px 4px 4px rgba(0, 0, 0, 0.25)' : 'none'}`, - width: '100%' -})) diff --git a/packages/boba/gateway/src/containers/modals/dao/old/NewProposalModalOldDao.js b/packages/boba/gateway/src/containers/modals/dao/old/NewProposalModalOldDao.js deleted file mode 100644 index b7a600b0b9..0000000000 --- a/packages/boba/gateway/src/containers/modals/dao/old/NewProposalModalOldDao.js +++ /dev/null @@ -1,263 +0,0 @@ -/* -Copyright 2021-present Boba Network. -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React, { useState } from 'react' -import { Box } from '@mui/material' - -import { useDispatch, useSelector } from 'react-redux' -import { closeModal, openAlert } from 'actions/uiAction' -import Modal from 'components/modal/Modal' -import Input from 'components/input/Input' - -import { createDaoProposal } from 'actions/daoAction' -import { selectProposalThreshold } from 'selectors' -import { Button } from 'components/global/button' -import { ModalTypography } from 'components/global/modalTypography' -import { Dropdown } from 'components/global/dropdown' - -const NewProposalModal = ({ open }) => { - - const dispatch = useDispatch() - - const [action, setAction] = useState('') - const [votingThreshold, setVotingThreshold] = useState('') - - const [LPfeeMin, setLPfeeMin] = useState('') - const [LPfeeMax, setLPfeeMax] = useState('') - const [LPfeeOwn, setLPfeeOwn] = useState('') - - const [proposeText, setProposeText] = useState('') - const [proposalUri, setProposalUri] = useState('') - - const loading = false //ToDo useSelector(selectLoading([ 'PROPOSAL_DAO/CREATE' ])) - - - const proposalThreshold = useSelector(selectProposalThreshold) - - const onActionChange = (option) => { - setVotingThreshold('') - setLPfeeMin('') - setLPfeeMax('') - setLPfeeOwn('') - setProposeText('') - setProposalUri('') - setAction(option.value) - } - - const handleClose = () => { - setVotingThreshold('') - setLPfeeMin('') - setLPfeeMax('') - setLPfeeOwn('') - setAction('') - setProposeText('') - setProposalUri('') - dispatch(closeModal('newProposalModal')) - } - - const options = [ - { - value: 'change-threshold', - label: 'Change Voting Threshold', - title: 'Change Voting Threshold', - }, - { - value: 'text-proposal', - label: 'Freeform Text Proposal', - title: 'Freeform Text Proposal', - }, - { - value: 'change-lp1-fee', - label: 'Change L1 LP fees', - title: 'Change L1 LP fees', - }, - { - value: 'change-lp2-fee', - label: 'Change L2 LP fees', - title: 'Change L2 LP fees', - }, - ] - - const customStyles = { - option: (provided, state) => ({ - ...provided, - color: state.isSelected ? '#282828' : '#909090', - }), - } - - const submit = async () => { - - let res = null - - if (action === 'change-threshold') { - res = await dispatch( - createDaoProposal({ - action, - value: [votingThreshold], - text: '', //extra text if any - })) - } else if (action === 'text-proposal') { - res = await dispatch(createDaoProposal({ - action, - text: `${proposeText}@@${proposalUri}` - })) - } else if (action === 'change-lp1-fee' || action === 'change-lp2-fee') { - res = await dispatch(createDaoProposal({ - action, - value: [ Math.round(Number(LPfeeMin) * 10), Math.round(Number(LPfeeMax) * 10), Math.round(Number(LPfeeOwn) * 10) ], - text: '' //extra text if any - })) - } - - if (res) { - dispatch(openAlert(`Proposal has been submitted. It will be listed soon`)) - } - handleClose() - } - - const disabled = () => { - if (action === 'change-threshold') { - return !votingThreshold - } else if (action === 'text-proposal') { - return !proposeText - } else if (action === 'change-lp1-fee' || action === 'change-lp2-fee') { - if (Number(LPfeeMin) < 0.0 || Number(LPfeeMin) > 5.0) { - return true //aka disabled - } - if (Number(LPfeeMax) < 0.0 || Number(LPfeeMax) > 5.0) { - return true //aka disabled - } - if (Number(LPfeeMax) <= Number(LPfeeMin)) { - return true //aka disabled - } - if (Number(LPfeeOwn) < 0.0 || Number(LPfeeOwn) > 5.0) { - return true - } - if (LPfeeMin === '') { - return true - } - if (LPfeeMax === '') { - return true - } - if (LPfeeOwn === '') { - return true - } - return false - } - } - - - return ( - - - - - - At least 100000.0 BOBA + xBOBA are needed to create a new proposal - - - onActionChange(option)} - defaultItem={{ - value: null, - label: 'Choose type of proposal', - }} - items={options} - /> - {action === 'change-threshold' && - <> - - The minimum number of votes required for an account to create a proposal. The current value is {proposalThreshold}. - - - setVotingThreshold(i.target.value)} - fullWidth - sx={{ marginBottom: '20px' }} - /> - - } - {(action === 'change-lp1-fee' || action === 'change-lp2-fee') && - <> - - Possible settings range from 0.0% to 5.0%. All three values must - be specified and the maximum fee must be larger than the minimum - fee. - - setLPfeeMin(i.target.value)} - fullWidth - /> - setLPfeeMax(i.target.value)} - fullWidth - /> - setLPfeeOwn(i.target.value)} - fullWidth - /> - - } - {action === 'text-proposal' && - <> - - Your proposal title is limited to 100 characters. Use the link field below to provide more information. - - setProposeText(i.target.value.slice(0, 100))} - /> - - You should provide additional information (technical - specifications, diagrams, forum threads, and other material) on - a seperate website. The link length is limited to 150 - characters. You may need to use a link shortener. - - setProposalUri(i.target.value.slice(0, 150))} - /> - - } - - - - - ) - } - - return ( - <> - - {!isBridge && - - Classic Bridge {token && token.symbol ? token.symbol : ''} to L2 - - } - { - setAmount(i.target.value) - setValue_Wei_String(toWei_String(i.target.value, token.decimals)) - }} - onUseMax={(i) => {//they want to use the maximum - setAmount(maxValue) //so the input value updates for the user - just for display purposes - setValue_Wei_String(token.balance.toString()) //this is the one that matters - }} - allowUseAll={true} - unit={token.symbol} - maxValue={maxValue} - variant="standard" - newStyle - isBridge={isBridge} - openTokenPicker={openTokenPicker} - /> - - setEnableToL2Account(e.target.checked)} - name="L2Account" - color="primary" - /> - } - label="Enable Deposit to other L2 Account" - /> - - {!!enableToL2Account && - setRecipient(i.target.value)} - fullWidth - paste - sx={{ fontSize: '50px' }} - newStyle - />} - - {!!convertToUSD && ( - - {`Amount in USD ${amountToUsd(value, lookupPrice, token).toFixed(2)}`} - - )} - - {!!token && token.symbol === 'OMG' && ( - - NOTE: The OMG Token was minted in 2017 and it does not conform to the ERC20 token standard. - In some cases, three interactions with MetaMask are needed. If you are bridging out of a - new wallet, it starts out with a 0 approval, and therefore, only two interactions with - MetaMask will be needed. - - )} - - - - - - - - ) -} - -export default React.memo(InputStep) diff --git a/packages/boba/gateway/src/containers/modals/deposit/steps/InputStepBatch.js b/packages/boba/gateway/src/containers/modals/deposit/steps/InputStepBatch.js deleted file mode 100644 index 0bd9f39b36..0000000000 --- a/packages/boba/gateway/src/containers/modals/deposit/steps/InputStepBatch.js +++ /dev/null @@ -1,454 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React, { useEffect, useState } from 'react' -import { useDispatch, useSelector } from 'react-redux' - - -import { Box, Typography, useMediaQuery,useTheme } from '@mui/material' - -import { depositL1LPBatch, approveFastDepositBatch, fetchBalances } from 'actions/networkAction' -import { utils } from 'ethers' - -import { openModal, openError, setActiveHistoryTab } from 'actions/uiAction' -import { setCDMCompletion } from 'actions/transactionAction' - -import Button from 'components/button/Button' -import Input from 'components/input/Input' -import { CounterButton } from 'components'; - -import { WrapperActionsModal } from 'components/modal/styles' - -import { - selectLoading, - selectSignatureStatus_depositLP, - selectlayer1Balance, - selectFastDepositBatchCost, - selectL1FeeBalance, - selectUserAndL2LPBalanceBatch, - } from 'selectors' - -import networkService from 'services/networkService' - -import parse from 'html-react-parser' - -import { - fetchL2TotalFeeRate, - fetchL1FeeBalance, - fetchUserAndL2LPBalanceBatch, - fetchFastDepositBatchCost, - } from 'actions/balanceAction' - - -function InputStepBatch({ isBridge, handleClose }) { - - const dispatch = useDispatch() - - const [ payload, setPayload ] = useState([{}]) - const [ tokenList, setTokenList ] = useState([]) - - const userBalance = useSelector(selectlayer1Balance) - const batchInfo = useSelector(selectUserAndL2LPBalanceBatch) - - const batchCost = useSelector(selectFastDepositBatchCost) - const feeBalance = useSelector(selectL1FeeBalance) //amount of ETH on L1 to pay gas - - const depositLoading = useSelector(selectLoading(['DEPOSIT/CREATE'])) - const approvalLoading = useSelector(selectLoading(['APPROVE/CREATE'])) - - const signatureStatus = useSelector(selectSignatureStatus_depositLP) - - // console.log("ETH available for paying fees:",Number(feeBalance)) - async function doDeposit() { - - console.log(`User input payload: `, payload) - let updatedPayload = [] - for (const tokenInput of payload) { - const tokenBalance = userBalance.filter(i => i.symbol === tokenInput.symbol) - if (tokenBalance.length === 0) { - dispatch(openError('Failed to build appropriate payload')) - } else { - updatedPayload.push({...tokenInput, ...tokenBalance[0]}) - } - } - - console.log(`Updated payload: `, updatedPayload) - - let receipt = {transactionHash: '0x1234567890'} - receipt = await dispatch(approveFastDepositBatch(updatedPayload)) - - if(receipt === false) { - dispatch(openError('Failed to approve amount or user rejected signature')) - handleClose() - return - } - - receipt = await dispatch(depositL1LPBatch(updatedPayload)) - - if (receipt) { - const [token, receivedToken] = updatedPayload.reduce((tokenPayload, tokenInfo) => { - let [tokenStr, receivedTokenStr] = tokenPayload - if (tokenStr !== "") { - tokenStr += ", " - } - tokenStr += `${tokenInfo.symbol}` - if (receivedTokenStr !== "") { - receivedTokenStr += ", " - } - const l2LPFeeRate = batchInfo[tokenInfo.symbol].l2LPFeeRate - receivedTokenStr += `${(tokenInfo.value * (1 - l2LPFeeRate / 100)).toFixed(3)} ${tokenInfo.symbol}` - return [tokenStr, receivedTokenStr] - }, ["", ""]) - dispatch(setCDMCompletion({ - CDMType: 'L1FastBridge', - CDMMessage: { token, receivedToken }, - CDMTransaction: receipt - })) - dispatch(openModal('CDMCompletionModal')) - dispatch(setActiveHistoryTab('Boba Ethereum L2 to Ethereum')) - handleClose() - } - } - - useEffect(() => { - dispatch(fetchL2TotalFeeRate()) - dispatch(fetchL1FeeBalance()) //ETH balance for paying gas - dispatch(fetchBalances()) - - return ()=>{ - dispatch({type: 'BALANCE/L2/RESET'}) - } - }, [ dispatch ]) - - useEffect(() => { - dispatch(fetchUserAndL2LPBalanceBatch(tokenList)) - dispatch(fetchFastDepositBatchCost(tokenList)) - }, [ tokenList, dispatch ]) - - - useEffect(() => { - if (signatureStatus && depositLoading) { - //we are all set - can close the window - //transaction has been sent and signed - handleClose() - } - }, [ signatureStatus, depositLoading, handleClose ]) - - function getOptions() { - const selectTokens = Object.keys(payload).reduce((acc, cur) => { - acc.push(payload[cur].symbol) - return acc - }, []) - const effectTokens = userBalance.reduce((acc, cur) => { - acc.push(cur.symbol) - return acc - }, []) - return ['ETH', ...networkService.supportedTokens].reduce((acc, cur) => { - if (cur !== 'xBOBA' && !selectTokens.includes(cur) && effectTokens.includes(cur)) { - acc.push(cur) - } - return acc - },[]) - } - - let buttonLabel_1 = 'Cancel' - if( depositLoading || approvalLoading ) buttonLabel_1 = 'CLOSE WINDOW' - - let buttonLabel_2 = 'Bridge' - - if(depositLoading) { - buttonLabel_2 = "Bridging..." - } else if (approvalLoading) { - buttonLabel_2 = "Approving..." - } - - const theme = useTheme() - const isMobile = useMediaQuery(theme.breakpoints.down('md')) - - let ETHstring = '' - let warning = false - let validInput = true - - // Make sure user have enough ETH to cover the cost and ETH amount - // that they want to transfer - const filterETH = payload.filter(i => i.symbol === 'ETH') - if (filterETH.length === 1) { - // There should be only one input for ETH - const payloadETH = filterETH[0] - if (Number(payloadETH.value) + Number(batchCost) > Number(feeBalance)) { - warning = true - validInput = false - ETHstring = `
WARNING: your L1 ETH balance of ${Number(feeBalance).toFixed(4)} is not sufficient to cover this transaction. -
THIS TRANSACTION WILL FAIL.` - } - else if ((Number(payloadETH.value) + Number(batchCost)) > Number(feeBalance) * 0.96) { - warning = true - ETHstring = `
CAUTION: your L1 ETH balance of ${Number(feeBalance).toFixed(4)} is very close to the estimated total. -
THIS TRANSACTION MIGHT FAIL.` - } - } else if (filterETH.length > 1) { - // Disable the bridge button - validInput = false - } else { - if(Number(batchCost) > Number(feeBalance)) { - warning = true - ETHstring = `
WARNING: your L1 ETH balance of ${Number(feeBalance).toFixed(4)} is not sufficient to cover the estimated gas. -
THIS TRANSACTION WILL FAIL.` - } - else if(Number(batchCost) > Number(feeBalance) * 0.96) { - warning = true - validInput = false - ETHstring = `
CAUTION: your L1 ETH balance of ${Number(feeBalance).toFixed(4)} is very close to the estimated cost. -
THIS TRANSACTION MIGHT FAIL. It would be safer to have slightly more ETH in your L1 wallet to cover gas.` - } - } - - // Make sure all input value is correct - for (const tokenInput of payload) { - const tokenBalance = userBalance.filter(i => i.symbol === tokenInput.symbol) - // the token is not selected or the value is not provided - if (!tokenInput.symbol || !tokenInput.value) { - validInput = false - } - // the value should be larger than 0 - else if (Number(tokenInput.value) <= 0) { - validInput = false - } - // the balance should cover the amount - else if (tokenBalance.length === 1 && - Number(utils.parseUnits(tokenBalance[0].balance.toString(), tokenBalance[0].decimals).toString()) < tokenInput.value - ) { - validInput = false - } - else if (tokenBalance.length === 0) { - validInput = false - } - // the pool should have the liquidity to cover the value - else { - if (batchInfo[tokenInput.symbol]) { - const LPBalance = batchInfo[tokenInput.symbol].l2LPBalance - const LPRatio = batchInfo[tokenInput.symbol].LPRatio - if ( - (Number(LPRatio) < 0.10 && Number(tokenInput.value) > Number(LPBalance) * 0.90) || - (Number(LPRatio) < 0.10 && Number(tokenInput.value) <= Number(LPBalance) * 0.90) || - (Number(LPRatio) >= 0.10 && Number(tokenInput.value) > Number(LPBalance) * 0.90) - ) { - validInput = false - } - } - // We don't get the batch information - else { - validInput = false - } - } - } - - return ( - <> - - {!isBridge && - - Batch Bridge to Boba - - } - - {payload.map((_, index) => { - let maxValue = 0, LPRatio = 1, LPBalance = Infinity - if (payload[index].symbol && batchInfo[payload[index].symbol]) { - maxValue = batchInfo[payload[index].symbol].balance - LPRatio = batchInfo[payload[index].symbol].LPRatio - LPBalance = batchInfo[payload[index].symbol].l2LPBalance - } - return ( -
- - { - const updatedPayload = [...payload] - updatedPayload[index] = { ...updatedPayload[index], value: i.target.value } - setPayload(updatedPayload) - }} - onUseMax={(i)=>{//they want to use the maximum - const updatedPayload = [...payload] - updatedPayload[index] = { ...updatedPayload[index], value: maxValue } - setPayload(updatedPayload) - }} - onSelect={(i) => { - // Update payload - const updatedPayload = [...payload] - updatedPayload[index] = { ...updatedPayload[index], symbol: i.value } - setPayload(updatedPayload) - // Update token list - setTokenList(updatedPayload.reduce((acc, cur) => {acc.push(cur.symbol); return acc}, [])) - }} - allowUseAll={true} - unit={payload[index] ? payload[index].symbol ? payload[index].symbol : 'BOBA' : 'BOBA'} - maxValue={maxValue} - variant="standard" - newStyle - selectOptions={getOptions()} - selectValue={payload[index].symbol ? payload[index].symbol: ''} - style={{width: '100%'}} - /> -
- { - const updatedPayload = [...payload] - updatedPayload.push({}) - setPayload(updatedPayload) - }} - disabled={payload.length > 3} - /> - { - let updatedPayload = [...payload] - updatedPayload.splice(index, 1) - setPayload(updatedPayload) - // Update token list - setTokenList(updatedPayload.reduce((acc, cur) => { - if (typeof cur.symbol !== 'undefined') {acc.push(cur.symbol)}; return acc - }, [])) - }} - disabled={payload.length === 1} - /> -
-
- - {payload[index].symbol === 'OMG' && - - The OMG Token was minted in 2017 and it does not conform to the ERC20 token standard. - In some cases, three interactions with MetaMask are needed. - - } - - {(Number(LPRatio) < 0.10 && Number(payload[index].value) > Number(LPBalance) * 0.90) && ( - - The {payload[index].symbol} pool's balance and balance/liquidity ratio are low. - Please use the classic bridge. - - )} - - {(Number(LPRatio) < 0.10 && Number(payload[index].value) <= Number(LPBalance) * 0.90) && ( - - The {payload[index].symbol} pool's balance/liquidity ratio (of {Number(LPRatio).toFixed(2)}) is too low. - Please use the classic bridge. - - )} - - {(Number(LPRatio) >= 0.10 && Number(payload[index].value) > Number(LPBalance) * 0.90) && ( - - The {payload[index].symbol} pool's balance (of {Number(LPBalance).toFixed(2)} including inflight bridges) is too low. - Please use the classic bridge or reduce the amount. - - )} -
-
- ) - })} - - - Click the + symbol to add additional tokens to bridge. -
- Est. time: less than 10 minutes to 3 hours. -
- -
-
- Est. total fee - {batchCost === 0 ? <>: {Number(batchCost).toFixed(5)} ETH} -
-
- Est. bridge fee - {payload.map((_, index) => { - let l2LPFeeRate = 0.1 - if (payload[index].symbol && batchInfo[payload[index].symbol]) { - l2LPFeeRate = batchInfo[payload[index].symbol].l2LPFeeRate - } - if (payload[index].symbol) { - return ( - - {`${((payload[index].value ? payload[index].value: 0) * l2LPFeeRate / 100).toFixed(3)} ${payload[index].symbol} (${l2LPFeeRate}%)`} - - ) - } - return <> - })} -
-
- Est. receive - {payload.map((_, index) => { - let l2LPFeeRate = 0.1 - if (payload[index].symbol && batchInfo[payload[index].symbol]) { - l2LPFeeRate = batchInfo[payload[index].symbol].l2LPFeeRate - } - if (payload[index].symbol) { - return ( - - {`${((payload[index].value ? payload[index].value * (1 - l2LPFeeRate / 100): 0)).toFixed(3)} ${payload[index].symbol} `} - - ) - } - return <> - })} -
-
- - {warning && ( - - {parse(ETHstring)} - - )} - - {(depositLoading || approvalLoading) && ( - - This window will automatically close when your transaction has been signed and submitted. - - )} -
- - - - - - - ) -} - -export default React.memo(InputStepBatch) diff --git a/packages/boba/gateway/src/containers/modals/deposit/steps/InputStepFast.js b/packages/boba/gateway/src/containers/modals/deposit/steps/InputStepFast.js deleted file mode 100644 index 6f706c6c20..0000000000 --- a/packages/boba/gateway/src/containers/modals/deposit/steps/InputStepFast.js +++ /dev/null @@ -1,440 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React, { useEffect, useState } from 'react' -import { useDispatch, useSelector } from 'react-redux' - - - -import { Box, Typography, useMediaQuery,useTheme } from '@mui/material' - -import { depositL1LP, approveERC20 } from 'actions/networkAction' - -import { openModal, openError, setActiveHistoryTab } from 'actions/uiAction' -import { setCDMCompletion } from 'actions/transactionAction' - -import Button from 'components/button/Button' -import Input from 'components/input/Input' - -import { WrapperActionsModal } from 'components/modal/styles' -import BridgeFee from 'components/bridgeFee/BridgeFee' - - -import { - selectLoading, - selectLookupPrice, - selectSignatureStatus_depositLP, - selectL2FeeRateN, - selectFastDepositCost, - selectL2LPBalanceString, - selectL2LPPendingString, - selectL1FeeBalance, - selectL2LPLiquidity, - selectActiveNetworkName -} from 'selectors' - - -import networkService from 'services/networkService' -import { logAmount, amountToUsd, toWei_String } from 'util/amountConvert' - -import parse from 'html-react-parser' - -import BN from 'bignumber.js' - -import { - fetchFastDepositCost, - fetchL2LPBalance, - fetchL2LPPending, - fetchL2TotalFeeRate, - fetchL2FeeRateN, - fetchL1FeeBalance, - fetchL2LPLiquidity, -} from 'actions/balanceAction' - - -function InputStepFast({ handleClose, token, isBridge, openTokenPicker }) { - const dispatch = useDispatch() - - const [ value, setValue ] = useState('') - const [ value_Wei_String, setValue_Wei_String ] = useState('0') //support for Use Max - - const [ LPRatio, setLPRatio ] = useState(0) - - const LPBalance = useSelector(selectL2LPBalanceString) - const LPPending = useSelector(selectL2LPPendingString) - const LPLiquidity = useSelector(selectL2LPLiquidity) - - const feeRateN = useSelector(selectL2FeeRateN) - - const cost = useSelector(selectFastDepositCost) - - const feeBalance = useSelector(selectL1FeeBalance) //amount of ETH on L1 to pay gas - - const networkName = useSelector(selectActiveNetworkName()) - - const [ validValue, setValidValue ] = useState(false) - - const depositLoading = useSelector(selectLoading([ 'DEPOSIT/CREATE' ])) - const approvalLoading = useSelector(selectLoading([ 'APPROVE/CREATE' ])) - - const lookupPrice = useSelector(selectLookupPrice) - const signatureStatus = useSelector(selectSignatureStatus_depositLP) - - const allAddresses = networkService.getAllAddresses() - - const maxValue = logAmount(token.balance, token.decimals) - const lpUnits = logAmount(LPBalance, token.decimals) - const balanceSubPending = lpUnits - logAmount(LPPending, token.decimals) //subtract the in flight exits - - function setAmount(value) { - const tooSmall = new BN(value).lte(new BN(0.0)) - const tooBig = new BN(value).gt(new BN(maxValue)) - - - if (tooSmall || tooBig) { - setValidValue(false) - setValue(value) - return false - } else if ( - token.symbol === 'ETH' && - Number(cost) + Number(value) > Number(feeBalance) - ) { - //insufficient ETH to cover the ETH amount plus gas - setValidValue(false) - setValue(value) - return false - } else if (Number(cost) > Number(feeBalance)) { - //insufficient ETH to pay gas - setValidValue(false) - setValue(value) - return false - } else if (Number(LPRatio) < 0.1) { - //not enough balance/liquidity ratio - //we always want some balance for unstaking - setValidValue(false) - setValue(value) - return false - } else if (Number(value) > Number(balanceSubPending) * 0.9) { - //not enough absolute balance - //we don't want one large bridge to wipe out the entire balance - //NOTE - this logic still allows bridgers to drain the entire pool, but just more slowly than before - //this is because the every time someone exits, the limit is recalculated - //via Number(LPBalance) * 0.9, and LPBalance changes over time - setValidValue(false) - setValue(value) - return false - } else { - //Whew, finally! - setValidValue(true) - setValue(value) - return true - } - } - - const receivableAmount = (value) => { - return (Number(value) * ((100 - Number(feeRateN)) / 100)).toFixed(3) - } - - async function doDeposit() { - console.log(`${token.symbol} Amount to bridge to L2: ${value_Wei_String}`) - - let receipt = '' - - if (token.symbol === networkService.L1NativeTokenSymbol) { - - console.log("L1 Native token Fast Bridge") - - receipt = await dispatch(depositL1LP(token.address, value_Wei_String)) - - if (receipt) { - dispatch(setCDMCompletion({ - CDMType: 'L1FastBridge', - CDMMessage: { - token: `${token.symbol}`, - receivedToken: `${receivableAmount(Number(value))} ${token.symbol}` - }, - CDMTransaction: receipt - })) - dispatch(openModal('CDMCompletionModal')) - dispatch(setActiveHistoryTab(`${networkName[ 'l1' ]} to ${networkName[ 'l2' ]}`)) - handleClose() - return - } - } - - //at this point we know it's not ETH - console.log('ERC20 Fast Bridge') - - receipt = await dispatch( - approveERC20(value_Wei_String, token.address, allAddresses.L1LPAddress) - ) - - if (receipt === false) { - dispatch(openError('Failed to approve amount or user rejected signature')) - handleClose() - return - } - - receipt = await dispatch(depositL1LP(token.address, value_Wei_String)) - - if (receipt) { - dispatch(setActiveHistoryTab(`${networkName[ 'l1' ]} to ${networkName[ 'l2' ]}`)) - dispatch(setCDMCompletion({ - CDMType: 'L1FastBridge', - CDMMessage: { - token: `${token.symbol}`, - receivedToken: `${receivableAmount(Number(value))} ${token.symbol}` - }, - CDMTransaction: receipt - })) - dispatch(openModal('CDMCompletionModal')) - handleClose() - } - } - - //ok, we are on L1, but the funds will be paid out on l2 - //goal now is to find out as much as we can about the state of the l2 pools... - useEffect(() => { - if (typeof token !== 'undefined') { - dispatch(fetchL2LPBalance(token.addressL2)) - dispatch(fetchL2LPLiquidity(token.addressL2)) - dispatch(fetchL2LPPending(token.addressL1)) //lookup is, confusingly, via L1 token address - dispatch(fetchL2TotalFeeRate()) - dispatch(fetchL2FeeRateN(token.addressL2)) - dispatch(fetchFastDepositCost(token.address)) - dispatch(fetchL1FeeBalance()) //ETH balance for paying gas - return () => { - dispatch({ type: 'BALANCE/L2/RESET' }) - } - } - }, [ token, dispatch ]) - - useEffect(() => { - const lbl = Number(logAmount(LPLiquidity, token.decimals)) - if (lbl > 0) { - const lbp = Number(logAmount(LPBalance, token.decimals)) - const LPR = lbp / lbl - setLPRatio(Number(LPR).toFixed(3)) - } - }, [ LPLiquidity, LPBalance, token.decimals ]) - - useEffect(() => { - if (signatureStatus && depositLoading) { - //we are all set - can close the window - //transaction has been sent and signed - handleClose() - } - }, [ signatureStatus, depositLoading, handleClose ]) - - let buttonLabel_1 = 'Cancel' - if (depositLoading || approvalLoading) buttonLabel_1 = 'Close window' - - let buttonLabel_2 = 'Bridge' - - if (depositLoading) { - buttonLabel_2 = 'Bridging...' - } else if (approvalLoading) { - buttonLabel_2 = 'Approving...' - } - - const theme = useTheme() - const isMobile = useMediaQuery(theme.breakpoints.down('md')) - - let ETHstring = '' - let warning = false - - if (cost && Number(cost) > 0) { - if (token.symbol !== 'ETH') { - if (Number(cost) > Number(feeBalance)) { - warning = true - ETHstring = `WARNING: your L1 ETH balance of ${Number( - feeBalance - ).toFixed(4)} is not sufficient to cover the estimated gas. -
THIS TRANSACTION WILL FAIL.` - } else if (Number(cost) > Number(feeBalance) * 0.96) { - warning = true - ETHstring = `CAUTION: your L1 ETH balance of ${Number( - feeBalance - ).toFixed(4)} is very close to the estimated cost. -
THIS TRANSACTION MIGHT FAIL. It would be safer to have slightly more ETH in your L1 wallet to cover gas.` - } - } - - if (token.symbol === 'ETH') { - if (Number(value) + Number(cost) > Number(feeBalance)) { - warning = true - ETHstring = `WARNING: your L1 ETH balance of ${Number( - feeBalance - ).toFixed(4)} is not sufficient to cover this transaction. -
THIS TRANSACTION WILL FAIL.` - } else if (Number(value) + Number(cost) > Number(feeBalance) * 0.96) { - warning = true - ETHstring = `CAUTION: your L1 ETH balance of ${Number( - feeBalance - ).toFixed(4)} is very close to the estimated total. -
THIS TRANSACTION MIGHT FAIL.` - } - } - } - - if (Number(logAmount(token.balance, token.decimals)) === 0) { - //no token in this account - return ( - - - Sorry, nothing to deposit - no {token.symbol} in this wallet - - - - - - ) - } - - return ( - <> - - {!isBridge && ( - - Fast Bridge to L2 - - )} - - { - setAmount(i.target.value) - setValue_Wei_String(toWei_String(i.target.value, token.decimals)) - }} - onUseMax={(i) => { - //they want to use the maximum - setAmount(maxValue) //so the input value updates for the user - setValue_Wei_String(token.balance.toString()) - }} - allowUseAll={true} - unit={token.symbol} - maxValue={maxValue} - variant="standard" - newStyle - isBridge={isBridge} - openTokenPicker={openTokenPicker} - /> - - - - {Number(LPRatio) < 0.1 && - Number(value) > Number(balanceSubPending) * 0.9 && ( - - The {token.symbol} pool's balance and balance/liquidity ratio are - low. Please use the classic bridge. - - )} - - {Number(LPRatio) < 0.1 && - Number(value) <= Number(balanceSubPending) * 0.9 && ( - - The {token.symbol} pool's balance/liquidity ratio (of{' '} - {Number(LPRatio).toFixed(2)}) is too low. Please use the classic - bridge. - - )} - - {Number(LPRatio) >= 0.1 && - Number(value) > Number(balanceSubPending) * 0.9 && ( - - The {token.symbol} pool's balance (of{' '} - {Number(balanceSubPending).toFixed(2)} including inflight bridges) - is too low. Please use the classic bridge or reduce the amount. - - )} - - {warning && ( - - {parse(ETHstring)} - - )} - - {!!token && token.symbol === 'OMG' && ( - - The OMG Token was minted in 2017 and it does not confirm to the - ERC20 token standard. In some cases, three interactions with - MetaMask are needed. - - )} - - {!isBridge && (depositLoading || approvalLoading) && ( - - This window will automatically close when your transaction has been - signed and submitted. - - )} - - - - - - - - ) -} - -export default React.memo(InputStepFast) diff --git a/packages/boba/gateway/src/containers/modals/deposit/steps/InputStepMultiChain.js b/packages/boba/gateway/src/containers/modals/deposit/steps/InputStepMultiChain.js deleted file mode 100644 index b32b5b03bc..0000000000 --- a/packages/boba/gateway/src/containers/modals/deposit/steps/InputStepMultiChain.js +++ /dev/null @@ -1,241 +0,0 @@ - -import React, { useState, useEffect } from 'react' -import { useDispatch, useSelector } from 'react-redux' - -import { depositErc20ToL1 } from 'actions/networkAction' -import { openAlert, setActiveHistoryTab } from 'actions/uiAction' - -import Button from 'components/button/Button' -import Input from 'components/input/Input' - -import { selectLoading, selectLookupPrice,selectAltL1DepositCost, selectL1FeeBalance } from 'selectors' -import { - amountToUsd, logAmount, - // toWei_String -} from 'util/amountConvert' -import { getCoinImage } from 'util/coinImage' - -import { Box, Typography, useMediaQuery, useTheme} from '@mui/material' - -import { WrapperActionsModal } from 'components/modal/styles' - -import BN from 'bignumber.js' -import parse from 'html-react-parser' -import Select from 'components/select/Select' -import { fetchAltL1DepositFee, fetchL1FeeBalance } from 'actions/balanceAction' - -import networkService from 'services/networkService' - -/** - * @NOTE - * Cross Chain Bridging to alt L1 is only supported for BOBA as of now! - * - */ - -function InputStepMultiChain({ handleClose, token, isBridge, openTokenPicker }) { - - const getImageComponent = (symbol) => { - return {symbol} - } - - const options = [ - { value: 'BNB', label: 'BNB', title: 'BNB', image: getImageComponent("BNB") }, - { value: 'Avalanche', label: 'Avalanche', title: 'Avalanche', image: getImageComponent('AVAX') } - ].filter(i => networkService.supportedAltL1Chains.includes(i.value)) - - const dispatch = useDispatch() - const theme = useTheme() - - const isMobile = useMediaQuery(theme.breakpoints.down('md')) - - const [ value, setValue ] = useState('') - const [ altL1Bridge, setAltL1Bridge ] = useState('') - - const [ validValue, setValidValue ] = useState(false) - const depositLoading = useSelector(selectLoading([ 'DEPOSIT_ALTL1/CREATE' ])) - - const lookupPrice = useSelector(selectLookupPrice) - const depositFees = useSelector(selectAltL1DepositCost) - const feeBalance = useSelector(selectL1FeeBalance) //amount of ETH on L1 to pay gas - - const maxValue = logAmount(token.balance, token.decimals) - - function setAmount(value) { - - const tooSmall = new BN(value).lte(new BN(0.0)) - const tooBig = new BN(value).gt(new BN(maxValue)) - - if (tooSmall || tooBig) { - setValidValue(false) - } else { - setValidValue(true) - } - - setValue(value) - } - - async function doDeposit() { - - const res = await dispatch(depositErc20ToL1({ - value: value, - type: altL1Bridge - })) - - if (res) { - dispatch(openAlert(`Successfully bridge ${token.symbol} to alt L1 ${altL1Bridge}!`)) - dispatch(setActiveHistoryTab('Bridge between L1s')) - handleClose() - } else { - console.log(`🤦 opps something wrong!`) - handleClose() - } - } - - useEffect(() => { - dispatch(fetchL1FeeBalance()) //ETH balance for paying gas - dispatch(fetchAltL1DepositFee()) - },[dispatch]) - - let buttonLabel_1 = 'Cancel' - if (depositLoading) buttonLabel_1 = 'Close' - - let convertToUSD = false - - if (Object.keys(lookupPrice) && - !!value && - validValue && - !!amountToUsd(value, lookupPrice, token) - ) { - convertToUSD = true - } - - if (Number(logAmount(token.balance, token.decimals)) === 0) { - //no token in this account - return ( - - - Sorry, nothing to deposit - no {token.symbol} in this wallet - - - ) - } - - const onBridgeChange = (e) => { - setAltL1Bridge(e.target.value) - } - - const customStyles = { - option: (provided, state) => ({ - ...provided, - color: state.isSelected ? '#282828' : '#909090', - }), - } - - let ETHstring = '' - let warning = false - - if (depositFees[altL1Bridge]) { - if(Number(depositFees[altL1Bridge].fee) > Number(feeBalance)) { - warning = true - ETHstring = `WARNING: your L1 ${networkService.L1NativeTokenSymbol} balance of ${Number(feeBalance).toFixed(4)} is not sufficient to cover this transaction.` - } - } - - return ( - <> - - - Bridge {token && token.symbol ? token.symbol : ''} to Alt L1s - - - - { - setAmount(i.target.value) - // setValue_Wei_String(toWei_String(i.target.value, token.decimals)) - }} - onUseMax={(i) => {//they want to use the maximum - setAmount(maxValue) //so the input value updates for the user - just for display purposes - // setValue_Wei_String(token.balance.toString()) //this is the one that matters - }} - allowUseAll={true} - unit={token.symbol} - maxValue={maxValue} - variant="standard" - newStyle - isBridge={isBridge} - openTokenPicker={openTokenPicker} - /> - - - {!!altL1Bridge && depositFees? <> - - Estimated fee for bridging {value} {token.symbol} is {depositFees[altL1Bridge].fee} ETH - - : null} - - {!!convertToUSD && ( - - {`Amount in USD ${amountToUsd(value, lookupPrice, token).toFixed(2)}`} - - )} - - {warning && ( - - {parse(ETHstring)} - - )} - - - - - - - - ) -} - -export default React.memo(InputStepMultiChain) diff --git a/packages/boba/gateway/src/containers/modals/earn/EarnDepositModal.js b/packages/boba/gateway/src/containers/modals/earn/EarnDepositModal.js deleted file mode 100644 index dc99195efc..0000000000 --- a/packages/boba/gateway/src/containers/modals/earn/EarnDepositModal.js +++ /dev/null @@ -1,426 +0,0 @@ -import React from 'react' -import { connect } from 'react-redux' -import { isEqual } from 'util/lodash'; - -import { closeModal, openAlert } from 'actions/uiAction' -import { addLiquidity, getEarnInfo, fetchAllowance } from 'actions/earnAction' - -import Modal from 'components/modal/Modal' - -import { powAmount, toWei_String } from 'util/amountConvert' -import BN from 'bignumber.js' - -import { Box, Typography } from '@mui/material' -import { WrapperActionsModal } from 'components/modal/styles' - -import { earnL1, earnL2 } from 'actions/networkAction' -import networkService from 'services/networkService' -import { BigNumber, utils } from 'ethers' -import { NETWORK } from 'util/network/network.util' - -import { MaxInput } from 'components/global/InputMax' -import { Button } from 'components/global/button' -import { ModalTypography } from 'components/global/modalTypography' - -import { - EarnInputContainer, - EarnContent, - Flex, - EarnDetails, - ContainerMessage, -} from './styles' -class EarnDepositModal extends React.Component { - - constructor(props) { - - super(props) - - const { open } = this.props - const { stakeToken } = this.props.earn - const { bobaFeeChoice, netLayer, bobaFeePriceRatio } = this.props.setup - - this.state = { - open, - stakeToken, - stakeValue: '', - stakeValueValid: false, - value_Wei_String: '', - loading: false, - bobaFeeChoice, - netLayer, - netLayerNativeToken: networkService.networkGateway === NETWORK.ETHEREUM ? 'ETH' : netLayer === 'L1' ? networkService.L1NativeTokenSymbol : 'BOBA', - bobaFeePriceRatio, - max_Wei_String: '0', - max_Float_String: '0.0', - fee: '0' - } - } - - componentDidMount() { - this.getMaxTransferValue() - } - - async componentDidUpdate(prevState) { - - const { open } = this.props - const { stakeToken } = this.props.earn - const { bobaFeeChoice, netLayer } = this.props.setup - - if (prevState.open !== open) { - this.setState({ open }) - } - - if (!isEqual(prevState.setup.netLayer, netLayer)) { - this.setState({ netLayer }) - } - - if (!isEqual(prevState.setup.bobaFeeChoice, bobaFeeChoice)) { - this.setState({ bobaFeeChoice }) - } - - if (!isEqual(prevState.earn.stakeToken, stakeToken)) { - - if ( stakeToken.symbol !== this.state.netLayerNativeToken ) { - this.props.dispatch(fetchAllowance( - stakeToken.currency, - stakeToken.LPAddress - )) - } else { - // Set to some very big number to approved allowance in case of ETH. - // There is no need to query allowance for depositing ETH on the L1 or the L2 - this.props.dispatch({ - type: 'FETCH/ALLOWANCE/RESET', - payload: powAmount(10, 50) - }) - } - this.setState({ stakeToken }, () => this.getMaxTransferValue()) - } - - } - - componentWillUnmount() { - this.props.dispatch({ - type: 'FETCH/ALLOWANCE/RESET', - payload: '' - }) - } - - async getMaxTransferValue() { - - const { - stakeToken, - bobaFeeChoice, - bobaFeePriceRatio, - netLayer, - netLayerNativeToken - } = this.state - - let max_BN = BigNumber.from(stakeToken.balance.toString()) - - if (netLayer === 'L2') { - - let cost_BN = await networkService - .liquidityEstimate( - stakeToken.currency - ) - - let fee = '0' - - // both ETH and BOBA have 18 decimals so this is safe - if (stakeToken.symbol === netLayerNativeToken) { - // we are staking ETH - // since MetaMask does not know about BOBA, we need to subtract the ETH fee - // regardless of how we are paying, otherwise will get an error in MetaMask - max_BN = max_BN.sub(cost_BN) - // minimum ETH in account - max_BN = max_BN.sub(BigNumber.from(toWei_String(0.002, 18))) - } - else if (stakeToken.symbol === 'BOBA' && bobaFeeChoice) { - // we are staking BOBA and paying in BOBA - // so need to subtract the BOBA fee - max_BN = max_BN.sub(cost_BN.mul(BigNumber.from(bobaFeePriceRatio))) - // make sure user maintains minimum BOBA in account - max_BN = max_BN.sub(BigNumber.from(toWei_String(3.0, 18))) - } - else if (stakeToken.symbol === 'BOBA' && !bobaFeeChoice) { - // make sure user maintains minimum BOBA in account - max_BN = max_BN.sub(BigNumber.from(toWei_String(3.0, 18))) - } - else { - // do not adjust max_BN - } - - if (bobaFeeChoice && networkService.networkGateway === NETWORK.ETHEREUM) { - fee = utils.formatUnits(cost_BN.mul(BigNumber.from(bobaFeePriceRatio)), stakeToken.decimals) - } - else { - fee = utils.formatUnits(cost_BN, stakeToken.decimals) - } - - // if the max amount is less than the gas, - // set the max amount to zero - if (max_BN.lt(BigNumber.from('0'))) { - max_BN = BigNumber.from('0') - } - - this.setState({ - max_Float_String: utils.formatUnits(max_BN, stakeToken.decimals), - fee - }) - - } - else { - this.setState({ - max_Float_String: utils.formatUnits(max_BN, stakeToken.decimals) - }) - } - } - - handleClose() { - this.props.dispatch(closeModal("EarnDepositModal")) - } - - handleStakeValue( value ) { - - const { - stakeToken, - max_Float_String - } = this.state - - if (value && - Number(value) > 0.0 && - Number(value) <= Number(max_Float_String) - ) { - this.setState({ - stakeValue: value, - stakeValueValid: true, - value_Wei_String: toWei_String(value, stakeToken.decimals) - }) - } else { - this.setState({ - stakeValue: value, - stakeValueValid: false, - value_Wei_String: '' - }) - } - } - - async handleApprove() { - - const { - stakeToken, - value_Wei_String - } = this.state - - this.setState({ loading: true }) - - let approveTX - - if (stakeToken.L1orL2Pool === 'L2LP') { - approveTX = await this.props.dispatch(earnL2( - value_Wei_String, - stakeToken.currency, - )) - } - else if (stakeToken.L1orL2Pool === 'L1LP') { - approveTX = await this.props.dispatch(earnL1( - value_Wei_String, - stakeToken.currency, - )) - } - - if (approveTX) { - this.props.dispatch(openAlert("Amount was approved")) - this.props.dispatch(fetchAllowance( - stakeToken.currency, - stakeToken.LPAddress - )) - } - this.setState({ loading: false }) - - } - - async handleConfirm() { - - const { - stakeToken, - value_Wei_String - } = this.state - - this.setState({ loading: true }) - - const addLiquidityTX = await this.props.dispatch(addLiquidity( - stakeToken.currency, - value_Wei_String, - stakeToken.L1orL2Pool, - )) - - if (addLiquidityTX) { - this.props.dispatch(openAlert("Your liquidity was added")) - this.props.dispatch(getEarnInfo()) - } - - this.setState({ loading: false, stakeValue: '', value_Wei_String: '' }) - this.props.dispatch(closeModal("EarnDepositModal")) - } - - render() { - - const { - open, - stakeToken, - stakeValue, - stakeValueValid, - loading, - max_Float_String, - netLayer, - bobaFeeChoice, - fee, - netLayerNativeToken - } = this.state - - const { approvedAllowance } = this.props.earn - - let allowanceGTstake = false - - if (Number(approvedAllowance) > 0 && - Number(stakeValue) > 0 && - new BN(approvedAllowance).gte(powAmount(stakeValue, stakeToken.decimals)) - ) { - allowanceGTstake = true - } else if (Number(stakeValue) > 0 && - stakeToken.symbol === netLayerNativeToken - ) { - //do not need to approve ETH - allowanceGTstake = true - } - - // we do this because there is no fee estimation logic (yet) for this - // on L1 - let allowUseAll = netLayer === 'L2' ? true : false - - return ( - { - this.handleClose() - }} - title={`Stake`} - > - - - -
- Amount -
-
- - Balance: {max_Float_String} {stakeToken.symbol} - -
-
- this.handleStakeValue(val)} - /> - - - Fees - - Fee: {fee} {bobaFeeChoice ? 'BOBA' : 'ETH'} - - - - APY - 5.0% - - - Amount - - {stakeValue || '-'} {stakeToken.symbol} - - - -
- {!allowanceGTstake && stakeToken.symbol !== netLayerNativeToken && - <> - {stakeValueValid && - - - To stake {stakeValue} {stakeToken.symbol}, you first need to - approve this amount. - - - } - - -
) - } else if ( exitFee > Number(feeBalanceBOBA) ) { - //no token in this account - return ( - - -
- BOBA balance: {Number(feeBalanceBOBA)} -
- Insufficient BOBA balance to cover xChain message relay. You need at least {exitFee} BOBA. -
- -
) - } - - return ( - <> - - - {!isBridge && - - Classic Bridge to L1 ({`${token ? token.symbol : ''}`}) - - } - - {max_Float > 0.0 && - { - setAmount(i.target.value) - setValue_Wei_String(toWei_String(i.target.value, token.decimals)) - }} - onUseMax={(i)=>{ //they want to use the maximum - setAmount(max_Float) //so the display value updates for the user - setValue_Wei_String(token.balance.toString()) - }} - allowUseAll={allowUseAll} - unit={token.symbol} - maxValue={max_Float} - variant="standard" - newStyle - isBridge={isBridge} - openTokenPicker={openTokenPicker} - /> - } - - {max_Float === 0 && - - Loading... - - } - - - - {errorString !== '' && - - {errorString} - - } - - { !isBridge && loading && ( - - This window will close when your transaction has been signed and submitted. - - )} - - - - - {token && ( - - )} - - - - ) -} - -export default React.memo(DoExitStep) diff --git a/packages/boba/gateway/src/containers/modals/exit/steps/DoExitStepFast.js b/packages/boba/gateway/src/containers/modals/exit/steps/DoExitStepFast.js deleted file mode 100644 index 4f96f673c4..0000000000 --- a/packages/boba/gateway/src/containers/modals/exit/steps/DoExitStepFast.js +++ /dev/null @@ -1,491 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React, { useState, useEffect } from 'react' - -import { useDispatch, useSelector } from 'react-redux' - -import { depositL2LP } from 'actions/networkAction' -import { openModal } from 'actions/uiAction' -import { setCDMCompletion } from 'actions/transactionAction' - -import { - selectLoading, - selectSignatureStatus_exitLP, - selectLookupPrice, - selectL1FeeRateN, - selectFastExitCost, //estimated total cost of this exit - selectL1LPBalanceString, - selectL1LPPendingString, - selectL2BalanceBOBA, - selectL2BalanceETH, - selectL1LPLiquidity, - selectExitFee, - selectBobaFeeChoice, - selectBobaPriceRatio, -} from 'selectors' - - -import Button from 'components/button/Button' -import Input from 'components/input/Input' -import BridgeFee from 'components/bridgeFee/BridgeFee' - -import { amountToUsd, logAmount, toWei_String } from 'util/amountConvert' - -import { Box, Typography, useMediaQuery,useTheme } from '@mui/material' - -import { WrapperActionsModal } from 'components/modal/styles' - -import BN from 'bignumber.js' - -import { - fetchFastExitCost, - fetchL1LPBalance, - fetchL1LPPending, - fetchL1TotalFeeRate, - fetchL1FeeRateN, - fetchL2BalanceBOBA, - fetchL2BalanceETH, - fetchL1LPLiquidity, - fetchExitFee, -} from 'actions/balanceAction' - - -import networkService from 'services/networkService' - -function DoExitStepFast({ handleClose, token, isBridge, openTokenPicker }) { - - const dispatch = useDispatch() - - const [ value, setValue ] = useState('') - const [ value_Wei_String, setValue_Wei_String ] = useState('0') - const [ max_Float, setMax_Float ] = useState(0.0) // support for Use Max - a number like 0.09 ETH - - const [ errorString, setErrorString ] = useState('') - - const [ feeETH, setFeeETH ] = useState(0.0) - const [ feeBOBA, setFeeBOBA ] = useState(0.0) - - const [ LPRatio, setLPRatio ] = useState(0) - - const LPBalance = useSelector(selectL1LPBalanceString) - const LPPending = useSelector(selectL1LPPendingString) - const LPLiquidity = useSelector(selectL1LPLiquidity) - - const feeRateN = useSelector(selectL1FeeRateN) - - const cost = useSelector(selectFastExitCost) - - const feeBalanceETH = useSelector(selectL2BalanceETH) - const feeBalanceBOBA = useSelector(selectL2BalanceBOBA) - - const feeUseBoba = useSelector(selectBobaFeeChoice()) - const feePriceRatio = useSelector(selectBobaPriceRatio()) - - const [ validValue, setValidValue ] = useState(false) - - const loading = useSelector(selectLoading(['EXIT/CREATE'])) - - const lookupPrice = useSelector(selectLookupPrice) - const signatureStatus = useSelector(selectSignatureStatus_exitLP) - - const lpUnits = logAmount(LPBalance, token.decimals) - const balanceSubPending = lpUnits - logAmount(LPPending, token.decimals) //subtract the in flight exits - - const exitFee = useSelector(selectExitFee) - - function setAmount(value) { - - const balance = Number(logAmount(token.balance, token.decimals)) - - const tooSmall = new BN(value).lte(new BN(0.0)) - const tooBig = new BN(value).gt(new BN(max_Float)) - - setErrorString('') - - if (value <= 0) { - setValidValue(false) - setValue(value) - return false - } - else if (tooSmall) { - setValidValue(false) - setValue(value) - return false - } - else if (tooBig) { - setValidValue(false) - setValue(value) - return false - } - else if ( - exitFee > Number(feeBalanceBOBA)) { - setErrorString(`Insufficient BOBA balance to cover xChain message relay. You need at least ${exitFee} BOBA`) - setValidValue(false) - setValue(value) - return false - } - else if ( - token.symbol === 'ETH' && - (Number(value) + feeETH) > balance) { - if(feeUseBoba) - setErrorString('Warning: ETH amount + fees > balance. Even if you pay in BOBA, you still need to maintain a minimum ETH balance in your wallet') - else - setErrorString('Warning: ETH amount + fees > balance') - setValidValue(false) - setValue(value) - return false - } - else if ( - //pay BOBA, exit BOBA - check BOBA amount - feeUseBoba && - token.symbol === 'BOBA' && - (Number(value) + feeBOBA + exitFee) > balance) - { - // insufficient BOBA to cover the BOBA amount plus gas plus exitFee - setErrorString('Warning: BOBA amount + fees > balance') - setValidValue(false) - setValue(value) - return false - } - else if ( - // insufficient ETH to cover exit fees - // it does not matter if you are paying in ETH or BOBA - feeETH > Number(feeBalanceETH)) - { - // insufficient ETH to cover exit fees - if(feeUseBoba) - setErrorString('Warning: ETH balance too low. Even if you pay in BOBA, you still need to maintain a minimum ETH balance in your wallet') - else - setErrorString('Warning: ETH balance too low to cover gas') - setValidValue(false) - setValue(value) - return false - } - else if ( - // insufficient BOBA to cover exit fees - feeUseBoba && - (feeBOBA + exitFee) > Number(feeBalanceBOBA)) - { - setErrorString('Warning: BOBA balance too low to cover gas/fees') - setValidValue(false) - setValue(value) - return false - } - else if (Number(LPRatio) < 0.1) { - // not enough balance/liquidity ratio - // we always want some balance for unstaking - setErrorString('Warning: Insufficient balance in pool - reduce amount or use classical exit') - setValidValue(false) - setValue(value) - return false - } - else if (Number(value) > Number(balanceSubPending) * 0.9) { - //not enough absolute balance - //we don't want one large bridge to wipe out all the balance - //NOTE - this logic still allows bridgers to drain the entire pool, but just more slowly than before - //this is because the every time someone exits, the limit is recalculated - //via Number(LPBalance) * 0.9, and LPBalance changes over time - setErrorString('Warning: Insufficient balance in pool - reduce amount or use classical exit') - setValidValue(false) - setValue(value) - return false - } else { - //Whew, finally! - setValidValue(true) - setValue(value) - return true - } - - } - - const receivableAmount = (value) => { - return (Number(value) * ((100 - Number(feeRateN)) / 100)).toFixed(3) - } - - async function doExit() { - - let receipt = await dispatch( - depositL2LP( - token.address, - value_Wei_String - ) - ) - - if (receipt) { - dispatch(setCDMCompletion({ - CDMType: 'L2FastBridge', - CDMMessage: { - token: `${token.symbol}`, - receivedToken: `${receivableAmount(Number(value))} ${token.symbol}` - }, - CDMTransaction: { transactionHash: receipt.hash } - })) - dispatch(openModal('CDMCompletionModal')) - handleClose() - } - - } - - useEffect(() => { - if (typeof(token) !== 'undefined') { - dispatch(fetchL1LPBalance(token.addressL1)) - dispatch(fetchL1LPLiquidity(token.addressL1)) - dispatch(fetchL1LPPending(token.addressL2)) //lookup is, confusingly, via L2 token address - dispatch(fetchL1TotalFeeRate()) - dispatch(fetchL1FeeRateN(token.addressL1)) - dispatch(fetchFastExitCost(token.address)) - dispatch(fetchL2BalanceETH()) - dispatch(fetchL2BalanceBOBA()) - dispatch(fetchExitFee()) - } - // to clean up state and fix the - // error in console for max state update. - return ()=>{ - dispatch({type: 'BALANCE/L1/RESET'}) - } - }, [ token, dispatch ]) - - useEffect(() => { - const lbl = Number(logAmount(LPLiquidity, token.decimals)) - if(lbl > 0){ - const lbp = Number(logAmount(LPBalance, token.decimals)) - const LPR = lbp / lbl - setLPRatio(Number(LPR).toFixed(3)) - } - }, [ LPLiquidity, LPBalance, token.decimals ]) - - useEffect(() => { - if (signatureStatus && loading) { - //we are all set - can close the window - //transaction has been sent and signed - handleClose() - } - }, [ signatureStatus, loading, handleClose ]) - - useEffect(() => { - function estimateMax() { - - const safeCost = Number(cost) * 1.04 // 1.04 = safety margin on the cost - - setFeeETH(safeCost) - setFeeBOBA(safeCost * feePriceRatio) - - const balance = Number(logAmount(token.balance, token.decimals)) - - // because of MetaMask issue always have to limit ETH - if(token.symbol === networkService.L1NativeTokenSymbol) { - if(balance - safeCost > 0.0) - setMax_Float(balance - safeCost) - else - setMax_Float(0.0) - } - else if (token.symbol === 'BOBA' && feeUseBoba) { - if(balance - (safeCost * feePriceRatio) - exitFee > 0.0) - setMax_Float(balance - (safeCost * feePriceRatio) - exitFee) - else - setMax_Float(0.0) - } - else if (token.symbol === 'BOBA' && !feeUseBoba) { - if(balance - exitFee > 0.0) - setMax_Float(balance - exitFee) - else - setMax_Float(0.0) - } - else { - setMax_Float(balance) - } - } - if (Number(cost) > 0) estimateMax() - }, [ token, cost, feeUseBoba, feePriceRatio, exitFee ]) - - const theme = useTheme() - const isMobile = useMediaQuery(theme.breakpoints.down('md')) - - let buttonLabel = 'Cancel' - if( loading ) buttonLabel = 'Close' - - let estGas = '' - if(feeETH && Number(feeETH) > 0) { - if(feeUseBoba) { - estGas = `${Number(feeBOBA).toFixed(4)} BOBA` - } else { - estGas = `${Number(feeETH).toFixed(4)} ${networkService.L1NativeTokenSymbol}` - } - } - - // prohibit ExitAll when paying with the token that is to be exited - let allowUseAll = true - if(token.symbol === networkService.L1NativeTokenSymbol) { - allowUseAll = false - } - - else if (token.symbol === 'BOBA' && feeUseBoba) { - allowUseAll = false - } - - let receiveL1 = `${receivableAmount(value)} ${token.symbol} - ${!!amountToUsd(value, lookupPrice, token) ? `($${amountToUsd(value, lookupPrice, token).toFixed(2)})`: ''}` - - if( Number(logAmount(token.balance, token.decimals)) === 0) { - //no token in this account - return ( - - - Sorry, nothing to exit - no {token.symbol} in this wallet - - - ) - } else if ( exitFee > Number(feeBalanceBOBA) ) { - //no token in this account - return ( - - -
- BOBA balance: {Number(feeBalanceBOBA)} -
- Insufficient BOBA balance to cover xChain message relay. You need at least {exitFee} BOBA. -
- -
) - } - - return ( - <> - - {!isBridge && - - Fast Bridge to L1 - - } - - {max_Float > 0.0 && - { - setAmount(i.target.value) - setValue_Wei_String(toWei_String(i.target.value, token.decimals)) - }} - onUseMax={(i)=>{ // they want to use the maximum - setAmount(max_Float) // so the display value updates for the user - setValue_Wei_String(token.balance.toString()) // this is ok because BridgeAll is blocked for both ETH and BOBA - }} - allowUseAll={allowUseAll} - unit={token.symbol} - maxValue={max_Float} - variant="standard" - newStyle - loading={loading} - isBridge={isBridge} - openTokenPicker={openTokenPicker} - /> - } - - {max_Float === 0 && - - Loading... - - } - - - - {errorString !== '' && - - {errorString} - - } - - {(Number(LPRatio) < 0.10 && Number(value) > Number(balanceSubPending) * 0.90) && ( - - The pool's balance and balance/liquidity ratio are too low. - Please use the classic bridge. - - )} - - {(Number(LPRatio) < 0.10 && Number(value) <= Number(balanceSubPending) * 0.90) && ( - - The pool's balance/liquidity ratio (of {Number(LPRatio).toFixed(2)}) is too low. - Please use the classic bridge. - - )} - - {(Number(LPRatio) >= 0.10 && Number(value) > Number(balanceSubPending) * 0.90) && ( - - The pool's balance (of {Number(balanceSubPending).toFixed(2)} including inflight bridges) is too low. - Please use the classic bridge or reduce the amount. - - )} - - {!isBridge && loading && ( - - This window will automatically close when your transaction has been signed and submitted. - - )} - - - - - - - - ) -} - -export default React.memo(DoExitStepFast) diff --git a/packages/boba/gateway/src/containers/modals/index.tsx b/packages/boba/gateway/src/containers/modals/index.tsx deleted file mode 100644 index 55c2ea5d29..0000000000 --- a/packages/boba/gateway/src/containers/modals/index.tsx +++ /dev/null @@ -1,196 +0,0 @@ -import React from 'react' -import { useSelector } from 'react-redux' -import { selectBridgeType, selectModalState } from 'selectors' -import CDMCompletionModal from './CDMCompletion/CDMCompletionModal' -import CastVoteModal from './dao/CastVoteModal' -import DelegateDaoModal from './dao/DelegateDaoModal' -import NewProposalModal from './dao/NewProposalModal' -import DepositBatchModal from './deposit/DepositBatchModal' -import DepositModal from './deposit/DepositModal' -import EarnDepositModal from './earn/EarnDepositModal' -import EarnWithdrawModal from './earn/EarnWithdrawModal' -import ExitModal from './exit/ExitModal' -import InstallMetaMaskModal from './noMetaMask/InstallMetaMaskModal/InstallMetaMaskModal' -import NoMetaMaskModal from './noMetaMask/NoMetaMaskModal' -import SwitchNetworkModal from './switchNetwork/SwitchNetworkModal' -import TokenPickerModal from './tokenPicker/TokenPickerModal' -import TransferModal from './transfer/TransferModal' -import TransferNFTModal from './transfer/TransferNFTModal' -import ManageLockModal from './veBoba/ManageLockModal' -import WrongNetworkModal from './wrongNetwork/WrongNetworkModal' -import TransferPendingModal from './transferPending/TransferPending' -import WalletSelectorModal from './walletSelector/WalletSelectorModal' -import DepositStake from './stake/DepositStake' -import SettingsModal from './settings' -import NetworkPickerModal from './networkPicker' -import BridgeConfirmModal from './BridgeConfirmModal' -import BridgeInProgressModal from './BridgeInProgressModal' -import TransactionSuccessModal from './TransactionSuccessModal' - -/** - * - * NOTE:TODO: https://github.com/bobanetwork/boba/pull/982#discussion_r1253868688 - */ - -const ModalContainer = () => { - const depositModalState = useSelector(selectModalState('depositModal')) - const depositBatchModalState = useSelector( - selectModalState('depositBatchModal') - ) - - const transferModalState = useSelector(selectModalState('transferModal')) - const transferNFTModalState = useSelector( - selectModalState('transferNFTModal') - ) - - const exitModalState = useSelector(selectModalState('exitModal')) - const tokenPickerModalState = useSelector(selectModalState('tokenPicker')) - const transferPendingModalState = useSelector( - selectModalState('transferPending') - ) - const wrongNetworkModalState = useSelector( - selectModalState('wrongNetworkModal') - ) - const noMetaMaskModalState = useSelector(selectModalState('noMetaMaskModal')) - const installMetaMaskModalState = useSelector( - selectModalState('installMetaMaskModal') - ) - const manageLockModalState = useSelector(selectModalState('manageLock')) - const walletSelectorModalState = useSelector( - selectModalState('walletSelectorModal') - ) - const CDMCompletionModalState = useSelector( - selectModalState('CDMCompletionModal') - ) - const switchNetworkModalState = useSelector( - selectModalState('switchNetworkModal') - ) - const SettingsModalState = useSelector(selectModalState('settingsModal')) - - const fast = useSelector(selectModalState('fast')) - const token = useSelector(selectModalState('token')) - const tokenIndex = useSelector(selectModalState('tokenIndex')) - const lock = useSelector(selectModalState('lock')) - const proposalId = useSelector(selectModalState('proposalId')) - - const EarnDepositModalState = useSelector( - selectModalState('EarnDepositModal') - ) - - const StakeDepositModalState = useSelector( - selectModalState('StakeDepositModal') - ) - - const EarnWithdrawModalState = useSelector( - selectModalState('EarnWithdrawModal') - ) - - const delegateBobaDaoModalState = useSelector( - selectModalState('delegateDaoModal') - ) - - const proposalBobaDaoModalState = useSelector( - selectModalState('newProposalModal') - ) - const castVoteModalState = useSelector(selectModalState('castVoteModal')) - - const networkPickerModalState = useSelector(selectModalState('networkPicker')) - - const bridgeConfirmModalState = useSelector( - selectModalState('bridgeConfirmModal') - ) - - const bridgeInProgressModalState = useSelector( - selectModalState('bridgeInProgress') - ) - - const transactionSuccessModalState = useSelector( - selectModalState('transactionSuccess') - ) - - return ( - <> - {!!depositModalState && ( - - )} - {!!depositBatchModalState && ( - - )} - {!!transferModalState && ( - - )} - {!!transferNFTModalState && ( - - )} - {!!exitModalState && ( - - )} - {!!EarnDepositModalState && ( - - )} - {!!EarnWithdrawModalState && ( - - )} - {!!StakeDepositModalState && ( - - )} - {!!delegateBobaDaoModalState && ( - - )} - {!!proposalBobaDaoModalState && ( - - )} - {!!castVoteModalState && ( - - )} - {!!tokenPickerModalState && ( - - )} - {!!transferPendingModalState && ( - - )} - {!!wrongNetworkModalState && ( - - )} - {!!noMetaMaskModalState && ( - - )} - {!!installMetaMaskModalState && ( - - )} - {!!manageLockModalState && ( - - )} - {!!walletSelectorModalState && ( - - )} - {!!CDMCompletionModalState && ( - - )} - {!!switchNetworkModalState && ( - - )} - {!!SettingsModalState && } - {!!networkPickerModalState && ( - - )} - - {!!bridgeConfirmModalState && ( - - )} - - {!!bridgeInProgressModalState && ( - - )} - - {!!transactionSuccessModalState && ( - - )} - - ) -} - -export default ModalContainer diff --git a/packages/boba/gateway/src/containers/modals/networkPicker/index.styles.ts b/packages/boba/gateway/src/containers/modals/networkPicker/index.styles.ts deleted file mode 100644 index eea847c11c..0000000000 --- a/packages/boba/gateway/src/containers/modals/networkPicker/index.styles.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Typography } from 'components/global' -import styled, { css } from 'styled-components' - -export const NetworkPickerModalContainer = styled.div` - width: 100%; -` diff --git a/packages/boba/gateway/src/containers/modals/networkPicker/index.tsx b/packages/boba/gateway/src/containers/modals/networkPicker/index.tsx deleted file mode 100644 index 44821ef580..0000000000 --- a/packages/boba/gateway/src/containers/modals/networkPicker/index.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { NetworkPickerModalContainer } from './index.styles' -import { closeModal } from 'actions/uiAction' -import Modal from 'components/modal/Modal' -import React, { ElementType, FC } from 'react' -import { useDispatch, useSelector } from 'react-redux' -import { ListLabel } from '../tokenPicker/styles' -import { NetworkList } from 'components/bridge/NetworkPickerList' - -interface NetworkPickerModalProps { - open: boolean -} - -const NetworkPickerModal: FC = ({ - open, -}: NetworkPickerModalProps) => { - const dispatch = useDispatch() - - const handleClose = () => { - dispatch(closeModal('networkPicker')) - } - - return ( - - Network Names - - - - - ) -} - -export default NetworkPickerModal diff --git a/packages/boba/gateway/src/containers/modals/noMetaMask/InstallMetaMaskModal/InstallMetaMaskModal.js b/packages/boba/gateway/src/containers/modals/noMetaMask/InstallMetaMaskModal/InstallMetaMaskModal.js deleted file mode 100644 index be0c69aed5..0000000000 --- a/packages/boba/gateway/src/containers/modals/noMetaMask/InstallMetaMaskModal/InstallMetaMaskModal.js +++ /dev/null @@ -1,76 +0,0 @@ -import React from 'react'; -import { useDispatch } from 'react-redux'; - -import { Box, Typography } from '@mui/material' -import { Circle } from '@mui/icons-material' - -import { closeModal } from 'actions/uiAction'; -import { setConnect } from 'actions/setupAction'; - -import Button from 'components/button/Button'; -import Modal from 'components/modal/Modal'; - -function InstallMetaMaskModal({open}) { - - const dispatch = useDispatch(); - - const handleClose = () => { - dispatch(closeModal('installMetaMaskModal')); - dispatch(setConnect(false)); - } - - const handleRefresh = () => { - handleClose(); - window.location.reload(); - } - - return ( - - - - - Install the MetaMask extension - - - We recommend pinning MetaMask to your taskbar for quicker access to your wallet. - - - - - Create New Wallet Or Import Wallet - - - Never share your secret phrase with anyone. - - - - - Refresh your browser - - - Once you are done with setting up wallet, click below refresh button to load up the extensions and access gateway. - - - - - - - - ) -} - -export default React.memo(InstallMetaMaskModal); diff --git a/packages/boba/gateway/src/containers/modals/noMetaMask/NoMetaMaskModal.js b/packages/boba/gateway/src/containers/modals/noMetaMask/NoMetaMaskModal.js deleted file mode 100644 index 6a6563317b..0000000000 --- a/packages/boba/gateway/src/containers/modals/noMetaMask/NoMetaMaskModal.js +++ /dev/null @@ -1,50 +0,0 @@ -import React from 'react'; -import { useDispatch } from 'react-redux'; - -import { Box } from '@mui/material'; - -import { closeModal, openModal } from 'actions/uiAction'; -import Button from 'components/button/Button'; -import Modal from 'components/modal/Modal'; -import { MM_EXTENTION_URL } from 'util/constant'; -import { setConnect } from 'actions/setupAction'; - -function NoMetaMaskModal({open}) { - - const dispatch = useDispatch(); - - const handleClose = () => { - dispatch(closeModal('noMetaMaskModal')); - dispatch(setConnect(false)); - } - - const handleAddMetaMask = () => { - window.open(MM_EXTENTION_URL, '_blank'); - dispatch(openModal('installMetaMaskModal')); - handleClose() - } - - return ( - - - - - - ) -} - -export default React.memo(NoMetaMaskModal); diff --git a/packages/boba/gateway/src/containers/modals/settings/index.tsx b/packages/boba/gateway/src/containers/modals/settings/index.tsx deleted file mode 100644 index 18f7e90da4..0000000000 --- a/packages/boba/gateway/src/containers/modals/settings/index.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import Modal from 'components/modal/Modal' -import React, { FC } from 'react' -import { useDispatch, useSelector } from 'react-redux' -import { closeModal } from 'actions/uiAction' -import { - SettingSubTitle, - SettingTitle, - SettingsAction, - SettingsItem, - SettingsText, - SettingsWrapper, -} from './styles' -import { SwitchButton } from 'components/global' -import { setActiveNetworkType } from 'actions/networkAction' -import { NETWORK_TYPE } from 'util/network/network.util' -import { selectActiveNetworkType, selectBridgeToAddressState } from 'selectors' -import { setBridgeToAddress } from 'actions/bridgeAction' - -interface SettingsModalProps { - open: boolean -} - -const SettingsModal: FC = ({ open }) => { - const dispatch = useDispatch() - const activeNetworkType = useSelector(selectActiveNetworkType()) - const bridgeToAddressEnable = useSelector(selectBridgeToAddressState()) - - const handleClose = () => { - dispatch(closeModal('settingsModal')) - } - - const onChangeNetworkType = (value: boolean) => { - dispatch( - setActiveNetworkType({ - networkType: value ? NETWORK_TYPE.TESTNET : NETWORK_TYPE.MAINNET, - }) - ) - } - - const onChangeDestinationAddress = (value: boolean) => { - dispatch(setBridgeToAddress(value)) - } - - return ( - - - - - Show Testnets - - Testnets will be available to bridge - - - - onChangeNetworkType(v)} - /> - - - - - Add Destination Address - - Allows you to transfer to a different address - - - - - - - - - - ) -} - -export default SettingsModal diff --git a/packages/boba/gateway/src/containers/modals/settings/styles.ts b/packages/boba/gateway/src/containers/modals/settings/styles.ts deleted file mode 100644 index dbd20b339e..0000000000 --- a/packages/boba/gateway/src/containers/modals/settings/styles.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { Typography } from 'components/global' -import styled from 'styled-components' - -export const SettingsWrapper = styled.div` - display: flex; - flex-direction: column; - width: 100%; - gap: 16px; -` - -export const SettingsItem = styled.div` - display: flex; - justify-content: space-between; - width: 100%; -` -export const SettingsText = styled.div` - display: flex; - flex-direction: column; - justify-content: space-between; - width: 100%; - flex: 1; -` -export const SettingsAction = styled.div` - display: flex; - justify-content: space-between; -` -export const SettingSubTitle = styled(Typography).attrs({ - variant: 'subtitle', -})` - color: ${({ theme }) => - theme.name === 'light' ? theme.colors.gray[700] : theme.colors.gray[100]}; -` -export const SettingTitle = styled(Typography).attrs({ - variant: 'body2', -})` - color: ${(props) => props.theme.color}; -` diff --git a/packages/boba/gateway/src/containers/modals/stake/DepositStake.tsx b/packages/boba/gateway/src/containers/modals/stake/DepositStake.tsx deleted file mode 100644 index a1dff0e34b..0000000000 --- a/packages/boba/gateway/src/containers/modals/stake/DepositStake.tsx +++ /dev/null @@ -1,221 +0,0 @@ -import React, { useEffect, useState } from 'react' -import { connect, useDispatch, useSelector } from 'react-redux' - -import { openAlert, closeModal } from 'actions/uiAction' - -import Modal from 'components/modal/Modal' - -import { Button } from 'components/global/button' - -import { StakeInputContainer, Flex, StakeContent, StakeDetails } from './styles' - -import { getFS_Saves, getFS_Info, addFS_Savings } from 'actions/fixedAction' - -import { toWei_String } from 'util/amountConvert' -import networkService from 'services/networkService' -import { BigNumber, utils } from 'ethers' -import { MaxInput } from 'components/global/InputMax' - -import { ModalTypography } from 'components/global/modalTypography' -import { selectFixed, selectSetup, selectBalance } from 'selectors' - -const DepositStake = (props: any) => { - const { stakeInfo } = useSelector(selectFixed()) - const { accountEnabled, netLayer, bobaFeeChoice, bobaFeePriceRatio } = - useSelector(selectSetup()) - const balance = useSelector(selectBalance()) - const { layer2 } = balance - - const dispatch = useDispatch() - - const [state, setState] = useState({ - max_Float_String: '0.0', - fee: '0', - stakeValue: '0.0', - value_Wei_String: '', - }) - - useEffect(() => { - dispatch(getFS_Saves()) - dispatch(getFS_Info()) - getMaxTransferValue() - }, []) - - useEffect(() => { - getMaxTransferValue() - }, [layer2]) - - const getMaxTransferValue = async () => { - // as staking BOBA check the bobabalance - const token: any = Object.values(layer2).find( - (t: any) => t['symbolL2'] === 'BOBA' - ) - - // BOBA available prepare transferEstimate - if (token) { - let max_BN = BigNumber.from(token.balance.toString()) - let fee = '0' - - if (netLayer === 'L2') { - const cost_BN: any = await networkService.savingEstimate() - - if (bobaFeeChoice) { - // we are staking BOBA and paying in BOBA - // so need to subtract the BOBA fee - max_BN = max_BN.sub(cost_BN.mul(BigNumber.from(bobaFeePriceRatio))) - } - - // make sure user maintains minimum BOBA in account - max_BN = max_BN.sub(BigNumber.from(toWei_String(3.0, 18))) - - if (bobaFeeChoice) { - fee = utils.formatUnits( - cost_BN.mul(BigNumber.from(bobaFeePriceRatio)), - token.decimals - ) - } else { - fee = utils.formatUnits(cost_BN, token.decimals) - } - } - - if (max_BN.lt(BigNumber.from('0'))) { - max_BN = BigNumber.from('0') - } - - setState((prevState) => ({ - ...prevState, - max_Float_String: utils.formatUnits(max_BN, token.decimals), - fee, - })) - } - } - - const handleStakeValue = (value: any) => { - const { max_Float_String } = state - - if ( - value && - Number(value) > 0.0 && - Number(value) <= Number(max_Float_String) - ) { - setState((prevState) => ({ - ...prevState, - stakeValue: value, - stakeValueValid: true, - value_Wei_String: toWei_String(value, 18), - })) - } else { - setState((prevState) => ({ - ...prevState, - stakeValue: value, - stakeValueValid: false, - value_Wei_String: '', - })) - } - } - - const handleConfirm = async () => { - const { value_Wei_String } = state - - setState((prevState) => ({ ...prevState, loading: true })) - - const addTX = await dispatch(addFS_Savings(value_Wei_String)) - - if (addTX) { - dispatch(openAlert('Your BOBA were staked')) - } - - setState((prevState) => ({ - ...prevState, - loading: false, - stakeValue: '', - value_Wei_String: '', - })) - handleClose() - } - - let totalBOBAstaked = 0 - Object.keys(stakeInfo).forEach((v, i) => { - if (stakeInfo[i].isActive) { - totalBOBAstaked = totalBOBAstaked + Number(stakeInfo[i].depositAmount) - } - }) - - const handleClose = () => { - dispatch(closeModal('StakeDepositModal')) - } - - return ( - { - handleClose() - }} - title="Stake" - > - - - Stake Boba and earn rewards. - - - - -
- Amount -
-
- - Balance: {state.max_Float_String} BOBA - -
-
- { - handleStakeValue(value) - }} - /> -
- - - Fees - - Fee: {state.fee} {bobaFeeChoice ? 'BOBA' : 'ETH'} - - - - APY - 5.0% - - - Amount - - {state.stakeValue || '-'} - - - - - {netLayer === 'L2' && ( - - ) : null} - - -
- ); -} - -export default React.memo(TransferModal) diff --git a/packages/boba/gateway/src/containers/modals/transfer/TransferNFTModal.js b/packages/boba/gateway/src/containers/modals/transfer/TransferNFTModal.js deleted file mode 100644 index c11a7454a1..0000000000 --- a/packages/boba/gateway/src/containers/modals/transfer/TransferNFTModal.js +++ /dev/null @@ -1,119 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React, { useState } from 'react' -import { useDispatch, useSelector } from 'react-redux' - -import { transferNFT } from 'actions/networkAction' -import { closeModal, openAlert } from 'actions/uiAction' -import { selectLoading } from 'selectors' - -import { Box, Typography, useMediaQuery,useTheme } from '@mui/material' - - -import Button from 'components/button/Button' -import Modal from 'components/modal/Modal' -import Input from 'components/input/Input' - -import { WrapperActionsModal } from 'components/modal/styles' - -function TransferNFTModal ({ open, token }) { - - const dispatch = useDispatch() - - const [ recipient, setRecipient ] = useState('') - - const loading = useSelector(selectLoading([ 'TRANSFER/CREATE' ])) - - const theme = useTheme() - const isMobile = useMediaQuery(theme.breakpoints.down('md')) - - async function submit () { - if ( token.address && recipient ) - { - const transferResponseGood = await dispatch( - transferNFT(recipient, token) - ) - if (transferResponseGood) dispatch(openAlert('NFT transfer submitted')) - handleClose() - } - } - - function handleClose () { - setRecipient('') - dispatch(closeModal('transferNFTModal')) - } - - return ( - - - - Transfer an NFT to another Boba wallet - - - - To L2 Address: - - - - setRecipient(i.target.value)} - fullWidth - paste - sx={{fontSize: '50px', marginBottom: '20px'}} - /> - - - - - CAUTION: This function is only for transfering an NFT from one Boba wallet to another Boba wallet. - You cannot directly transfer an NFT from a Boba wallet to an L1 address or to another chain. - Your NFT will be lost if you try to do so. You can bridge NFTs to other chains on NFT marketplaces - that support bridging. - - - - - {!isMobile ? ( - - ) : null} - - - - ); -} - -export default React.memo(TransferNFTModal) diff --git a/packages/boba/gateway/src/containers/modals/transferPending/TransferPending.js b/packages/boba/gateway/src/containers/modals/transferPending/TransferPending.js deleted file mode 100644 index b8eec2b515..0000000000 --- a/packages/boba/gateway/src/containers/modals/transferPending/TransferPending.js +++ /dev/null @@ -1,32 +0,0 @@ -import { Box, CircularProgress, Typography } from '@mui/material'; -import { closeModal } from 'actions/uiAction'; -import Modal from 'components/modal/Modal'; -import React from 'react' -import { useDispatch } from 'react-redux'; - -function TransferPendingModal({open}) { - - const dispatch = useDispatch(); - - function handleClose () { - dispatch(closeModal('transferPending')); - } - - return ( - - - - Waiting for confirmation from MetaMask - - - ) -} - -export default React.memo(TransferPendingModal); diff --git a/packages/boba/gateway/src/containers/modals/transferPending/TransferPending.styles.js b/packages/boba/gateway/src/containers/modals/transferPending/TransferPending.styles.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/boba/gateway/src/containers/modals/veBoba/IncreaseLock.js b/packages/boba/gateway/src/containers/modals/veBoba/IncreaseLock.js deleted file mode 100644 index 4233a80bed..0000000000 --- a/packages/boba/gateway/src/containers/modals/veBoba/IncreaseLock.js +++ /dev/null @@ -1,221 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import { useDispatch, useSelector } from 'react-redux'; - -import {convertDate, Now, addYear, addDays} from 'util/dates' -import DatePicker from 'react-datepicker'; - -import { Box, IconButton, Typography, useTheme } from '@mui/material'; - -import { BigNumber, utils } from 'ethers'; - -import { openAlert } from 'actions/uiAction'; -import { extendLockTime, increaseLockAmount } from 'actions/veBobaAction'; -import { - selectlayer2Balance, - selectAccountEnabled, - selectLayer, - selectLoading -} from 'selectors'; - -import Button from 'components/button/Button'; -import CalenderIcon from 'components/icons/CalenderIcon'; -import Input from 'components/input/Input'; - -import { useRef } from 'react'; -import "react-datepicker/dist/react-datepicker.css"; -import { toWei_String } from 'util/amountConvert'; - -import Styles from './ManageLockModal.module.scss'; -import * as S from './ManageLockModal.styles'; -import * as G from 'containers/Global.styles'; - -function IncreaseLock({ - handleClose, - lockInfo -}) { - - const { - tokenId, - lockedAmount, - expiry, - balance - } = lockInfo - - const dispatch = useDispatch() - const theme = useTheme() - - const layer = useSelector(selectLayer()) - const accountEnabled = useSelector(selectAccountEnabled()) - const layer2 = useSelector(selectlayer2Balance) - - const increaseLoading = useSelector(selectLoading([ 'LOCK/INCREASE_AMOUNT' ])) - const extendLoading = useSelector(selectLoading([ 'LOCK/EXTEND_TIME' ])) - - const datePickerRef = useRef() - - const [ amountTo, setAmountTo ] = useState(''); - const [ votingPower, setVotingPower ] = useState(0); - const [ expirtyTo, setExpiryTo ] = useState(convertDate(expiry, 'YYYY-MM-DD')); - - const [ maxBalance, setMaxBalance ] = useState(0); - - useEffect(() => { - if (expiry) { - setExpiryTo(convertDate(expiry, 'YYYY-MM-DD')); - } - }, [ expiry ]) - - useEffect(() => { - const endD = convertDate(expirtyTo); - const currD = Now(); - let secondsYear = 365 * 24 * 3600; - let secondsTillExpiry = endD.diff(currD, 'days') * 24 * 3600 - let vpower = (secondsTillExpiry / secondsYear) * (Number(lockedAmount) + Number(amountTo)); - setVotingPower(vpower.toFixed(2)) - }, [ amountTo, lockedAmount, expirtyTo ]) - - useEffect(() => { - if (layer2 && layer2.length > 0) { - const token = Object.values(layer2).find((t) => t[ 'symbolL2' ] === 'BOBA') - if (token) { - let max_BN = BigNumber.from(token.balance.toString()) - setMaxBalance(utils.formatUnits(max_BN, token.decimals)) - } - } - - }, [ layer2 ]); - - const onExtendTime = async () => { - const endD = convertDate(expirtyTo); - const currD = Now(); - // expiry duration in seconds - const diffD = endD.diff(currD, 'days') * 24 * 3600; - - const res = await dispatch(extendLockTime({ - tokenId, - lock_duration: diffD - })); - if (res) { - dispatch(openAlert('Lock time extended.')) - } - - handleClose(true); - } - - const onIncreaseAmount = async () => { - - const res = await dispatch(increaseLockAmount( - { - value_Wei_String: toWei_String(amountTo, 18), - tokenId - } - )); - - if (res) { - dispatch(openAlert('Lock amount increased.')) - } - - handleClose(true); - } - - const openDatePicker = () => { - let ele = datePickerRef.current; - ele.setFocus(true); - } - - - return - - - BOBA Balance: - {maxBalance} - - { setAmountTo(i.target.value) }} - onUseMax={i => { setAmountTo(maxBalance) }} - newStyle - disabled={!accountEnabled || layer !== 'L2'} - variant="standard" - /> - - - - - - - Lock for - - - - { setExpiryTo(convertDate(date,'yyyy-MM-DD')) }} - calendarClassName={theme.palette.mode} - /> - - - { - openDatePicker() - }} component="span"> - - - - - - - - - - - - Your voting power will be - - - {balance} {'->'} {votingPower}' - - - - - {lockedAmount} locked - - - until {convertDate(expiry,'YYYY/MM/DD')} - - - - -} - -export default IncreaseLock; diff --git a/packages/boba/gateway/src/containers/modals/veBoba/ManageLockModal.js b/packages/boba/gateway/src/containers/modals/veBoba/ManageLockModal.js deleted file mode 100644 index 92e744f292..0000000000 --- a/packages/boba/gateway/src/containers/modals/veBoba/ManageLockModal.js +++ /dev/null @@ -1,58 +0,0 @@ -import React, { useEffect, useState } from 'react' -import { useDispatch } from 'react-redux' - -import Modal from 'components/modal/Modal' - -import { closeModal } from 'actions/uiAction' - -import WithdrawLock from './WithdrawLock' -import {Now,convertDate} from 'util/dates' -import IncreaseLock from './IncreaseLock' -import { fetchLockRecords } from 'actions/veBobaAction' - - -function ManageLockModal({ - open, - lock -}) { - const dispatch = useDispatch() - - const [ isWithdrawable, setisWithdrawable ] = useState(false); - - useEffect(() => { - if (lock) { - let today = Now() - let expiry = convertDate(lock.expiry); - - let expired = expiry.isBefore(today); - setisWithdrawable(expired); // whether lock is withdrawable or not base expiry. - } - }, [ lock ]); - - const handleClose = (doReload = false) => { - dispatch(closeModal('manageLock')) - if (doReload) { - dispatch(fetchLockRecords()) - } - } - - return handleClose()} - maxWidth="xs" - title={'Manage Existing Lock'} - newStyle={true} - > - {isWithdrawable ? - - : - } - -} - -export default ManageLockModal; diff --git a/packages/boba/gateway/src/containers/modals/veBoba/ManageLockModal.module.scss b/packages/boba/gateway/src/containers/modals/veBoba/ManageLockModal.module.scss deleted file mode 100644 index d406772574..0000000000 --- a/packages/boba/gateway/src/containers/modals/veBoba/ManageLockModal.module.scss +++ /dev/null @@ -1,31 +0,0 @@ -@import 'index.scss'; - -.datePickerInput { - position: relative; - - &::after { - content: ''; - width: 0; - height: 0; - position: absolute; - right: 10px; - font-size: 2rem; - bottom: 15px; - } - - input { - background: transparent; - border: none; - color: white; - font-weight: 300; - font-size: 2rem; - - &:focus-visible { - outline: none - } - } -} - -.popperStyle { - z-index: 3; -} diff --git a/packages/boba/gateway/src/containers/modals/veBoba/ManageLockModal.styles.js b/packages/boba/gateway/src/containers/modals/veBoba/ManageLockModal.styles.js deleted file mode 100644 index 8c5797244b..0000000000 --- a/packages/boba/gateway/src/containers/modals/veBoba/ManageLockModal.styles.js +++ /dev/null @@ -1,26 +0,0 @@ -import { Box, Grid } from "@mui/material"; -import { styled } from '@mui/material/styles'; - -export const Container = styled(Box)(({ theme }) => ({ - -})) - -export const LockFormContainer = styled(Grid)(({ theme }) => ({ - borderRadius: theme.palette.primary.borderRadius, - background: theme.palette.background.secondary, - display: 'flex', - flexDirection: 'column', - width: '100%' -})); - -export const LockRecordTitle = styled(Box)(({ theme }) => ({ - borderRadius: theme.palette.primary.borderRadius, - background: theme.palette.background.secondary -})) - -export const InlineContainer = styled(Box)(({ theme, children, ...props }) => ({ - display: 'flex', - justifyContent: 'space-between', - alignItems: 'center', - ...props -})) diff --git a/packages/boba/gateway/src/containers/modals/veBoba/WithdrawLock.js b/packages/boba/gateway/src/containers/modals/veBoba/WithdrawLock.js deleted file mode 100644 index 63da2a8aff..0000000000 --- a/packages/boba/gateway/src/containers/modals/veBoba/WithdrawLock.js +++ /dev/null @@ -1,80 +0,0 @@ -import React from 'react'; -import { useDispatch } from 'react-redux'; -import { Box, Typography } from '@mui/material'; - -import { openAlert } from 'actions/uiAction'; -import { withdrawLock } from 'actions/veBobaAction'; - -import Button from 'components/button/Button'; - -import BobaNFTGlass from 'assets/images/boba2/BobaNFTGlass.svg'; - -import * as G from 'containers/Global.styles'; - -import {convertDate} from 'util/dates' - -function WithdrawLock({ - handleClose, - lockInfo -}) { - - const { - tokenId, - lockedAmount, - expiry - } = lockInfo - - const dispatch = useDispatch() - - const onWithdraw = async (tokenId) => { - const res = await dispatch(withdrawLock({tokenId})); - if (res) { - dispatch(openAlert('Lock Withdraw successful.')) - } - - handleClose(true); - } - - return - - - glass - - - - NFT ID: - - - #{tokenId} - - - - - - Lock Expiry : - - - {convertDate(expiry,'yyyy-MM-DD')} - - - - - Available Withdraw Amount - - - {lockedAmount} Boba - - - - -} - -export default WithdrawLock; diff --git a/packages/boba/gateway/src/containers/modals/walletSelector/WalletSelectorModal.js b/packages/boba/gateway/src/containers/modals/walletSelector/WalletSelectorModal.js deleted file mode 100644 index 68a457931e..0000000000 --- a/packages/boba/gateway/src/containers/modals/walletSelector/WalletSelectorModal.js +++ /dev/null @@ -1,117 +0,0 @@ - -import React, { useState } from 'react' -import { useDispatch } from 'react-redux' - -import { closeModal } from 'actions/uiAction' -import { - setConnectBOBA, - setConnectETH, -} from 'actions/setupAction.js' - -import Modal from 'components/modal/Modal' -import { Typography } from 'components/global/typography' -import { Svg } from 'components/global/svg' -import networkService from 'services/networkService' -import metaMaskLogo from 'assets/images/metamask.svg' -import walletConnectLogo from 'assets/images/walletconnect.svg' -import ArrowIcon from 'assets/images/icons/arrowright.svg' - -import { Wallets, Wallet, Icon, ArrowContainer, IconContainer } from './styles' - -import { useWalletConnect } from 'hooks/useWalletConnect' -import { setConnect } from 'actions/setupAction' -import styled from 'styled-components' - -const StyledSvg = styled(Svg)` - display: flex; - svg { - fill: ${({ theme }) => theme.name == 'light' ? theme.colors.gray[ 600 ] : theme.colors.gray[ 100 ]} - } -` - -const WalletSelectorModal = ({ open }) => { - - const { triggerInit } = useWalletConnect() - - const dispatch = useDispatch() - - const [ walletNotFound, setWalletNotFound ] = useState(false) - - const connectToWallet = async (type) => { - const resetConnectChain = () => { - dispatch(setConnectETH(false)) - dispatch(setConnectBOBA(false)) - } - - try { - if (await networkService.walletService.connectWallet(type)) { - dispatch(closeModal('walletSelectorModal')) - triggerInit(); - } else { - resetConnectChain() - } - } catch (error) { - console.log(`Error connecting wallet: ${error}`) - resetConnectChain() - } - } - - const handleClose = () => { - dispatch(closeModal('walletSelectorModal')) - dispatch(setConnect(false)) - dispatch(setConnectETH(false)) - dispatch(setConnectBOBA(false)) - } - - return ( - - - {walletNotFound ? - { - window.open('https://metamask.io/download/', '_blank'); - setWalletNotFound(false); - }}> - - - - Download MetaMask wallet - - : - - { - if (window.ethereum) { - connectToWallet('metamask') - } else { - setWalletNotFound(true); - } - }}> - - - - MetaMask - - - - - connectToWallet('walletconnect')}> - - - - WalletConnect - - - - - } - - ) -} - -export default React.memo(WalletSelectorModal) diff --git a/packages/boba/gateway/src/containers/modals/walletSelector/styles.ts b/packages/boba/gateway/src/containers/modals/walletSelector/styles.ts deleted file mode 100644 index ebdb040813..0000000000 --- a/packages/boba/gateway/src/containers/modals/walletSelector/styles.ts +++ /dev/null @@ -1,41 +0,0 @@ -import styled from 'styled-components' - -export const Wallets = styled.div` - display: flex; - flex-direction: column; - width: 100%; -` - -export const Wallet = styled.div` - display: flex; - width: 100%; - padding: 10px 16px; - border-radius: 8px; - justify-content: flex-start; - align-items: center; - cursor: pointer; - gap: 0px 10px; - &:hover { - background: ${(props) => props.theme.colors.gray[400]}; - } -` - -export const IconContainer = styled.div` - display: flex; - align-items: center; - justify-content: center; - width: 38px; - height: 38px; - padding: 5px; - border-radius: 40px; - background: ${(props) => props.theme.colors.gray[400]}; -` -export const Icon = styled.img` - width: 100%; - height: auto; -` - -export const ArrowContainer = styled.div` - margin-left: auto; - margin-right: 5px; -` diff --git a/packages/boba/gateway/src/containers/modals/wrongNetwork/WrongNetworkModal.tsx b/packages/boba/gateway/src/containers/modals/wrongNetwork/WrongNetworkModal.tsx deleted file mode 100644 index 2f2114a2ad..0000000000 --- a/packages/boba/gateway/src/containers/modals/wrongNetwork/WrongNetworkModal.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import React, { FC, useEffect } from 'react' -import { useDispatch, useSelector } from 'react-redux' - -import Modal from 'components/modal/Modal' - -import { setConnect, setConnectETH } from 'actions/setupAction' -import { restTokenList } from 'actions/tokenAction' -import { closeModal } from 'actions/uiAction' - -import { Button } from 'components/global' -import { selectActiveNetworkType, selectNetwork } from 'selectors' - -interface Props { - open: boolean -} - -const WrongNetworkModal: FC = ({ open }) => { - const dispatch = useDispatch() - const network = useSelector(selectNetwork()) - const networkType = useSelector(selectActiveNetworkType()) - - useEffect(() => { - if (open) { - dispatch(restTokenList()) - } - }, [dispatch, open]) - - const handleClose = () => { - dispatch(setConnect(false)) - dispatch(closeModal('wrongNetworkModal')) - } - - return ( - - - - - - -} - -export default React.memo(RecordItem); diff --git a/packages/boba/gateway/src/containers/veboba/Records/Records.js b/packages/boba/gateway/src/containers/veboba/Records/Records.js deleted file mode 100644 index 4647515908..0000000000 --- a/packages/boba/gateway/src/containers/veboba/Records/Records.js +++ /dev/null @@ -1,80 +0,0 @@ -import { Grid, Typography } from '@mui/material' -import React, { Fragment, useState } from 'react' -import RecordItem from './RecordItem' - -import * as G from 'containers/Global.styles' -import { useSelector } from 'react-redux' -import { selectLockRecords, selectLoading} from 'selectors' -import { useDispatch } from 'react-redux' -import { openModal } from 'actions/uiAction' -import { Pager } from 'components' - -const PER_PAGE = 8 - -const LockRecords = () => { - - const dispatch = useDispatch(); - const loading = useSelector(selectLoading([ 'LOCK/RECORDS' ])); - const [page, setPage] = useState(1) - - const records = useSelector(selectLockRecords); - - const onManage = (lock) => { - dispatch(openModal('manageLock', null, null, null, lock)) - } - - const startingIndex = page === 1 ? 0 : ((page - 1) * PER_PAGE) - const endingIndex = page * PER_PAGE - const paginatedRecords = records.slice(startingIndex, endingIndex) - - - let totalNumberOfPages = Math.ceil(records.length / PER_PAGE) - - //if totalNumberOfPages === 0, set to one so we don't get the strange "page 1 of 0" display - if (totalNumberOfPages === 0) totalNumberOfPages = 1 - - return <> - - - - NFT ID / Lock Expires - - - - - Lock Amount - - - - - Vote Value - - - - - - - - {loading ? - - - loading... - - - : null} - {paginatedRecords.map((nftRecord, index) => - - {(index < 4) ? : null} - )} - setPage(page + 1)} - onClickBack={() => setPage(page - 1)} - /> - - -} - -export default React.memo(LockRecords) diff --git a/packages/boba/gateway/src/containers/veboba/createLock/CreateLock.js b/packages/boba/gateway/src/containers/veboba/createLock/CreateLock.js deleted file mode 100644 index 49bf42d980..0000000000 --- a/packages/boba/gateway/src/containers/veboba/createLock/CreateLock.js +++ /dev/null @@ -1,203 +0,0 @@ -import React, { useEffect, useState } from 'react' -import { useDispatch, useSelector } from 'react-redux' -import { BigNumber, utils } from 'ethers' -import {Now, convertDate, addDays,addYear} from 'util/dates' -import DatePicker from 'react-datepicker' - -import { Box, FormControlLabel, Radio, Typography, useTheme, IconButton } from '@mui/material' - -import Button from 'components/button/Button' -import Input from 'components/input/Input' -import CalenderIcon from 'components/icons/CalenderIcon' - -import * as G from 'containers/Global.styles' - -import { setConnectBOBA } from 'actions/setupAction' -import { createLock, fetchLockRecords } from 'actions/veBobaAction' - -import { - selectlayer2Balance, - selectAccountEnabled, - selectLayer, - selectLoading -} from 'selectors' - -import { toWei_String } from 'util/amountConvert' -import { openAlert } from 'actions/uiAction' - -import * as S from './CreateLock.styles' -import Styles from './CreateLock.module.scss' -import "react-datepicker/dist/react-datepicker.css" -import { useRef } from 'react' -import { EXPIRY_OPTIONS } from 'util/constant' - - -function CreateLock({ - onCreateSuccess -}) { - - const dispatch = useDispatch() - - const theme = useTheme() - const datePickerRef = useRef() - - const layer = useSelector(selectLayer()) - const accountEnabled = useSelector(selectAccountEnabled()) - const layer2 = useSelector(selectlayer2Balance) - const loading = useSelector(selectLoading([ 'LOCK/CREATE' ])) - - const [ value, setValue ] = useState(''); - - const [ expiry, setExpiry ] = useState(EXPIRY_OPTIONS[ 0 ].value); - const [ maxBalance, setMaxBalance ] = useState(0); - - useEffect(() => { - if (layer2 && layer2.length > 0) { - const token = Object.values(layer2).find((t) => t[ 'symbolL2' ] === 'BOBA') - if (token) { - let max_BN = BigNumber.from(token.balance.toString()) - setMaxBalance(utils.formatUnits(max_BN, token.decimals)) - } - } - - }, [ layer2 ]); - - const optionsProps = ({ value, label }) => ({ - checked: expiry === value, - onChange: (e) => setExpiry(e.target.value), - value: value, - label: {label} - }) - - async function connectToBOBA() { - dispatch(setConnectBOBA(true)) - } - - const openDatePicker = () => { - let ele = datePickerRef.current; - ele.setFocus(true); - } - - const conversioRation = () => { - const endD = convertDate(expiry); - const currD = Now(); - let secondsYear = 365 * 24 * 3600; - let secondsTillExpiry = endD.diff(currD, 'days') * 24 * 3600 - let ratio = (secondsTillExpiry / secondsYear); - return ratio.toFixed(2); - } - - - const onCreateLock = async () => { - - const endD = convertDate(expiry); - const currD = Now(); - // expiry duration in seconds - const diffD = endD.diff(currD, 'days') * 24 * 3600; - - const res = await dispatch(createLock({ - value_Wei_String: toWei_String(value, 18), - lock_duration: diffD - })) - setValue('') - setExpiry(EXPIRY_OPTIONS[ 0 ].value) - dispatch(fetchLockRecords()); - if (res) { - dispatch(openAlert('Lock has been created!')); - } - } - - return - - Create New Lock - - - - - - BOBA Balance: - {maxBalance} - - { setValue(i.target.value) }} - onUseMax={i => { setValue(maxBalance) }} - newStyle - disabled={!accountEnabled || layer !== 'L2'} - variant="standard" - /> - - - Lock for - - - {setExpiry(convertDate(date,'yyyy-MM-DD'))}} - calendarClassName={theme.palette.mode} - /> - - { - openDatePicker() - }} component="span"> - - - - - - Expires: - - { - EXPIRY_OPTIONS.map((item) => }> - ) - } - - - - - - - Convert ve BOBA Ratio - {conversioRation()} - - - Your voting power will be - {(conversioRation() * value).toFixed(2) } ve BOBA - - { - !accountEnabled || layer !== 'L2'? - : - } - - -} - - -export default React.memo(CreateLock) diff --git a/packages/boba/gateway/src/containers/veboba/createLock/CreateLock.module.scss b/packages/boba/gateway/src/containers/veboba/createLock/CreateLock.module.scss deleted file mode 100644 index 2a5b9af73f..0000000000 --- a/packages/boba/gateway/src/containers/veboba/createLock/CreateLock.module.scss +++ /dev/null @@ -1,31 +0,0 @@ -@import 'index.scss'; - -.datePickerInput { - position: relative; - - &::after { - content: ''; - width: 0; - height: 0; - position: absolute; - right: 10px; - font-size: 25px; - bottom: 15px; - } - - input { - background: transparent; - border: none; - color: white; - font-weight: 300; - font-size: 2rem; - - &:focus-visible { - outline: none - } - } -} - -.popperStyle { - z-index: 3; -} diff --git a/packages/boba/gateway/src/containers/veboba/createLock/CreateLock.styles.js b/packages/boba/gateway/src/containers/veboba/createLock/CreateLock.styles.js deleted file mode 100644 index 6c452386ba..0000000000 --- a/packages/boba/gateway/src/containers/veboba/createLock/CreateLock.styles.js +++ /dev/null @@ -1,22 +0,0 @@ -import { Box, Grid } from "@mui/material"; -import { styled } from '@mui/material/styles' - -export const LockFormContainer = styled(Grid)(({ theme }) => ({ - borderRadius: theme.palette.primary.borderRadius, - background: theme.palette.background.secondary, - display: 'flex', - flexDirection: 'column', - width: '100%' -})); - -export const LockRecordTitle = styled(Box)(({ theme }) => ({ - borderRadius: theme.palette.primary.borderRadius, - background: theme.palette.background.secondary -})) - -export const InlineContainer = styled(Box)(({ theme, children, ...props }) => ({ - display: 'flex', - justifyContent: 'space-between', - alignItems: 'center', - ...props -})) diff --git a/packages/boba/gateway/src/deployment/contracts/AuthenticatedFaucet.json b/packages/boba/gateway/src/deployment/contracts/AuthenticatedFaucet.json deleted file mode 100644 index 8d6dff4919..0000000000 --- a/packages/boba/gateway/src/deployment/contracts/AuthenticatedFaucet.json +++ /dev/null @@ -1,169 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "AuthenticatedFaucet", - "sourceName": "contracts/AuthenticatedFaucet.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "apiUrl_", - "type": "string" - }, - { - "internalType": "address", - "name": "turingHelper_", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxClaimsPerEpoch_", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "testnetETHPerClaim_", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "authorId", - "type": "uint256" - } - ], - "name": "GasClaimed", - "type": "event" - }, - { - "inputs": [], - "name": "apiUrl", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - } - ], - "name": "getNonce", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to_", - "type": "address" - }, - { - "internalType": "string", - "name": "twitterPostID_", - "type": "string" - } - ], - "name": "sendFunds", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to_", - "type": "address" - }, - { - "internalType": "string", - "name": "twitterPostID_", - "type": "string" - }, - { - "internalType": "bytes32", - "name": "hashedMessage_", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "signature_", - "type": "bytes" - } - ], - "name": "sendFundsMeta", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "turingHelper", - "outputs": [ - { - "internalType": "contract ITuringHelper", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_hashedMessage", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "signature", - "type": "bytes" - } - ], - "name": "verifyMessage", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b50604051620016003803806200160083398101604081905262000034916200015a565b83516200004990600090602087019062000081565b50600180546001600160a01b0319166001600160a01b0394909416939093179092554260035560006004556005556006555062000298565b8280546200008f906200025b565b90600052602060002090601f016020900481019282620000b35760008555620000fe565b82601f10620000ce57805160ff1916838001178555620000fe565b82800160010185558215620000fe579182015b82811115620000fe578251825591602001919060010190620000e1565b506200010c92915062000110565b5090565b5b808211156200010c576000815560010162000111565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200015557600080fd5b919050565b600080600080608085870312156200017157600080fd5b84516001600160401b03808211156200018957600080fd5b818701915087601f8301126200019e57600080fd5b815181811115620001b357620001b362000127565b604051601f8201601f19908116603f01168101908382118183101715620001de57620001de62000127565b81604052828152602093508a84848701011115620001fb57600080fd5b600091505b828210156200021f578482018401518183018501529083019062000200565b82821115620002315760008484830101525b9750620002439150508782016200013d565b60408801516060909801519699909850945050505050565b600181811c908216806200027057607f821691505b602082108114156200029257634e487b7160e01b600052602260045260246000fd5b50919050565b61135880620002a86000396000f3fe6080604052600436106100695760003560e01c806341efaee91161004357806341efaee9146101325780638367e1201461015f578063f8aab2e61461018157600080fd5b80631f35fedb146100755780632d0335ab146100975780633b51be4b146100ed57600080fd5b3661007057005b600080fd5b34801561008157600080fd5b50610095610090366004610ddc565b6101a1565b005b3480156100a357600080fd5b506100da6100b2366004610e60565b73ffffffffffffffffffffffffffffffffffffffff1660009081526007602052604090205490565b6040519081526020015b60405180910390f35b3480156100f957600080fd5b5061010d610108366004610e82565b6102ad565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e4565b34801561013e57600080fd5b5060015461010d9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561016b57600080fd5b50610174610311565b6040516100e49190610f25565b34801561018d57600080fd5b5061009561019c366004610f38565b61039f565b8473ffffffffffffffffffffffffffffffffffffffff166101c283836102ad565b73ffffffffffffffffffffffffffffffffffffffff1614610244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5369676e6174757265206661756c74790000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516600090815260076020526040902054610275906001610fba565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600760205260409020556102a685858561039f565b5050505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018390526000908190605c0160408051601f19818403018152919052805160209091012090506103098184610725565b949350505050565b6000805461031e90610fd2565b80601f016020809104026020016040519081016040528092919081815260200182805461034a90610fd2565b80156103975780601f1061036c57610100808354040283529160200191610397565b820191906000526020600020905b81548152906001019060200180831161037a57829003601f168201915b505050505081565b60065447101561040b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f20746573746e65742066756e647300000000000000000000000000000000604482015260640161023b565b60035461041a90610e10610fba565b421061042e57426003556001600455610444565b6004805490600061043e83611026565b91905055505b600554600454106104b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f52617465206c696d697420726561636865640000000000000000000000000000604482015260640161023b565b60008383836040516020016104c89392919061105f565b60408051601f19818403018152908290526001547f2f7adf430000000000000000000000000000000000000000000000000000000083529092506000918291829173ffffffffffffffffffffffffffffffffffffffff90911690632f7adf439061053890849088906004016110ab565b600060405180830381600087803b15801561055257600080fd5b505af1158015610566573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261058e919081019061119e565b8060200190518101906105a1919061120c565b91945092509050821515806105b583610749565b6040516020016105c5919061123a565b6040516020818303038152906040529061060c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023b9190610f25565b50600083815260026020526040902054620151809061062b904261127f565b11610692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f436f6f6c646f776e000000000000000000000000000000000000000000000000604482015260640161023b565b600083815260026020526040808220429055600654905173ffffffffffffffffffffffffffffffffffffffff8b169282156108fc02929190818181858888f193505050501580156106e7573d6000803e3d6000fd5b506040518381527f2747583c2c0d0249c09d8c3bc1fedc92e5da8b99dd88fdd3b3542ef0555f5faf9060200160405180910390a15050505050505050565b6000806000610734858561087b565b91509150610741816108eb565b509392505050565b60608161078957505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156107b3578061079d81611026565b91506107ac9050600a836112c5565b915061078d565b60008167ffffffffffffffff8111156107ce576107ce610cfe565b6040519080825280601f01601f1916602001820160405280156107f8576020820181803683370190505b5090505b84156103095761080d60018361127f565b915061081a600a866112d9565b610825906030610fba565b60f81b81838151811061083a5761083a6112ed565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610874600a866112c5565b94506107fc565b6000808251604114156108b25760208301516040840151606085015160001a6108a687828585610b47565b945094505050506108e4565b8251604014156108dc57602083015160408401516108d1868383610c41565b9350935050506108e4565b506000905060025b9250929050565b60008160048111156108ff576108ff61131c565b14156109085750565b600181600481111561091c5761091c61131c565b1415610984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161023b565b60028160048111156109985761099861131c565b1415610a00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161023b565b6003816004811115610a1457610a1461131c565b1415610aa2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161023b565b6004816004811115610ab657610ab661131c565b1415610b44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161023b565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610b7e5750600090506003610c38565b8460ff16601b14158015610b9657508460ff16601c14155b15610ba75750600090506004610c38565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610bfb573d6000803e3d6000fd5b5050604051601f19015191505073ffffffffffffffffffffffffffffffffffffffff8116610c3157600060019250925050610c38565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831681610c7760ff86901c601b610fba565b9050610c8587828885610b47565b935093505050935093915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610cb757600080fd5b919050565b60008083601f840112610cce57600080fd5b50813567ffffffffffffffff811115610ce657600080fd5b6020830191508360208285010111156108e457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610d5657610d56610cfe565b604052919050565b600067ffffffffffffffff821115610d7857610d78610cfe565b50601f01601f191660200190565b600082601f830112610d9757600080fd5b8135610daa610da582610d5e565b610d2d565b818152846020838601011115610dbf57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060808688031215610df457600080fd5b610dfd86610c93565b9450602086013567ffffffffffffffff80821115610e1a57600080fd5b610e2689838a01610cbc565b9096509450604088013593506060880135915080821115610e4657600080fd5b50610e5388828901610d86565b9150509295509295909350565b600060208284031215610e7257600080fd5b610e7b82610c93565b9392505050565b60008060408385031215610e9557600080fd5b82359150602083013567ffffffffffffffff811115610eb357600080fd5b610ebf85828601610d86565b9150509250929050565b60005b83811015610ee4578181015183820152602001610ecc565b83811115610ef3576000848401525b50505050565b60008151808452610f11816020860160208601610ec9565b601f01601f19169290920160200192915050565b602081526000610e7b6020830184610ef9565b600080600060408486031215610f4d57600080fd5b610f5684610c93565b9250602084013567ffffffffffffffff811115610f7257600080fd5b610f7e86828701610cbc565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610fcd57610fcd610f8b565b500190565b600181811c90821680610fe657607f821691505b60208210811415611020577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561105857611058610f8b565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60408152600080845481600182811c9150808316806110cb57607f831692505b6020808410821415611104577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b604088018490526060880182801561112357600181146111525761117d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0087168252828201975061117d565b60008c81526020902060005b878110156111775781548482015290860190840161115e565b83019850505b50508786038189015250505050506111958185610ef9565b95945050505050565b6000602082840312156111b057600080fd5b815167ffffffffffffffff8111156111c757600080fd5b8201601f810184136111d857600080fd5b80516111e6610da582610d5e565b8181528560208385010111156111fb57600080fd5b611195826020830160208601610ec9565b60008060006060848603121561122157600080fd5b8351925060208401519150604084015190509250925092565b7f496e76616c696420726571756573743a00000000000000000000000000000000815260008251611272816010850160208701610ec9565b9190910160100192915050565b60008282101561129157611291610f8b565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826112d4576112d4611296565b500490565b6000826112e8576112e8611296565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c6343000809000a", - "deployedBytecode": "0x6080604052600436106100695760003560e01c806341efaee91161004357806341efaee9146101325780638367e1201461015f578063f8aab2e61461018157600080fd5b80631f35fedb146100755780632d0335ab146100975780633b51be4b146100ed57600080fd5b3661007057005b600080fd5b34801561008157600080fd5b50610095610090366004610ddc565b6101a1565b005b3480156100a357600080fd5b506100da6100b2366004610e60565b73ffffffffffffffffffffffffffffffffffffffff1660009081526007602052604090205490565b6040519081526020015b60405180910390f35b3480156100f957600080fd5b5061010d610108366004610e82565b6102ad565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e4565b34801561013e57600080fd5b5060015461010d9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561016b57600080fd5b50610174610311565b6040516100e49190610f25565b34801561018d57600080fd5b5061009561019c366004610f38565b61039f565b8473ffffffffffffffffffffffffffffffffffffffff166101c283836102ad565b73ffffffffffffffffffffffffffffffffffffffff1614610244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5369676e6174757265206661756c74790000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516600090815260076020526040902054610275906001610fba565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600760205260409020556102a685858561039f565b5050505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018390526000908190605c0160408051601f19818403018152919052805160209091012090506103098184610725565b949350505050565b6000805461031e90610fd2565b80601f016020809104026020016040519081016040528092919081815260200182805461034a90610fd2565b80156103975780601f1061036c57610100808354040283529160200191610397565b820191906000526020600020905b81548152906001019060200180831161037a57829003601f168201915b505050505081565b60065447101561040b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f20746573746e65742066756e647300000000000000000000000000000000604482015260640161023b565b60035461041a90610e10610fba565b421061042e57426003556001600455610444565b6004805490600061043e83611026565b91905055505b600554600454106104b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f52617465206c696d697420726561636865640000000000000000000000000000604482015260640161023b565b60008383836040516020016104c89392919061105f565b60408051601f19818403018152908290526001547f2f7adf430000000000000000000000000000000000000000000000000000000083529092506000918291829173ffffffffffffffffffffffffffffffffffffffff90911690632f7adf439061053890849088906004016110ab565b600060405180830381600087803b15801561055257600080fd5b505af1158015610566573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261058e919081019061119e565b8060200190518101906105a1919061120c565b91945092509050821515806105b583610749565b6040516020016105c5919061123a565b6040516020818303038152906040529061060c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023b9190610f25565b50600083815260026020526040902054620151809061062b904261127f565b11610692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f436f6f6c646f776e000000000000000000000000000000000000000000000000604482015260640161023b565b600083815260026020526040808220429055600654905173ffffffffffffffffffffffffffffffffffffffff8b169282156108fc02929190818181858888f193505050501580156106e7573d6000803e3d6000fd5b506040518381527f2747583c2c0d0249c09d8c3bc1fedc92e5da8b99dd88fdd3b3542ef0555f5faf9060200160405180910390a15050505050505050565b6000806000610734858561087b565b91509150610741816108eb565b509392505050565b60608161078957505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156107b3578061079d81611026565b91506107ac9050600a836112c5565b915061078d565b60008167ffffffffffffffff8111156107ce576107ce610cfe565b6040519080825280601f01601f1916602001820160405280156107f8576020820181803683370190505b5090505b84156103095761080d60018361127f565b915061081a600a866112d9565b610825906030610fba565b60f81b81838151811061083a5761083a6112ed565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610874600a866112c5565b94506107fc565b6000808251604114156108b25760208301516040840151606085015160001a6108a687828585610b47565b945094505050506108e4565b8251604014156108dc57602083015160408401516108d1868383610c41565b9350935050506108e4565b506000905060025b9250929050565b60008160048111156108ff576108ff61131c565b14156109085750565b600181600481111561091c5761091c61131c565b1415610984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161023b565b60028160048111156109985761099861131c565b1415610a00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161023b565b6003816004811115610a1457610a1461131c565b1415610aa2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161023b565b6004816004811115610ab657610ab661131c565b1415610b44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161023b565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610b7e5750600090506003610c38565b8460ff16601b14158015610b9657508460ff16601c14155b15610ba75750600090506004610c38565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610bfb573d6000803e3d6000fd5b5050604051601f19015191505073ffffffffffffffffffffffffffffffffffffffff8116610c3157600060019250925050610c38565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831681610c7760ff86901c601b610fba565b9050610c8587828885610b47565b935093505050935093915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610cb757600080fd5b919050565b60008083601f840112610cce57600080fd5b50813567ffffffffffffffff811115610ce657600080fd5b6020830191508360208285010111156108e457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610d5657610d56610cfe565b604052919050565b600067ffffffffffffffff821115610d7857610d78610cfe565b50601f01601f191660200190565b600082601f830112610d9757600080fd5b8135610daa610da582610d5e565b610d2d565b818152846020838601011115610dbf57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060808688031215610df457600080fd5b610dfd86610c93565b9450602086013567ffffffffffffffff80821115610e1a57600080fd5b610e2689838a01610cbc565b9096509450604088013593506060880135915080821115610e4657600080fd5b50610e5388828901610d86565b9150509295509295909350565b600060208284031215610e7257600080fd5b610e7b82610c93565b9392505050565b60008060408385031215610e9557600080fd5b82359150602083013567ffffffffffffffff811115610eb357600080fd5b610ebf85828601610d86565b9150509250929050565b60005b83811015610ee4578181015183820152602001610ecc565b83811115610ef3576000848401525b50505050565b60008151808452610f11816020860160208601610ec9565b601f01601f19169290920160200192915050565b602081526000610e7b6020830184610ef9565b600080600060408486031215610f4d57600080fd5b610f5684610c93565b9250602084013567ffffffffffffffff811115610f7257600080fd5b610f7e86828701610cbc565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610fcd57610fcd610f8b565b500190565b600181811c90821680610fe657607f821691505b60208210811415611020577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561105857611058610f8b565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60408152600080845481600182811c9150808316806110cb57607f831692505b6020808410821415611104577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b604088018490526060880182801561112357600181146111525761117d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0087168252828201975061117d565b60008c81526020902060005b878110156111775781548482015290860190840161115e565b83019850505b50508786038189015250505050506111958185610ef9565b95945050505050565b6000602082840312156111b057600080fd5b815167ffffffffffffffff8111156111c757600080fd5b8201601f810184136111d857600080fd5b80516111e6610da582610d5e565b8181528560208385010111156111fb57600080fd5b611195826020830160208601610ec9565b60008060006060848603121561122157600080fd5b8351925060208401519150604084015190509250925092565b7f496e76616c696420726571756573743a00000000000000000000000000000000815260008251611272816010850160208701610ec9565b9190910160100192915050565b60008282101561129157611291610f8b565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826112d4576112d4611296565b500490565b6000826112e8576112e8611296565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c6343000809000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/boba/gateway/src/deployment/contracts/BaseV1Dispatcher.json b/packages/boba/gateway/src/deployment/contracts/BaseV1Dispatcher.json deleted file mode 100644 index d7cc1fe2db..0000000000 --- a/packages/boba/gateway/src/deployment/contracts/BaseV1Dispatcher.json +++ /dev/null @@ -1,231 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "BaseV1Dispatcher", - "sourceName": "contracts/BaseV1-dispatcher.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "__voter", - "type": "address" - }, - { - "internalType": "address", - "name": "__ve", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "weekly", - "type": "uint256" - } - ], - "name": "Emission", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "priorWeeklyEmission", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "updatedWeeklyEmission", - "type": "uint256" - } - ], - "name": "WeeklyEmissionUpdated", - "type": "event" - }, - { - "inputs": [], - "name": "_token", - "outputs": [ - { - "internalType": "contract underlying", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "_ve", - "outputs": [ - { - "internalType": "contract ve", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "_voter", - "outputs": [ - { - "internalType": "contract voter", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "active_period", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "claimants", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - }, - { - "internalType": "uint256", - "name": "initAmount", - "type": "uint256" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_newWeeklyEmission", - "type": "uint256" - } - ], - "name": "set_weekly_emission", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "update_period", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "weekly_emission", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x60e06040523480156200001157600080fd5b50604051620011e2380380620011e2833981016040819052620000349162000185565b6200003f3362000118565b600380546001600160a01b0319163317905560408051637e062a3560e11b815290516001600160a01b0383169163fc0c546a9160048083019260209291908290030181865afa15801562000097573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000bd9190620001bd565b6001600160a01b0390811660805282811660a052811660c05262093a8080620000e8816002620001f8565b620000f490426200021a565b62000100919062000235565b6200010c9190620001f8565b60025550620002589050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200018057600080fd5b919050565b600080604083850312156200019957600080fd5b620001a48362000168565b9150620001b46020840162000168565b90509250929050565b600060208284031215620001d057600080fd5b620001db8262000168565b9392505050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620002155762000215620001e2565b500290565b60008219821115620002305762000230620001e2565b500190565b6000826200025357634e487b7160e01b600052601260045260246000fd5b500490565b60805160a05160c051610f23620002bf6000396000818161015f015281816103aa015261047401526000818160d301528181610860015261092c0152600081816101b4015281816102e2015281816103f80152818161074c015261088f0152610f236000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c8063b225448611610081578063ecd0c0c31161005b578063ecd0c0c3146101af578063ed29fc11146101d6578063f2fde38b146101de57600080fd5b8063b225448614610181578063cfc6c8ff14610194578063d1399608146101a657600080fd5b806385170813116100b257806385170813146101295780638da5cb5b1461013c5780638dd598fb1461015a57600080fd5b80633db9b42a146100ce578063715018a61461011f575b600080fd5b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101276101f1565b005b610127610137366004610cb0565b610283565b60005473ffffffffffffffffffffffffffffffffffffffff166100f5565b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b61012761018f366004610d79565b6105d6565b6001545b604051908152602001610116565b61019860025481565b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b61019861069c565b6101276101ec366004610d92565b6109da565b60005473ffffffffffffffffffffffffffffffffffffffff163314610277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6102816000610b0a565b565b60035473ffffffffffffffffffffffffffffffffffffffff1633146102a757600080fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303816000875af1158015610340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103649190610db4565b61036d57600080fd5b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015610441573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104659190610db4565b5060005b8351811015610582577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d4e54c3b8483815181106104c0576104c0610dd6565b602002602001015163077f88008785815181106104df576104df610dd6565b60200260200101516040518463ffffffff1660e01b815260040161052c93929190928352602083019190915273ffffffffffffffffffffffffffffffffffffffff16604082015260600190565b6020604051808303816000875af115801561054b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056f9190610e05565b508061057a81610e4d565b915050610469565b50600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016905562093a80806105ba8142610e86565b6105c49190610e9e565b6105ce9190610ed9565b600255505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026e565b600180549082905560408051828152602081018490527f54877546644c946a7857da020d986360e7a3888c48bad3e2597cddb4dba8d9fb910160405180910390a15050565b6002546000906106af62093a8082610e86565b42101580156106d4575060035473ffffffffffffffffffffffffffffffffffffffff16155b156109d55762093a806106e78142610e9e565b6106f19190610ed9565b60028190559050600061070360015490565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b79190610e05565b905081811015610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f496e73756666696369656e742066756e647320696e2064697370617463686572604482015260640161026e565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190610db4565b506040517f3c6b16ab000000000000000000000000000000000000000000000000000000008152600481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633c6b16ab90602401600060405180830381600087803b15801561098557600080fd5b505af1158015610999573d6000803e3d6000fd5b50506040518481523392507ff54dbf4cddb908bac0d67a3e6d3e4de95d0e7bc059afe2d34b37a6ebbc3879ca915060200160405180910390a250505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026e565b73ffffffffffffffffffffffffffffffffffffffff8116610afe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161026e565b610b0781610b0a565b50565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bf557610bf5610b7f565b604052919050565b600067ffffffffffffffff821115610c1757610c17610b7f565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff811681146109d557600080fd5b600082601f830112610c5657600080fd5b81356020610c6b610c6683610bfd565b610bae565b82815260059290921b84018101918181019086841115610c8a57600080fd5b8286015b84811015610ca55780358352918301918301610c8e565b509695505050505050565b600080600060608486031215610cc557600080fd5b833567ffffffffffffffff80821115610cdd57600080fd5b818601915086601f830112610cf157600080fd5b81356020610d01610c6683610bfd565b82815260059290921b8401810191818101908a841115610d2057600080fd5b948201945b83861015610d4557610d3686610c21565b82529482019490820190610d25565b97505087013592505080821115610d5b57600080fd5b50610d6886828701610c45565b925050604084013590509250925092565b600060208284031215610d8b57600080fd5b5035919050565b600060208284031215610da457600080fd5b610dad82610c21565b9392505050565b600060208284031215610dc657600080fd5b81518015158114610dad57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215610e1757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610e7f57610e7f610e1e565b5060010190565b60008219821115610e9957610e99610e1e565b500190565b600082610ed4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610f1157610f11610e1e565b50029056fea164736f6c634300080b000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c8063b225448611610081578063ecd0c0c31161005b578063ecd0c0c3146101af578063ed29fc11146101d6578063f2fde38b146101de57600080fd5b8063b225448614610181578063cfc6c8ff14610194578063d1399608146101a657600080fd5b806385170813116100b257806385170813146101295780638da5cb5b1461013c5780638dd598fb1461015a57600080fd5b80633db9b42a146100ce578063715018a61461011f575b600080fd5b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101276101f1565b005b610127610137366004610cb0565b610283565b60005473ffffffffffffffffffffffffffffffffffffffff166100f5565b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b61012761018f366004610d79565b6105d6565b6001545b604051908152602001610116565b61019860025481565b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b61019861069c565b6101276101ec366004610d92565b6109da565b60005473ffffffffffffffffffffffffffffffffffffffff163314610277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6102816000610b0a565b565b60035473ffffffffffffffffffffffffffffffffffffffff1633146102a757600080fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303816000875af1158015610340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103649190610db4565b61036d57600080fd5b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015610441573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104659190610db4565b5060005b8351811015610582577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d4e54c3b8483815181106104c0576104c0610dd6565b602002602001015163077f88008785815181106104df576104df610dd6565b60200260200101516040518463ffffffff1660e01b815260040161052c93929190928352602083019190915273ffffffffffffffffffffffffffffffffffffffff16604082015260600190565b6020604051808303816000875af115801561054b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056f9190610e05565b508061057a81610e4d565b915050610469565b50600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016905562093a80806105ba8142610e86565b6105c49190610e9e565b6105ce9190610ed9565b600255505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026e565b600180549082905560408051828152602081018490527f54877546644c946a7857da020d986360e7a3888c48bad3e2597cddb4dba8d9fb910160405180910390a15050565b6002546000906106af62093a8082610e86565b42101580156106d4575060035473ffffffffffffffffffffffffffffffffffffffff16155b156109d55762093a806106e78142610e9e565b6106f19190610ed9565b60028190559050600061070360015490565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b79190610e05565b905081811015610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f496e73756666696369656e742066756e647320696e2064697370617463686572604482015260640161026e565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190610db4565b506040517f3c6b16ab000000000000000000000000000000000000000000000000000000008152600481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633c6b16ab90602401600060405180830381600087803b15801561098557600080fd5b505af1158015610999573d6000803e3d6000fd5b50506040518481523392507ff54dbf4cddb908bac0d67a3e6d3e4de95d0e7bc059afe2d34b37a6ebbc3879ca915060200160405180910390a250505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026e565b73ffffffffffffffffffffffffffffffffffffffff8116610afe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161026e565b610b0781610b0a565b50565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bf557610bf5610b7f565b604052919050565b600067ffffffffffffffff821115610c1757610c17610b7f565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff811681146109d557600080fd5b600082601f830112610c5657600080fd5b81356020610c6b610c6683610bfd565b610bae565b82815260059290921b84018101918181019086841115610c8a57600080fd5b8286015b84811015610ca55780358352918301918301610c8e565b509695505050505050565b600080600060608486031215610cc557600080fd5b833567ffffffffffffffff80821115610cdd57600080fd5b818601915086601f830112610cf157600080fd5b81356020610d01610c6683610bfd565b82815260059290921b8401810191818101908a841115610d2057600080fd5b948201945b83861015610d4557610d3686610c21565b82529482019490820190610d25565b97505087013592505080821115610d5b57600080fd5b50610d6886828701610c45565b925050604084013590509250925092565b600060208284031215610d8b57600080fd5b5035919050565b600060208284031215610da457600080fd5b610dad82610c21565b9392505050565b600060208284031215610dc657600080fd5b81518015158114610dad57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215610e1757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610e7f57610e7f610e1e565b5060010190565b60008219821115610e9957610e99610e1e565b500190565b600082610ed4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610f1157610f11610e1e565b50029056fea164736f6c634300080b000a", - "linkReferences": {}, - "deployedLinkReferences": {} - } diff --git a/packages/boba/gateway/src/deployment/contracts/BaseV1GaugeFactory.json b/packages/boba/gateway/src/deployment/contracts/BaseV1GaugeFactory.json deleted file mode 100644 index b458973b7f..0000000000 --- a/packages/boba/gateway/src/deployment/contracts/BaseV1GaugeFactory.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "BaseV1GaugeFactory", - "sourceName": "contracts/Basic-gauges.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_pool", - "type": "address" - }, - { - "internalType": "address", - "name": "_ve", - "type": "address" - }, - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "createGauge", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_pool", - "type": "address" - }, - { - "internalType": "address", - "name": "_ve", - "type": "address" - }, - { - "internalType": "address", - "name": "_voter", - "type": "address" - }, - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "createGaugeSingle", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "last_gauge", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50610f4b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80631c48e0fa14610046578063730a8bdb14610082578063af4db2ec146100a2575b600080fd5b61005961005436600461024c565b6100b5565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6000546100599073ffffffffffffffffffffffffffffffffffffffff1681565b6100596100b036600461028f565b610165565b6000838333846040516100c790610216565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015610118573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169182179055949350505050565b60008484848460405161017790610216565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156101c8573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216918217905595945050505050565b610c5b806102e483390190565b803573ffffffffffffffffffffffffffffffffffffffff8116811461024757600080fd5b919050565b60008060006060848603121561026157600080fd5b61026a84610223565b925061027860208501610223565b915061028660408501610223565b90509250925092565b600080600080608085870312156102a557600080fd5b6102ae85610223565b93506102bc60208601610223565b92506102ca60408601610223565b91506102d860608601610223565b90509295919450925056fe60e06040526001805534801561001457600080fd5b50604051610c5b380380610c5b833981016040819052610033916101a3565b61003c33610067565b6001600160a01b0380851660805283811660a052821660c05261005e816100b7565b505050506101f7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b031633146101165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811661017b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161010d565b61018481610067565b50565b80516001600160a01b038116811461019e57600080fd5b919050565b600080600080608085870312156101b957600080fd5b6101c285610187565b93506101d060208601610187565b92506101de60408601610187565b91506101ec60608601610187565b905092959194509250565b60805160a05160c051610a3061022b6000396000818160e20152610253015260006101440152600060920152610a306000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146101215780638dd598fb1461013f578063b66503cf14610166578063f2fde38b1461017957600080fd5b806316f0115b1461008d57806346c96aac146100dd5780636b09169514610104578063715018a614610119575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b61011761011236600461092e565b61018c565b005b6101176103dd565b60005473ffffffffffffffffffffffffffffffffffffffff166100b4565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b610117610174366004610961565b61046a565b61011761018736600461098b565b6104e9565b60005473ffffffffffffffffffffffffffffffffffffffff163314610212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60015460011461022157600080fd5b600180556040517f63453ae10000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906363453ae190602401600060405180830381600087803b1580156102ac57600080fd5b505af11580156102c0573d6000803e3d6000fd5b5050600260015550506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015610336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035a91906109ad565b9050801561036d5761036d828483610619565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9aa05b3d70a9e3e2f004f039648839560576334fb45c81f91b6db03ad9e2efc9836040516103cc91815260200190565b60405180910390a350506001805550565b60005473ffffffffffffffffffffffffffffffffffffffff16331461045e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610209565b6104686000610750565b565b60015460011461047957600080fd5b60026001558061048857600080fd5b610494823330846107c5565b60405181815273ffffffffffffffffffffffffffffffffffffffff83169033907ff70d5c697de7ea828df48e5c4573cb2194c659f1901f70110c52b066dcf508269060200160405180910390a3505060018055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461056a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610209565b73ffffffffffffffffffffffffffffffffffffffff811661060d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610209565b61061681610750565b50565b60008373ffffffffffffffffffffffffffffffffffffffff163b1161063d57600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916106d491906109c6565b6000604051808303816000865af19150503d8060008114610711576040519150601f19603f3d011682016040523d82523d6000602084013e610716565b606091505b50915091508180156107405750805115806107405750808060200190518101906107409190610a01565b61074957600080fd5b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008473ffffffffffffffffffffffffffffffffffffffff163b116107e957600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052915160009283929088169161088891906109c6565b6000604051808303816000865af19150503d80600081146108c5576040519150601f19603f3d011682016040523d82523d6000602084013e6108ca565b606091505b50915091508180156108f45750805115806108f45750808060200190518101906108f49190610a01565b6108fd57600080fd5b505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461092957600080fd5b919050565b6000806040838503121561094157600080fd5b61094a83610905565b915061095860208401610905565b90509250929050565b6000806040838503121561097457600080fd5b61097d83610905565b946020939093013593505050565b60006020828403121561099d57600080fd5b6109a682610905565b9392505050565b6000602082840312156109bf57600080fd5b5051919050565b6000825160005b818110156109e757602081860181015185830152016109cd565b818111156109f6576000828501525b509190910192915050565b600060208284031215610a1357600080fd5b815180151581146109a657600080fdfea164736f6c634300080b000aa164736f6c634300080b000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80631c48e0fa14610046578063730a8bdb14610082578063af4db2ec146100a2575b600080fd5b61005961005436600461024c565b6100b5565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6000546100599073ffffffffffffffffffffffffffffffffffffffff1681565b6100596100b036600461028f565b610165565b6000838333846040516100c790610216565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015610118573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169182179055949350505050565b60008484848460405161017790610216565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156101c8573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216918217905595945050505050565b610c5b806102e483390190565b803573ffffffffffffffffffffffffffffffffffffffff8116811461024757600080fd5b919050565b60008060006060848603121561026157600080fd5b61026a84610223565b925061027860208501610223565b915061028660408501610223565b90509250925092565b600080600080608085870312156102a557600080fd5b6102ae85610223565b93506102bc60208601610223565b92506102ca60408601610223565b91506102d860608601610223565b90509295919450925056fe60e06040526001805534801561001457600080fd5b50604051610c5b380380610c5b833981016040819052610033916101a3565b61003c33610067565b6001600160a01b0380851660805283811660a052821660c05261005e816100b7565b505050506101f7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b031633146101165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811661017b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161010d565b61018481610067565b50565b80516001600160a01b038116811461019e57600080fd5b919050565b600080600080608085870312156101b957600080fd5b6101c285610187565b93506101d060208601610187565b92506101de60408601610187565b91506101ec60608601610187565b905092959194509250565b60805160a05160c051610a3061022b6000396000818160e20152610253015260006101440152600060920152610a306000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146101215780638dd598fb1461013f578063b66503cf14610166578063f2fde38b1461017957600080fd5b806316f0115b1461008d57806346c96aac146100dd5780636b09169514610104578063715018a614610119575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b61011761011236600461092e565b61018c565b005b6101176103dd565b60005473ffffffffffffffffffffffffffffffffffffffff166100b4565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b610117610174366004610961565b61046a565b61011761018736600461098b565b6104e9565b60005473ffffffffffffffffffffffffffffffffffffffff163314610212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60015460011461022157600080fd5b600180556040517f63453ae10000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906363453ae190602401600060405180830381600087803b1580156102ac57600080fd5b505af11580156102c0573d6000803e3d6000fd5b5050600260015550506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015610336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035a91906109ad565b9050801561036d5761036d828483610619565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9aa05b3d70a9e3e2f004f039648839560576334fb45c81f91b6db03ad9e2efc9836040516103cc91815260200190565b60405180910390a350506001805550565b60005473ffffffffffffffffffffffffffffffffffffffff16331461045e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610209565b6104686000610750565b565b60015460011461047957600080fd5b60026001558061048857600080fd5b610494823330846107c5565b60405181815273ffffffffffffffffffffffffffffffffffffffff83169033907ff70d5c697de7ea828df48e5c4573cb2194c659f1901f70110c52b066dcf508269060200160405180910390a3505060018055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461056a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610209565b73ffffffffffffffffffffffffffffffffffffffff811661060d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610209565b61061681610750565b50565b60008373ffffffffffffffffffffffffffffffffffffffff163b1161063d57600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916106d491906109c6565b6000604051808303816000865af19150503d8060008114610711576040519150601f19603f3d011682016040523d82523d6000602084013e610716565b606091505b50915091508180156107405750805115806107405750808060200190518101906107409190610a01565b61074957600080fd5b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008473ffffffffffffffffffffffffffffffffffffffff163b116107e957600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052915160009283929088169161088891906109c6565b6000604051808303816000865af19150503d80600081146108c5576040519150601f19603f3d011682016040523d82523d6000602084013e6108ca565b606091505b50915091508180156108f45750805115806108f45750808060200190518101906108f49190610a01565b6108fd57600080fd5b505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461092957600080fd5b919050565b6000806040838503121561094157600080fd5b61094a83610905565b915061095860208401610905565b90509250929050565b6000806040838503121561097457600080fd5b61097d83610905565b946020939093013593505050565b60006020828403121561099d57600080fd5b6109a682610905565b9392505050565b6000602082840312156109bf57600080fd5b5051919050565b6000825160005b818110156109e757602081860181015185830152016109cd565b818111156109f6576000828501525b509190910192915050565b600060208284031215610a1357600080fd5b815180151581146109a657600080fdfea164736f6c634300080b000aa164736f6c634300080b000a", - "linkReferences": {}, - "deployedLinkReferences": {} - } diff --git a/packages/boba/gateway/src/deployment/contracts/BaseV1Voter.json b/packages/boba/gateway/src/deployment/contracts/BaseV1Voter.json deleted file mode 100644 index dcf2ad6a4f..0000000000 --- a/packages/boba/gateway/src/deployment/contracts/BaseV1Voter.json +++ /dev/null @@ -1,726 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "BaseV1Voter", - "sourceName": "contracts/BaseV1-voter.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "__ve", - "type": "address" - }, - { - "internalType": "address", - "name": "_gauges", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "int256", - "name": "weight", - "type": "int256" - } - ], - "name": "Abstained", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "gauge", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "DistributeReward", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "gauge", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "pool", - "type": "address" - } - ], - "name": "GaugeCreated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "requester", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "pool", - "type": "address" - } - ], - "name": "GaugeRequested", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "reward", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "NotifyReward", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "voter", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "int256", - "name": "weight", - "type": "int256" - } - ], - "name": "Voted", - "type": "event" - }, - { - "inputs": [], - "name": "_ve", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "claimable", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_pool", - "type": "address" - }, - { - "internalType": "address", - "name": "_operator", - "type": "address" - } - ], - "name": "createGauge", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "_gauges", - "type": "address[]" - } - ], - "name": "distribute", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_gauge", - "type": "address" - } - ], - "name": "distribute", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "start", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "finish", - "type": "uint256" - } - ], - "name": "distribute", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "distribute", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "distro", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "gaugefactory", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "gauges", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "_pools", - "type": "address[]" - }, - { - "internalType": "address", - "name": "_minter", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "isGauge", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "isRequested", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "length", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "listing_fee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "minter", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "notifyRewardAmount", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - } - ], - "name": "poke", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "poolForGauge", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "poolVote", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "pools", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_pool", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - } - ], - "name": "requestGauge", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - } - ], - "name": "reset", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "totalWeight", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "updateAll", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "_gauges", - "type": "address[]" - } - ], - "name": "updateFor", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "start", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "end", - "type": "uint256" - } - ], - "name": "updateForRange", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_gauge", - "type": "address" - } - ], - "name": "updateGauge", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "usedWeights", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "_poolVote", - "type": "address[]" - }, - { - "internalType": "int256[]", - "name": "_weights", - "type": "int256[]" - } - ], - "name": "vote", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "votes", - "outputs": [ - { - "internalType": "int256", - "name": "", - "type": "int256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "weights", - "outputs": [ - { - "internalType": "int256", - "name": "", - "type": "int256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x60e06040526001600c553480156200001657600080fd5b50604051620029543803806200295483398101604081905262000039916200014d565b6200004433620000e0565b6001600160a01b038216608081905260408051637e062a3560e11b8152905163fc0c546a916004808201926020929091908290030181865afa1580156200008f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b5919062000185565b6001600160a01b0390811660a0521660c05250600180546001600160a01b03191633179055620001aa565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200014857600080fd5b919050565b600080604083850312156200016157600080fd5b6200016c8362000130565b91506200017c6020840162000130565b90509250929050565b6000602082840312156200019857600080fd5b620001a38262000130565b9392505050565b60805160a05160c0516127186200023c6000396000818161038d0152610e8801526000818161081a0152818161089301528181610af601528181610f58015261128e015260008181610439015281816105aa0152818161065e01528181610e550152818161113c015281816112030152818161139e015281816115cb015281816118a00152611bdb01526127186000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c8063794cea3c11610145578063aa79979b116100bd578063d23254b41161008c578063e4fc6b6d11610071578063e4fc6b6d1461031f578063f2fde38b1461054f578063fecdad601461056257600080fd5b8063d23254b414610511578063d560b0d71461053c57600080fd5b8063aa79979b146104aa578063ac4afa38146104cd578063b980777a146104e0578063b9a09fd5146104e857600080fd5b80638dd598fb116101145780639b6a9d72116100f95780639b6a9d7214610464578063a7cac84614610477578063a86a366d1461049757600080fd5b80638dd598fb1461043457806396c82e571461045b57600080fd5b8063794cea3c146103dd57806379e93824146103f0578063835be43c146104105780638da5cb5b1461042357600080fd5b806347b3c6ba116101d857806363453ae1116101a75780636ecbe38a1161018c5780636ecbe38a146103af578063715018a6146103c25780637625391a146103ca57600080fd5b806363453ae11461037557806368c3acb31461038857600080fd5b806347b3c6ba1461031f57806353d786931461032757806354d2184b1461032f5780636138889b1461036257600080fd5b806332145f901161021457806332145f90146102c65780633c6b16ab146102d9578063402914f5146102ec578063462d0b2e1461030c57600080fd5b806306d6a1b214610246578063075461721461028c5780631f7b6d321461029f578063310bd74b146102b1575b600080fd5b61026f610254366004611fcb565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b60015461026f906001600160a01b031681565b6003545b604051908152602001610283565b6102c46102bf366004611fef565b610575565b005b6102c46102d4366004611fef565b6106c5565b6102c46102e7366004611fef565b610815565b6102a36102fa366004611fcb565b600f6020526000908152604090205481565b6102c461031a3660046120f7565b6108e7565b6102c461097a565b6102c461098b565b61035261033d366004611fcb565b600b6020526000908152604090205460ff1681565b6040519015158152602001610283565b6102c4610370366004612149565b61099a565b6102c4610383366004611fcb565b6109de565b61026f7f000000000000000000000000000000000000000000000000000000000000000081565b6102c46103bd366004611fcb565b610baa565b6102c4610bb6565b6102c46103d8366004612186565b610c39565b61026f6103eb3660046121a8565b610ca4565b6102a36103fe366004611fef565b60096020526000908152604090205481565b6102c461041e3660046121d6565b611107565b6000546001600160a01b031661026f565b61026f7f000000000000000000000000000000000000000000000000000000000000000081565b6102a360025481565b6102c4610472366004612186565b6112cf565b6102a3610485366004611fcb565b60066020526000908152604090205481565b61026f6104a5366004612186565b611335565b6103526104b8366004611fcb565b600a6020526000908152604090205460ff1681565b61026f6104db366004611fef565b61136d565b6102a3611397565b61026f6104f6366004611fcb565b6004602052600090815260409020546001600160a01b031681565b6102a361051f366004612202565b600760209081526000928352604080842090915290825290205481565b6102c461054a366004612149565b611443565b6102c461055d366004611fcb565b611483565b6102c4610570366004612273565b611596565b6040517f430c2081000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063430c208190604401602060405180830381865afa1580156105f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061d91906122ed565b61062657600080fd5b61062f816116c1565b6040517fc1f0fb9f000000000000000000000000000000000000000000000000000000008152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c1f0fb9f90602401600060405180830381600087803b1580156106aa57600080fd5b505af11580156106be573d6000803e3d6000fd5b5050505050565b60008181526008602090815260408083208054825181850281018501909352808352919290919083018282801561072557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610707575b5050505050905060008151905060008167ffffffffffffffff81111561074d5761074d612008565b604051908082528060200260200182016040528015610776578160200160208202803683370190505b50905060005b82811015610803576007600086815260200190815260200160002060008583815181106107ab576107ab61230f565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106107e6576107e661230f565b6020908102919091010152806107fb8161236d565b91505061077c565b5061080f848483611863565b50505050565b6108417f0000000000000000000000000000000000000000000000000000000000000000333084611c72565b60025460009061085983670de0b6b3a76400006123a6565b6108639190612412565b905080156108835780600d600082825461087d9190612426565b90915550505b6040518281526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169033907ff70d5c697de7ea828df48e5c4573cb2194c659f1901f70110c52b066dcf508269060200160405180910390a35050565b6001546001600160a01b031633146108fe57600080fd5b60005b825181101561093e5761092c83828151811061091f5761091f61230f565b6020026020010151611d98565b806109368161236d565b915050610901565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b60035461098990600090610c39565b565b600354610989906000906112cf565b60005b81518110156109da576109c88282815181106109bb576109bb61230f565b60200260200101516109de565b806109d28161236d565b91505061099d565b5050565b600c546001146109ed57600080fd5b6002600c55600154604080517fed29fc1100000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169163ed29fc119160048082019260209290919082900301816000875af1158015610a57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7b919061243e565b50610a8581611e29565b6001600160a01b0381166000908152600f602052604081205490610aac62093a8083612412565b1115610ba1576001600160a01b038281166000818152600f602052604080822091909155517fb66503cf0000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000009092166004830152602482018390529063b66503cf90604401600060405180830381600087803b158015610b4857600080fd5b505af1158015610b5c573d6000803e3d6000fd5b50506040518381526001600160a01b03851692503391507f4fa9693cae526341d334e2862ca2413b2e503f1266255f9e0869fb36e6d89b179060200160405180910390a35b50506001600c55565b610bb381611e29565b50565b6000546001600160a01b03163314610c2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6109896000611f0c565b815b81811015610c9f57610c8d6004600060038481548110610c5d57610c5d61230f565b60009182526020808320909101546001600160a01b039081168452908301939093526040909101902054166109de565b80610c978161236d565b915050610c3b565b505050565b600080546001600160a01b03163314610d19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c26565b6001600160a01b038381166000908152600460205260409020541615610d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f65786973747300000000000000000000000000000000000000000000000000006044820152606401610c26565b6001600160a01b0383166000908152600b602052604090205460ff16610e1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f21726571756573746564000000000000000000000000000000000000000000006044820152606401610c26565b6040517f1c48e0fa0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000008116602483015283811660448301526000917f000000000000000000000000000000000000000000000000000000000000000090911690631c48e0fa906064016020604051808303816000875af1158015610ed3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef79190612457565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303816000875af1158015610fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc791906122ed565b506001600160a01b03808516600081815260046020908152604080832080549587167fffffffffffffffffffffffff000000000000000000000000000000000000000096871681179091558352600582528083208054909516909317909355600a909252902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561105f81611e29565b600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03868116918217909255604051858316815290918316907f9b8203efe7fe42185a7755b0510f87c8b693971d6a7c22520aaf683e6b1242619060200160405180910390a39392505050565b8015611285576040517f6352211e000000000000000000000000000000000000000000000000000000008152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa15801561118b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111af9190612457565b6001600160a01b0316336001600160a01b0316146111cc57600080fd5b6111d4611397565b6040517fe7e242d4000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e7e242d490602401602060405180830381865afa158015611252573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611276919061243e565b1161128057600080fd5b6112c6565b6001546112c6907f00000000000000000000000000000000000000000000000000000000000000009033906001600160a01b03166112c1611397565b611c72565b6109da82611d98565b815b81811015610c9f5761132360046000600384815481106112f3576112f361230f565b60009182526020808320909101546001600160a01b03908116845290830193909352604090910190205416611e29565b8061132d8161236d565b9150506112d1565b6008602052816000526040600020818154811061135157600080fd5b6000918252602090912001546001600160a01b03169150829050565b6003818154811061137d57600080fd5b6000918252602090912001546001600160a01b0316905081565b60006117707f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141e919061243e565b611434906b019d971e4fe8401e74000000612474565b61143e9190612412565b905090565b60005b81518110156109da576114718282815181106114645761146461230f565b6020026020010151611e29565b8061147b8161236d565b915050611446565b6000546001600160a01b031633146114f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c26565b6001600160a01b03811661158d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610c26565b610bb381611f0c565b6040517f430c2081000000000000000000000000000000000000000000000000000000008152336004820152602481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063430c208190604401602060405180830381865afa15801561161a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163e91906122ed565b61164757600080fd5b82811461165357600080fd5b6106be858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060408051602080890282810182019093528882529093508892508791829185019084908082843760009201919091525061186392505050565b600081815260086020526040812080549091805b828110156118275760008482815481106116f1576116f161230f565b60009182526020808320909101548883526007825260408084206001600160a01b03909216808552919092529120549091508015611812576001600160a01b0380831660009081526004602052604090205461174d9116611e29565b6001600160a01b0382166000908152600660205260408120805483929061177590849061248b565b909155505060008781526007602090815260408083206001600160a01b0386168452909152812080548392906117ac90849061248b565b909155505060008113156117cb576117c481856124ff565b93506117d8565b6117d5818561248b565b93505b60408051888152602081018390527f6b3894ce60b9bbe9d93f1a4e6fc25b6b93cd8222e73ab6348d79c596f5b51de9910160405180910390a15b5050808061181f9061236d565b9150506116d5565b50806002600082825461183a9190612474565b909155505060008481526009602090815260408083208390556008909152812061080f91611f74565b61186c836116c1565b81516040517fe7e242d4000000000000000000000000000000000000000000000000000000008152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e7e242d490602401602060405180830381865afa1580156118ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611913919061243e565b90506000806000805b858110156119a65760008782815181106119385761193861230f565b60200260200101511361196d578681815181106119575761195761230f565b602002602001015161196890612573565b611988565b86818151811061197f5761197f61230f565b60200260200101515b61199290856124ff565b93508061199e8161236d565b91505061191c565b5060005b85811015611ba25760008882815181106119c6576119c661230f565b6020908102919091018101516001600160a01b03808216600090815260048452604080822054909216808252600a909452205490925060ff1615611b8d57600086888b8681518110611a1a57611a1a61230f565b6020026020010151611a2c91906125ac565b611a369190612668565b60008d81526007602090815260408083206001600160a01b038816845290915290205490915015611a6657600080fd5b80611a7057600080fd5b611a7982611e29565b60008c815260086020908152604080832080546001810182559084528284200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0388169081179091558352600690915281208054839290611ae69084906124ff565b909155505060008c81526007602090815260408083206001600160a01b038716845290915281208054839290611b1d9084906124ff565b90915550506000811215611b3757611b3481612573565b90505b611b4181866124ff565b9450611b4d81876124ff565b604080518e81526020810184905291975033917f1263a2295e53acd6ef8f655b8afc11fa0f2cf11925be7aa1757d741ef32a926c910160405180910390a2505b50508080611b9a9061236d565b9150506119aa565b506000811315611c40576040517ffd4a77f1000000000000000000000000000000000000000000000000000000008152600481018990527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063fd4a77f190602401600060405180830381600087803b158015611c2757600080fd5b505af1158015611c3b573d6000803e3d6000fd5b505050505b8160026000828254611c529190612426565b909155505060009788526009602052604090972096909655505050505050565b6000846001600160a01b03163b11611c8957600080fd5b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691611d1b91906126d0565b6000604051808303816000865af19150503d8060008114611d58576040519150601f19603f3d011682016040523d82523d6000602084013e611d5d565b606091505b5091509150818015611d87575080511580611d87575080806020019051810190611d8791906122ed565b611d9057600080fd5b505050505050565b6001600160a01b0381166000908152600b602052604090205460ff1615611dbe57600080fd5b6001600160a01b0381166000818152600b602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555133917ff0327cb46adc649a852254aa18a449aba7285c193557d9dbc9be7fb028d0e00f91a350565b6001600160a01b0380821660009081526005602090815260408083205490931680835260069091529181205490811315611eeb576001600160a01b0383166000908152600e602052604081208054600d549182905591611e898383612474565b90508015611d90576000670de0b6b3a7640000611ea683876123a6565b611eb09190612412565b6001600160a01b0388166000908152600f6020526040812080549293508392909190611edd908490612426565b909155505050505050505050565b600d546001600160a01b0384166000908152600e6020526040902055505050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5080546000825590600052602060002090810190610bb391905b80821115611fa25760008155600101611f8e565b5090565b6001600160a01b0381168114610bb357600080fd5b8035611fc681611fa6565b919050565b600060208284031215611fdd57600080fd5b8135611fe881611fa6565b9392505050565b60006020828403121561200157600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261204857600080fd5b8135602067ffffffffffffffff8083111561206557612065612008565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811084821117156120a8576120a8612008565b6040529384528581018301938381019250878511156120c657600080fd5b83870191505b848210156120ec576120dd82611fbb565b835291830191908301906120cc565b979650505050505050565b6000806040838503121561210a57600080fd5b823567ffffffffffffffff81111561212157600080fd5b61212d85828601612037565b925050602083013561213e81611fa6565b809150509250929050565b60006020828403121561215b57600080fd5b813567ffffffffffffffff81111561217257600080fd5b61217e84828501612037565b949350505050565b6000806040838503121561219957600080fd5b50508035926020909101359150565b600080604083850312156121bb57600080fd5b82356121c681611fa6565b9150602083013561213e81611fa6565b600080604083850312156121e957600080fd5b82356121f481611fa6565b946020939093013593505050565b6000806040838503121561221557600080fd5b82359150602083013561213e81611fa6565b60008083601f84011261223957600080fd5b50813567ffffffffffffffff81111561225157600080fd5b6020830191508360208260051b850101111561226c57600080fd5b9250929050565b60008060008060006060868803121561228b57600080fd5b85359450602086013567ffffffffffffffff808211156122aa57600080fd5b6122b689838a01612227565b909650945060408801359150808211156122cf57600080fd5b506122dc88828901612227565b969995985093965092949392505050565b6000602082840312156122ff57600080fd5b81518015158114611fe857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561239f5761239f61233e565b5060010190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156123de576123de61233e565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612421576124216123e3565b500490565b600082198211156124395761243961233e565b500190565b60006020828403121561245057600080fd5b5051919050565b60006020828403121561246957600080fd5b8151611fe881611fa6565b6000828210156124865761248661233e565b500390565b6000808312837f8000000000000000000000000000000000000000000000000000000000000000018312811516156124c5576124c561233e565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0183138116156124f9576124f961233e565b50500390565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038413811516156125395761253961233e565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561256d5761256d61233e565b50500190565b60007f80000000000000000000000000000000000000000000000000000000000000008214156125a5576125a561233e565b5060000390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000841360008413858304851182821616156125ed576125ed61233e565b7f800000000000000000000000000000000000000000000000000000000000000060008712868205881281841616156126285761262861233e565b600087129250878205871284841616156126445761264461233e565b8785058712818416161561265a5761265a61233e565b505050929093029392505050565b600082612677576126776123e3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156126cb576126cb61233e565b500590565b6000825160005b818110156126f157602081860181015185830152016126d7565b81811115612700576000828501525b50919091019291505056fea164736f6c634300080b000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102415760003560e01c8063794cea3c11610145578063aa79979b116100bd578063d23254b41161008c578063e4fc6b6d11610071578063e4fc6b6d1461031f578063f2fde38b1461054f578063fecdad601461056257600080fd5b8063d23254b414610511578063d560b0d71461053c57600080fd5b8063aa79979b146104aa578063ac4afa38146104cd578063b980777a146104e0578063b9a09fd5146104e857600080fd5b80638dd598fb116101145780639b6a9d72116100f95780639b6a9d7214610464578063a7cac84614610477578063a86a366d1461049757600080fd5b80638dd598fb1461043457806396c82e571461045b57600080fd5b8063794cea3c146103dd57806379e93824146103f0578063835be43c146104105780638da5cb5b1461042357600080fd5b806347b3c6ba116101d857806363453ae1116101a75780636ecbe38a1161018c5780636ecbe38a146103af578063715018a6146103c25780637625391a146103ca57600080fd5b806363453ae11461037557806368c3acb31461038857600080fd5b806347b3c6ba1461031f57806353d786931461032757806354d2184b1461032f5780636138889b1461036257600080fd5b806332145f901161021457806332145f90146102c65780633c6b16ab146102d9578063402914f5146102ec578063462d0b2e1461030c57600080fd5b806306d6a1b214610246578063075461721461028c5780631f7b6d321461029f578063310bd74b146102b1575b600080fd5b61026f610254366004611fcb565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b60015461026f906001600160a01b031681565b6003545b604051908152602001610283565b6102c46102bf366004611fef565b610575565b005b6102c46102d4366004611fef565b6106c5565b6102c46102e7366004611fef565b610815565b6102a36102fa366004611fcb565b600f6020526000908152604090205481565b6102c461031a3660046120f7565b6108e7565b6102c461097a565b6102c461098b565b61035261033d366004611fcb565b600b6020526000908152604090205460ff1681565b6040519015158152602001610283565b6102c4610370366004612149565b61099a565b6102c4610383366004611fcb565b6109de565b61026f7f000000000000000000000000000000000000000000000000000000000000000081565b6102c46103bd366004611fcb565b610baa565b6102c4610bb6565b6102c46103d8366004612186565b610c39565b61026f6103eb3660046121a8565b610ca4565b6102a36103fe366004611fef565b60096020526000908152604090205481565b6102c461041e3660046121d6565b611107565b6000546001600160a01b031661026f565b61026f7f000000000000000000000000000000000000000000000000000000000000000081565b6102a360025481565b6102c4610472366004612186565b6112cf565b6102a3610485366004611fcb565b60066020526000908152604090205481565b61026f6104a5366004612186565b611335565b6103526104b8366004611fcb565b600a6020526000908152604090205460ff1681565b61026f6104db366004611fef565b61136d565b6102a3611397565b61026f6104f6366004611fcb565b6004602052600090815260409020546001600160a01b031681565b6102a361051f366004612202565b600760209081526000928352604080842090915290825290205481565b6102c461054a366004612149565b611443565b6102c461055d366004611fcb565b611483565b6102c4610570366004612273565b611596565b6040517f430c2081000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063430c208190604401602060405180830381865afa1580156105f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061d91906122ed565b61062657600080fd5b61062f816116c1565b6040517fc1f0fb9f000000000000000000000000000000000000000000000000000000008152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c1f0fb9f90602401600060405180830381600087803b1580156106aa57600080fd5b505af11580156106be573d6000803e3d6000fd5b5050505050565b60008181526008602090815260408083208054825181850281018501909352808352919290919083018282801561072557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610707575b5050505050905060008151905060008167ffffffffffffffff81111561074d5761074d612008565b604051908082528060200260200182016040528015610776578160200160208202803683370190505b50905060005b82811015610803576007600086815260200190815260200160002060008583815181106107ab576107ab61230f565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106107e6576107e661230f565b6020908102919091010152806107fb8161236d565b91505061077c565b5061080f848483611863565b50505050565b6108417f0000000000000000000000000000000000000000000000000000000000000000333084611c72565b60025460009061085983670de0b6b3a76400006123a6565b6108639190612412565b905080156108835780600d600082825461087d9190612426565b90915550505b6040518281526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169033907ff70d5c697de7ea828df48e5c4573cb2194c659f1901f70110c52b066dcf508269060200160405180910390a35050565b6001546001600160a01b031633146108fe57600080fd5b60005b825181101561093e5761092c83828151811061091f5761091f61230f565b6020026020010151611d98565b806109368161236d565b915050610901565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b60035461098990600090610c39565b565b600354610989906000906112cf565b60005b81518110156109da576109c88282815181106109bb576109bb61230f565b60200260200101516109de565b806109d28161236d565b91505061099d565b5050565b600c546001146109ed57600080fd5b6002600c55600154604080517fed29fc1100000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169163ed29fc119160048082019260209290919082900301816000875af1158015610a57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7b919061243e565b50610a8581611e29565b6001600160a01b0381166000908152600f602052604081205490610aac62093a8083612412565b1115610ba1576001600160a01b038281166000818152600f602052604080822091909155517fb66503cf0000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000009092166004830152602482018390529063b66503cf90604401600060405180830381600087803b158015610b4857600080fd5b505af1158015610b5c573d6000803e3d6000fd5b50506040518381526001600160a01b03851692503391507f4fa9693cae526341d334e2862ca2413b2e503f1266255f9e0869fb36e6d89b179060200160405180910390a35b50506001600c55565b610bb381611e29565b50565b6000546001600160a01b03163314610c2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6109896000611f0c565b815b81811015610c9f57610c8d6004600060038481548110610c5d57610c5d61230f565b60009182526020808320909101546001600160a01b039081168452908301939093526040909101902054166109de565b80610c978161236d565b915050610c3b565b505050565b600080546001600160a01b03163314610d19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c26565b6001600160a01b038381166000908152600460205260409020541615610d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f65786973747300000000000000000000000000000000000000000000000000006044820152606401610c26565b6001600160a01b0383166000908152600b602052604090205460ff16610e1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f21726571756573746564000000000000000000000000000000000000000000006044820152606401610c26565b6040517f1c48e0fa0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000008116602483015283811660448301526000917f000000000000000000000000000000000000000000000000000000000000000090911690631c48e0fa906064016020604051808303816000875af1158015610ed3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef79190612457565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303816000875af1158015610fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc791906122ed565b506001600160a01b03808516600081815260046020908152604080832080549587167fffffffffffffffffffffffff000000000000000000000000000000000000000096871681179091558352600582528083208054909516909317909355600a909252902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561105f81611e29565b600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03868116918217909255604051858316815290918316907f9b8203efe7fe42185a7755b0510f87c8b693971d6a7c22520aaf683e6b1242619060200160405180910390a39392505050565b8015611285576040517f6352211e000000000000000000000000000000000000000000000000000000008152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa15801561118b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111af9190612457565b6001600160a01b0316336001600160a01b0316146111cc57600080fd5b6111d4611397565b6040517fe7e242d4000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e7e242d490602401602060405180830381865afa158015611252573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611276919061243e565b1161128057600080fd5b6112c6565b6001546112c6907f00000000000000000000000000000000000000000000000000000000000000009033906001600160a01b03166112c1611397565b611c72565b6109da82611d98565b815b81811015610c9f5761132360046000600384815481106112f3576112f361230f565b60009182526020808320909101546001600160a01b03908116845290830193909352604090910190205416611e29565b8061132d8161236d565b9150506112d1565b6008602052816000526040600020818154811061135157600080fd5b6000918252602090912001546001600160a01b03169150829050565b6003818154811061137d57600080fd5b6000918252602090912001546001600160a01b0316905081565b60006117707f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141e919061243e565b611434906b019d971e4fe8401e74000000612474565b61143e9190612412565b905090565b60005b81518110156109da576114718282815181106114645761146461230f565b6020026020010151611e29565b8061147b8161236d565b915050611446565b6000546001600160a01b031633146114f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c26565b6001600160a01b03811661158d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610c26565b610bb381611f0c565b6040517f430c2081000000000000000000000000000000000000000000000000000000008152336004820152602481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063430c208190604401602060405180830381865afa15801561161a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163e91906122ed565b61164757600080fd5b82811461165357600080fd5b6106be858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060408051602080890282810182019093528882529093508892508791829185019084908082843760009201919091525061186392505050565b600081815260086020526040812080549091805b828110156118275760008482815481106116f1576116f161230f565b60009182526020808320909101548883526007825260408084206001600160a01b03909216808552919092529120549091508015611812576001600160a01b0380831660009081526004602052604090205461174d9116611e29565b6001600160a01b0382166000908152600660205260408120805483929061177590849061248b565b909155505060008781526007602090815260408083206001600160a01b0386168452909152812080548392906117ac90849061248b565b909155505060008113156117cb576117c481856124ff565b93506117d8565b6117d5818561248b565b93505b60408051888152602081018390527f6b3894ce60b9bbe9d93f1a4e6fc25b6b93cd8222e73ab6348d79c596f5b51de9910160405180910390a15b5050808061181f9061236d565b9150506116d5565b50806002600082825461183a9190612474565b909155505060008481526009602090815260408083208390556008909152812061080f91611f74565b61186c836116c1565b81516040517fe7e242d4000000000000000000000000000000000000000000000000000000008152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e7e242d490602401602060405180830381865afa1580156118ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611913919061243e565b90506000806000805b858110156119a65760008782815181106119385761193861230f565b60200260200101511361196d578681815181106119575761195761230f565b602002602001015161196890612573565b611988565b86818151811061197f5761197f61230f565b60200260200101515b61199290856124ff565b93508061199e8161236d565b91505061191c565b5060005b85811015611ba25760008882815181106119c6576119c661230f565b6020908102919091018101516001600160a01b03808216600090815260048452604080822054909216808252600a909452205490925060ff1615611b8d57600086888b8681518110611a1a57611a1a61230f565b6020026020010151611a2c91906125ac565b611a369190612668565b60008d81526007602090815260408083206001600160a01b038816845290915290205490915015611a6657600080fd5b80611a7057600080fd5b611a7982611e29565b60008c815260086020908152604080832080546001810182559084528284200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0388169081179091558352600690915281208054839290611ae69084906124ff565b909155505060008c81526007602090815260408083206001600160a01b038716845290915281208054839290611b1d9084906124ff565b90915550506000811215611b3757611b3481612573565b90505b611b4181866124ff565b9450611b4d81876124ff565b604080518e81526020810184905291975033917f1263a2295e53acd6ef8f655b8afc11fa0f2cf11925be7aa1757d741ef32a926c910160405180910390a2505b50508080611b9a9061236d565b9150506119aa565b506000811315611c40576040517ffd4a77f1000000000000000000000000000000000000000000000000000000008152600481018990527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063fd4a77f190602401600060405180830381600087803b158015611c2757600080fd5b505af1158015611c3b573d6000803e3d6000fd5b505050505b8160026000828254611c529190612426565b909155505060009788526009602052604090972096909655505050505050565b6000846001600160a01b03163b11611c8957600080fd5b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691611d1b91906126d0565b6000604051808303816000865af19150503d8060008114611d58576040519150601f19603f3d011682016040523d82523d6000602084013e611d5d565b606091505b5091509150818015611d87575080511580611d87575080806020019051810190611d8791906122ed565b611d9057600080fd5b505050505050565b6001600160a01b0381166000908152600b602052604090205460ff1615611dbe57600080fd5b6001600160a01b0381166000818152600b602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555133917ff0327cb46adc649a852254aa18a449aba7285c193557d9dbc9be7fb028d0e00f91a350565b6001600160a01b0380821660009081526005602090815260408083205490931680835260069091529181205490811315611eeb576001600160a01b0383166000908152600e602052604081208054600d549182905591611e898383612474565b90508015611d90576000670de0b6b3a7640000611ea683876123a6565b611eb09190612412565b6001600160a01b0388166000908152600f6020526040812080549293508392909190611edd908490612426565b909155505050505050505050565b600d546001600160a01b0384166000908152600e6020526040902055505050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5080546000825590600052602060002090810190610bb391905b80821115611fa25760008155600101611f8e565b5090565b6001600160a01b0381168114610bb357600080fd5b8035611fc681611fa6565b919050565b600060208284031215611fdd57600080fd5b8135611fe881611fa6565b9392505050565b60006020828403121561200157600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261204857600080fd5b8135602067ffffffffffffffff8083111561206557612065612008565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811084821117156120a8576120a8612008565b6040529384528581018301938381019250878511156120c657600080fd5b83870191505b848210156120ec576120dd82611fbb565b835291830191908301906120cc565b979650505050505050565b6000806040838503121561210a57600080fd5b823567ffffffffffffffff81111561212157600080fd5b61212d85828601612037565b925050602083013561213e81611fa6565b809150509250929050565b60006020828403121561215b57600080fd5b813567ffffffffffffffff81111561217257600080fd5b61217e84828501612037565b949350505050565b6000806040838503121561219957600080fd5b50508035926020909101359150565b600080604083850312156121bb57600080fd5b82356121c681611fa6565b9150602083013561213e81611fa6565b600080604083850312156121e957600080fd5b82356121f481611fa6565b946020939093013593505050565b6000806040838503121561221557600080fd5b82359150602083013561213e81611fa6565b60008083601f84011261223957600080fd5b50813567ffffffffffffffff81111561225157600080fd5b6020830191508360208260051b850101111561226c57600080fd5b9250929050565b60008060008060006060868803121561228b57600080fd5b85359450602086013567ffffffffffffffff808211156122aa57600080fd5b6122b689838a01612227565b909650945060408801359150808211156122cf57600080fd5b506122dc88828901612227565b969995985093965092949392505050565b6000602082840312156122ff57600080fd5b81518015158114611fe857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561239f5761239f61233e565b5060010190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156123de576123de61233e565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612421576124216123e3565b500490565b600082198211156124395761243961233e565b500190565b60006020828403121561245057600080fd5b5051919050565b60006020828403121561246957600080fd5b8151611fe881611fa6565b6000828210156124865761248661233e565b500390565b6000808312837f8000000000000000000000000000000000000000000000000000000000000000018312811516156124c5576124c561233e565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0183138116156124f9576124f961233e565b50500390565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038413811516156125395761253961233e565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561256d5761256d61233e565b50500190565b60007f80000000000000000000000000000000000000000000000000000000000000008214156125a5576125a561233e565b5060000390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000841360008413858304851182821616156125ed576125ed61233e565b7f800000000000000000000000000000000000000000000000000000000000000060008712868205881281841616156126285761262861233e565b600087129250878205871284841616156126445761264461233e565b8785058712818416161561265a5761265a61233e565b505050929093029392505050565b600082612677576126776123e3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156126cb576126cb61233e565b500590565b6000825160005b818110156126f157602081860181015185830152016126d7565b81811115612700576000828501525b50919091019291505056fea164736f6c634300080b000a", - "linkReferences": {}, - "deployedLinkReferences": {} - } diff --git a/packages/boba/gateway/src/deployment/contracts/BobaAirdrop.json b/packages/boba/gateway/src/deployment/contracts/BobaAirdrop.json deleted file mode 100644 index 6eb774afa8..0000000000 --- a/packages/boba/gateway/src/deployment/contracts/BobaAirdrop.json +++ /dev/null @@ -1,229 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "BobaAirdrop", - "sourceName": "contracts/BobaAirdrop.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "token_", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "merkleRoot_", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "index", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "Claimed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "OwnerWithdraw", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32", - "name": "newRoot", - "type": "bytes32" - } - ], - "name": "RootUpdated", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "bytes32[]", - "name": "merkleProof", - "type": "bytes32[]" - } - ], - "name": "claim", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "isClaimed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "merkleRoot", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "token", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "newMerkleRoot", - "type": "bytes32" - } - ], - "name": "updateRoot", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "withdrawFunds", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50604051610e37380380610e3783398101604081905261002f916100bc565b61003f61003a610068565b61006c565b600180546001600160a01b0319166001600160a01b0393909316929092179091556002556100f4565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100ce578182fd5b82516001600160a01b03811681146100e4578283fd5b6020939093015192949293505050565b610d34806101036000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063715018a6116100765780639e34070f1161005b5780639e34070f1461011e578063f2fde38b1461013e578063fc0c546a14610151576100a3565b8063715018a6146101015780638da5cb5b14610109576100a3565b8063155dd5ee146100a857806321ff9970146100bd5780632e7ba6ef146100d05780632eb4a7ab146100e3575b600080fd5b6100bb6100b6366004610965565b610159565b005b6100bb6100cb366004610965565b6102ef565b6100bb6100de36600461097d565b610397565b6100eb6105a9565b6040516100f89190610aa9565b60405180910390f35b6100bb6105af565b61011161062e565b6040516100f89190610a57565b61013161012c366004610965565b61064a565b6040516100f89190610a9e565b6100bb61014c366004610924565b61068d565b610111610759565b610161610775565b73ffffffffffffffffffffffffffffffffffffffff1661017f61062e565b73ffffffffffffffffffffffffffffffffffffffff16146101d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cc90610bb4565b60405180910390fd5b6001546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb9061022d9033908590600401610a78565b602060405180830381600087803b15801561024757600080fd5b505af115801561025b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027f9190610945565b6102b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cc90610b7d565b7fa20809e697380eaea0fd13bf4d14b00e2ef29559ef361501189d3be2e9b0ec85816040516102e49190610aa9565b60405180910390a150565b6102f7610775565b73ffffffffffffffffffffffffffffffffffffffff1661031561062e565b73ffffffffffffffffffffffffffffffffffffffff1614610362576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cc90610bb4565b60028190556040517f2cbc14f49c068133583f7cb530018af451c87c1cf1327cf2a4ff4698c4730aa4906102e4908390610aa9565b6103a08561064a565b156103d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cc90610be9565b60008585856040516020016103ee93929190610a1c565b604051602081830303815290604052805190602001209050610447838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506002549150849050610779565b61047d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cc90610b46565b6104868661084d565b6001546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906104de9088908890600401610a78565b602060405180830381600087803b1580156104f857600080fd5b505af115801561050c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105309190610945565b610566576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cc90610b0f565b7f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed02686868660405161059993929190610c46565b60405180910390a1505050505050565b60025481565b6105b7610775565b73ffffffffffffffffffffffffffffffffffffffff166105d561062e565b73ffffffffffffffffffffffffffffffffffffffff1614610622576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cc90610bb4565b61062c600061088b565b565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60008061065961010084610c72565b9050600061066961010085610ce4565b60009283526003602052604090922054600190921b9182169091149150505b919050565b610695610775565b73ffffffffffffffffffffffffffffffffffffffff166106b361062e565b73ffffffffffffffffffffffffffffffffffffffff1614610700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cc90610bb4565b73ffffffffffffffffffffffffffffffffffffffff811661074d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cc90610ab2565b6107568161088b565b50565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b3390565b600081815b85518110156108425760008682815181106107c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190508083116108035782816040516020016107e6929190610a0e565b60405160208183030381529060405280519060200120925061082f565b8083604051602001610816929190610a0e565b6040516020818303038152906040528051906020012092505b508061083a81610c86565b91505061077e565b509092149392505050565b600061085b61010083610c72565b9050600061086b61010084610ce4565b6000928352600360205260409092208054600190931b9092179091555050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461068857600080fd5b600060208284031215610935578081fd5b61093e82610900565b9392505050565b600060208284031215610956578081fd5b8151801515811461093e578182fd5b600060208284031215610976578081fd5b5035919050565b600080600080600060808688031215610994578081fd5b853594506109a460208701610900565b935060408601359250606086013567ffffffffffffffff808211156109c7578283fd5b818801915088601f8301126109da578283fd5b8135818111156109e8578384fd5b89602080830285010111156109fb578384fd5b9699959850939650602001949392505050565b918252602082015260400190565b92835260609190911b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020830152603482015260540190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601d908201527f426f626141697264726f703a205472616e73666572206661696c65642e000000604082015260600190565b6020808252601b908201527f426f626141697264726f703a20496e76616c69642070726f6f662e0000000000604082015260600190565b6020808252601d908201527f426f626141697264726f703a205769746864726177204661696c65642e000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f426f626141697264726f703a2044726f7020616c726561647920636c61696d6560408201527f642e000000000000000000000000000000000000000000000000000000000000606082015260800190565b92835273ffffffffffffffffffffffffffffffffffffffff919091166020830152604082015260600190565b600082610c8157610c81610cf8565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610cdd577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b5060010190565b600082610cf357610cf3610cf8565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea164736f6c6343000800000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a35760003560e01c8063715018a6116100765780639e34070f1161005b5780639e34070f1461011e578063f2fde38b1461013e578063fc0c546a14610151576100a3565b8063715018a6146101015780638da5cb5b14610109576100a3565b8063155dd5ee146100a857806321ff9970146100bd5780632e7ba6ef146100d05780632eb4a7ab146100e3575b600080fd5b6100bb6100b6366004610965565b610159565b005b6100bb6100cb366004610965565b6102ef565b6100bb6100de36600461097d565b610397565b6100eb6105a9565b6040516100f89190610aa9565b60405180910390f35b6100bb6105af565b61011161062e565b6040516100f89190610a57565b61013161012c366004610965565b61064a565b6040516100f89190610a9e565b6100bb61014c366004610924565b61068d565b610111610759565b610161610775565b73ffffffffffffffffffffffffffffffffffffffff1661017f61062e565b73ffffffffffffffffffffffffffffffffffffffff16146101d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cc90610bb4565b60405180910390fd5b6001546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb9061022d9033908590600401610a78565b602060405180830381600087803b15801561024757600080fd5b505af115801561025b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027f9190610945565b6102b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cc90610b7d565b7fa20809e697380eaea0fd13bf4d14b00e2ef29559ef361501189d3be2e9b0ec85816040516102e49190610aa9565b60405180910390a150565b6102f7610775565b73ffffffffffffffffffffffffffffffffffffffff1661031561062e565b73ffffffffffffffffffffffffffffffffffffffff1614610362576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cc90610bb4565b60028190556040517f2cbc14f49c068133583f7cb530018af451c87c1cf1327cf2a4ff4698c4730aa4906102e4908390610aa9565b6103a08561064a565b156103d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cc90610be9565b60008585856040516020016103ee93929190610a1c565b604051602081830303815290604052805190602001209050610447838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506002549150849050610779565b61047d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cc90610b46565b6104868661084d565b6001546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906104de9088908890600401610a78565b602060405180830381600087803b1580156104f857600080fd5b505af115801561050c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105309190610945565b610566576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cc90610b0f565b7f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed02686868660405161059993929190610c46565b60405180910390a1505050505050565b60025481565b6105b7610775565b73ffffffffffffffffffffffffffffffffffffffff166105d561062e565b73ffffffffffffffffffffffffffffffffffffffff1614610622576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cc90610bb4565b61062c600061088b565b565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60008061065961010084610c72565b9050600061066961010085610ce4565b60009283526003602052604090922054600190921b9182169091149150505b919050565b610695610775565b73ffffffffffffffffffffffffffffffffffffffff166106b361062e565b73ffffffffffffffffffffffffffffffffffffffff1614610700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cc90610bb4565b73ffffffffffffffffffffffffffffffffffffffff811661074d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cc90610ab2565b6107568161088b565b50565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b3390565b600081815b85518110156108425760008682815181106107c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190508083116108035782816040516020016107e6929190610a0e565b60405160208183030381529060405280519060200120925061082f565b8083604051602001610816929190610a0e565b6040516020818303038152906040528051906020012092505b508061083a81610c86565b91505061077e565b509092149392505050565b600061085b61010083610c72565b9050600061086b61010084610ce4565b6000928352600360205260409092208054600190931b9092179091555050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461068857600080fd5b600060208284031215610935578081fd5b61093e82610900565b9392505050565b600060208284031215610956578081fd5b8151801515811461093e578182fd5b600060208284031215610976578081fd5b5035919050565b600080600080600060808688031215610994578081fd5b853594506109a460208701610900565b935060408601359250606086013567ffffffffffffffff808211156109c7578283fd5b818801915088601f8301126109da578283fd5b8135818111156109e8578384fd5b89602080830285010111156109fb578384fd5b9699959850939650602001949392505050565b918252602082015260400190565b92835260609190911b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020830152603482015260540190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601d908201527f426f626141697264726f703a205472616e73666572206661696c65642e000000604082015260600190565b6020808252601b908201527f426f626141697264726f703a20496e76616c69642070726f6f662e0000000000604082015260600190565b6020808252601d908201527f426f626141697264726f703a205769746864726177204661696c65642e000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f426f626141697264726f703a2044726f7020616c726561647920636c61696d6560408201527f642e000000000000000000000000000000000000000000000000000000000000606082015260800190565b92835273ffffffffffffffffffffffffffffffffffffffff919091166020830152604082015260600190565b600082610c8157610c81610cf8565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610cdd577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b5060010190565b600082610cf357610cf3610cf8565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea164736f6c6343000800000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/boba/gateway/src/deployment/contracts/BobaAirdropSecond.json b/packages/boba/gateway/src/deployment/contracts/BobaAirdropSecond.json deleted file mode 100644 index 7ca7c0f88a..0000000000 --- a/packages/boba/gateway/src/deployment/contracts/BobaAirdropSecond.json +++ /dev/null @@ -1,306 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "BobaAirdropSecond", - "sourceName": "contracts/BobaAirdropSecond.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "token_", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "merkleRoot_", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "omgL2Token_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "index", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "Claimed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "OwnerWithdraw", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "bytes32[]", - "name": "merkleProof", - "type": "bytes32[]" - } - ], - "name": "claim", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "bytes32[]", - "name": "merkleProof", - "type": "bytes32[]" - } - ], - "name": "initiateClaim", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "initiateTimestamp", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "isClaimed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "merkleRoot", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "omgL2Token", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "name": "setInitiateClaim", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "internalType": "struct BobaAirdropSecond.claimBatch[]", - "name": "_claims", - "type": "tuple[]" - } - ], - "name": "setInitiateClaimBatch", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "token", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "withdrawFunds", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b50604051620014b0380380620014b08339810160408190526200003491620000f1565b620000486200004262000080565b62000084565b600180546001600160a01b039485166001600160a01b0319918216179091556002929092556003805491909316911617905562000131565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000ec57600080fd5b919050565b60008060006060848603121562000106578283fd5b6200011184620000d4565b9250602084015191506200012860408501620000d4565b90509250925092565b61136f80620001416000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80639e34070f1161008c578063c025fa8e11610066578063c025fa8e146101a0578063c15cf3c0146101b3578063f2fde38b146101bb578063fc0c546a146101ce576100df565b80639e34070f1461015a578063a69b0b991461017a578063bbce08411461018d576100df565b806368bf9a38116100bd57806368bf9a381461012a578063715018a61461013d5780638da5cb5b14610145576100df565b8063155dd5ee146100e45780632e7ba6ef146100f95780632eb4a7ab1461010c575b600080fd5b6100f76100f2366004610db7565b6101d6565b005b6100f7610107366004610de7565b610338565b610114610593565b6040516101219190610f39565b60405180910390f35b610114610138366004610c62565b610599565b6100f76105ab565b61014d610610565b6040516101219190610ee7565b61016d610168366004610db7565b61062c565b6040516101219190610f2e565b6100f7610188366004610c83565b61066f565b6100f761019b366004610cac565b6106f1565b6100f76101ae366004610e4d565b6107eb565b61014d61099a565b6100f76101c9366004610c62565b6109b6565b61014d610a4e565b6101de610a6a565b73ffffffffffffffffffffffffffffffffffffffff166101fc610610565b73ffffffffffffffffffffffffffffffffffffffff16146102385760405162461bcd60e51b815260040161022f90611190565b60405180910390fd5b6001546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906102909033908590600401610f08565b602060405180830381600087803b1580156102aa57600080fd5b505af11580156102be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e29190610d1c565b6102fe5760405162461bcd60e51b815260040161022f90611159565b7fa20809e697380eaea0fd13bf4d14b00e2ef29559ef361501189d3be2e9b0ec858160405161032d9190610f39565b60405180910390a150565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020526040902054849061037c5760405162461bcd60e51b815260040161022f9061106a565b6103858661062c565b156103a25760405162461bcd60e51b815260040161022f906111c5565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600560205260409020546103d59062278d0061124e565b4210156103f45760405162461bcd60e51b815260040161022f906110fc565b600086868660405160200161040b93929190610eac565b604051602081830303815290604052805190602001209050610464848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506002549150849050610a6e565b6104805760405162461bcd60e51b815260040161022f90611033565b61048987610b42565b6001546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906104e19089908990600401610f08565b602060405180830381600087803b1580156104fb57600080fd5b505af115801561050f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105339190610d1c565b61054f5760405162461bcd60e51b815260040161022f90610ffc565b7f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed02687878760405161058293929190611222565b60405180910390a150505050505050565b60025481565b60056020526000908152604090205481565b6105b3610a6a565b73ffffffffffffffffffffffffffffffffffffffff166105d1610610565b73ffffffffffffffffffffffffffffffffffffffff16146106045760405162461bcd60e51b815260040161022f90611190565b61060e6000610b80565b565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60008061063b61010084611266565b9050600061064b610100856112f0565b60009283526004602052604090922054600190921b9182169091149150505b919050565b610677610a6a565b73ffffffffffffffffffffffffffffffffffffffff16610695610610565b73ffffffffffffffffffffffffffffffffffffffff16146106c85760405162461bcd60e51b815260040161022f90611190565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260056020526040902055565b6106f9610a6a565b73ffffffffffffffffffffffffffffffffffffffff16610717610610565b73ffffffffffffffffffffffffffffffffffffffff161461074a5760405162461bcd60e51b815260040161022f90611190565b60005b818110156107e6576000838383818110610790577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050604002018036038101906107a69190610d3c565b602080820151915173ffffffffffffffffffffffffffffffffffffffff1660009081526005909152604090205550806107de816112b7565b91505061074d565b505050565b8260646107f982605f61127a565b6108039190611266565b6003546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190610859903390600401610ee7565b60206040518083038186803b15801561087157600080fd5b505afa158015610885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a99190610dcf565b10156108c75760405162461bcd60e51b815260040161022f9061109f565b33600090815260056020526040902054156108f45760405162461bcd60e51b815260040161022f90610f42565b600085338660405160200161090b93929190610eac565b604051602081830303815290604052805190602001209050610964848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506002549150849050610a6e565b6109805760405162461bcd60e51b815260040161022f90611033565b505033600090815260056020526040902042905550505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b6109be610a6a565b73ffffffffffffffffffffffffffffffffffffffff166109dc610610565b73ffffffffffffffffffffffffffffffffffffffff1614610a0f5760405162461bcd60e51b815260040161022f90611190565b73ffffffffffffffffffffffffffffffffffffffff8116610a425760405162461bcd60e51b815260040161022f90610f9f565b610a4b81610b80565b50565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b3390565b600081815b8551811015610b37576000868281518110610ab7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050808311610af8578281604051602001610adb929190610e9e565b604051602081830303815290604052805190602001209250610b24565b8083604051602001610b0b929190610e9e565b6040516020818303038152906040528051906020012092505b5080610b2f816112b7565b915050610a73565b509092149392505050565b6000610b5061010083611266565b90506000610b60610100846112f0565b6000928352600460205260409092208054600190931b9092179091555050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461066a57600080fd5b60008083601f840112610c2a578182fd5b50813567ffffffffffffffff811115610c41578182fd5b6020830191508360208083028501011115610c5b57600080fd5b9250929050565b600060208284031215610c73578081fd5b610c7c82610bf5565b9392505050565b60008060408385031215610c95578081fd5b610c9e83610bf5565b946020939093013593505050565b60008060208385031215610cbe578182fd5b823567ffffffffffffffff80821115610cd5578384fd5b818501915085601f830112610ce8578384fd5b813581811115610cf6578485fd5b866020604083028501011115610d0a578485fd5b60209290920196919550909350505050565b600060208284031215610d2d578081fd5b81518015158114610c7c578182fd5b600060408284031215610d4d578081fd5b6040516040810181811067ffffffffffffffff82111715610d95577f4e487b710000000000000000000000000000000000000000000000000000000083526041600452602483fd5b604052610da183610bf5565b8152602083013560208201528091505092915050565b600060208284031215610dc8578081fd5b5035919050565b600060208284031215610de0578081fd5b5051919050565b600080600080600060808688031215610dfe578081fd5b85359450610e0e60208701610bf5565b935060408601359250606086013567ffffffffffffffff811115610e30578182fd5b610e3c88828901610c19565b969995985093965092949392505050565b60008060008060608587031215610e62578384fd5b8435935060208501359250604085013567ffffffffffffffff811115610e86578283fd5b610e9287828801610c19565b95989497509550505050565b918252602082015260400190565b92835260609190911b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020830152603482015260540190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b60208082526024908201527f426f626141697264726f703a20436c61696d20616c726561647920696e69746960408201527f6174656400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601d908201527f426f626141697264726f703a205472616e73666572206661696c65642e000000604082015260600190565b6020808252601b908201527f426f626141697264726f703a20496e76616c69642070726f6f662e0000000000604082015260600190565b6020808252818101527f426f626141697264726f703a20436c61696d206e6f7420696e69746961746564604082015260600190565b6020808252602b908201527f426f626141697264726f703a20636f727265637420616d6f756e74204f4d472060408201527f6e6f742062726964676564000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f426f626141697264726f703a20436c61696d20706572696f64206e6f7420656c60408201527f6170736564000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601d908201527f426f626141697264726f703a205769746864726177204661696c65642e000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f426f626141697264726f703a2044726f7020616c726561647920636c61696d6560408201527f642e000000000000000000000000000000000000000000000000000000000000606082015260800190565b92835273ffffffffffffffffffffffffffffffffffffffff919091166020830152604082015260600190565b6000821982111561126157611261611304565b500190565b60008261127557611275611333565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156112b2576112b2611304565b500290565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156112e9576112e9611304565b5060010190565b6000826112ff576112ff611333565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea164736f6c6343000800000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80639e34070f1161008c578063c025fa8e11610066578063c025fa8e146101a0578063c15cf3c0146101b3578063f2fde38b146101bb578063fc0c546a146101ce576100df565b80639e34070f1461015a578063a69b0b991461017a578063bbce08411461018d576100df565b806368bf9a38116100bd57806368bf9a381461012a578063715018a61461013d5780638da5cb5b14610145576100df565b8063155dd5ee146100e45780632e7ba6ef146100f95780632eb4a7ab1461010c575b600080fd5b6100f76100f2366004610db7565b6101d6565b005b6100f7610107366004610de7565b610338565b610114610593565b6040516101219190610f39565b60405180910390f35b610114610138366004610c62565b610599565b6100f76105ab565b61014d610610565b6040516101219190610ee7565b61016d610168366004610db7565b61062c565b6040516101219190610f2e565b6100f7610188366004610c83565b61066f565b6100f761019b366004610cac565b6106f1565b6100f76101ae366004610e4d565b6107eb565b61014d61099a565b6100f76101c9366004610c62565b6109b6565b61014d610a4e565b6101de610a6a565b73ffffffffffffffffffffffffffffffffffffffff166101fc610610565b73ffffffffffffffffffffffffffffffffffffffff16146102385760405162461bcd60e51b815260040161022f90611190565b60405180910390fd5b6001546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906102909033908590600401610f08565b602060405180830381600087803b1580156102aa57600080fd5b505af11580156102be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e29190610d1c565b6102fe5760405162461bcd60e51b815260040161022f90611159565b7fa20809e697380eaea0fd13bf4d14b00e2ef29559ef361501189d3be2e9b0ec858160405161032d9190610f39565b60405180910390a150565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020526040902054849061037c5760405162461bcd60e51b815260040161022f9061106a565b6103858661062c565b156103a25760405162461bcd60e51b815260040161022f906111c5565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600560205260409020546103d59062278d0061124e565b4210156103f45760405162461bcd60e51b815260040161022f906110fc565b600086868660405160200161040b93929190610eac565b604051602081830303815290604052805190602001209050610464848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506002549150849050610a6e565b6104805760405162461bcd60e51b815260040161022f90611033565b61048987610b42565b6001546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906104e19089908990600401610f08565b602060405180830381600087803b1580156104fb57600080fd5b505af115801561050f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105339190610d1c565b61054f5760405162461bcd60e51b815260040161022f90610ffc565b7f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed02687878760405161058293929190611222565b60405180910390a150505050505050565b60025481565b60056020526000908152604090205481565b6105b3610a6a565b73ffffffffffffffffffffffffffffffffffffffff166105d1610610565b73ffffffffffffffffffffffffffffffffffffffff16146106045760405162461bcd60e51b815260040161022f90611190565b61060e6000610b80565b565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60008061063b61010084611266565b9050600061064b610100856112f0565b60009283526004602052604090922054600190921b9182169091149150505b919050565b610677610a6a565b73ffffffffffffffffffffffffffffffffffffffff16610695610610565b73ffffffffffffffffffffffffffffffffffffffff16146106c85760405162461bcd60e51b815260040161022f90611190565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260056020526040902055565b6106f9610a6a565b73ffffffffffffffffffffffffffffffffffffffff16610717610610565b73ffffffffffffffffffffffffffffffffffffffff161461074a5760405162461bcd60e51b815260040161022f90611190565b60005b818110156107e6576000838383818110610790577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050604002018036038101906107a69190610d3c565b602080820151915173ffffffffffffffffffffffffffffffffffffffff1660009081526005909152604090205550806107de816112b7565b91505061074d565b505050565b8260646107f982605f61127a565b6108039190611266565b6003546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190610859903390600401610ee7565b60206040518083038186803b15801561087157600080fd5b505afa158015610885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a99190610dcf565b10156108c75760405162461bcd60e51b815260040161022f9061109f565b33600090815260056020526040902054156108f45760405162461bcd60e51b815260040161022f90610f42565b600085338660405160200161090b93929190610eac565b604051602081830303815290604052805190602001209050610964848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506002549150849050610a6e565b6109805760405162461bcd60e51b815260040161022f90611033565b505033600090815260056020526040902042905550505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b6109be610a6a565b73ffffffffffffffffffffffffffffffffffffffff166109dc610610565b73ffffffffffffffffffffffffffffffffffffffff1614610a0f5760405162461bcd60e51b815260040161022f90611190565b73ffffffffffffffffffffffffffffffffffffffff8116610a425760405162461bcd60e51b815260040161022f90610f9f565b610a4b81610b80565b50565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b3390565b600081815b8551811015610b37576000868281518110610ab7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050808311610af8578281604051602001610adb929190610e9e565b604051602081830303815290604052805190602001209250610b24565b8083604051602001610b0b929190610e9e565b6040516020818303038152906040528051906020012092505b5080610b2f816112b7565b915050610a73565b509092149392505050565b6000610b5061010083611266565b90506000610b60610100846112f0565b6000928352600460205260409092208054600190931b9092179091555050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461066a57600080fd5b60008083601f840112610c2a578182fd5b50813567ffffffffffffffff811115610c41578182fd5b6020830191508360208083028501011115610c5b57600080fd5b9250929050565b600060208284031215610c73578081fd5b610c7c82610bf5565b9392505050565b60008060408385031215610c95578081fd5b610c9e83610bf5565b946020939093013593505050565b60008060208385031215610cbe578182fd5b823567ffffffffffffffff80821115610cd5578384fd5b818501915085601f830112610ce8578384fd5b813581811115610cf6578485fd5b866020604083028501011115610d0a578485fd5b60209290920196919550909350505050565b600060208284031215610d2d578081fd5b81518015158114610c7c578182fd5b600060408284031215610d4d578081fd5b6040516040810181811067ffffffffffffffff82111715610d95577f4e487b710000000000000000000000000000000000000000000000000000000083526041600452602483fd5b604052610da183610bf5565b8152602083013560208201528091505092915050565b600060208284031215610dc8578081fd5b5035919050565b600060208284031215610de0578081fd5b5051919050565b600080600080600060808688031215610dfe578081fd5b85359450610e0e60208701610bf5565b935060408601359250606086013567ffffffffffffffff811115610e30578182fd5b610e3c88828901610c19565b969995985093965092949392505050565b60008060008060608587031215610e62578384fd5b8435935060208501359250604085013567ffffffffffffffff811115610e86578283fd5b610e9287828801610c19565b95989497509550505050565b918252602082015260400190565b92835260609190911b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020830152603482015260540190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b60208082526024908201527f426f626141697264726f703a20436c61696d20616c726561647920696e69746960408201527f6174656400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601d908201527f426f626141697264726f703a205472616e73666572206661696c65642e000000604082015260600190565b6020808252601b908201527f426f626141697264726f703a20496e76616c69642070726f6f662e0000000000604082015260600190565b6020808252818101527f426f626141697264726f703a20436c61696d206e6f7420696e69746961746564604082015260600190565b6020808252602b908201527f426f626141697264726f703a20636f727265637420616d6f756e74204f4d472060408201527f6e6f742062726964676564000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f426f626141697264726f703a20436c61696d20706572696f64206e6f7420656c60408201527f6170736564000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601d908201527f426f626141697264726f703a205769746864726177204661696c65642e000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f426f626141697264726f703a2044726f7020616c726561647920636c61696d6560408201527f642e000000000000000000000000000000000000000000000000000000000000606082015260800190565b92835273ffffffffffffffffffffffffffffffffffffffff919091166020830152604082015260600190565b6000821982111561126157611261611304565b500190565b60008261127557611275611333565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156112b2576112b2611304565b500290565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156112e9576112e9611304565b5060010190565b6000826112ff576112ff611333565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea164736f6c6343000800000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/boba/gateway/src/deployment/contracts/Boba_GasPriceOracle.json b/packages/boba/gateway/src/deployment/contracts/Boba_GasPriceOracle.json deleted file mode 100644 index 5602be9721..0000000000 --- a/packages/boba/gateway/src/deployment/contracts/Boba_GasPriceOracle.json +++ /dev/null @@ -1,610 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Boba_GasPriceOracle", - "sourceName": "contracts/L2/predeploys/Boba_GasPriceOracle.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "SwapBOBAForETHMetaTransaction", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "TransferOwnership", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "UpdateGasPriceOracleAddress", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "UpdateMaxPriceRatio", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "UpdateMetaTransactionFee", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "UpdateMinPriceRatio", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "UpdatePriceRatio", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "UpdateReceivedETHAmount", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "UseBobaAsFeeToken", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "UseETHAsFeeToken", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "WithdrawBOBA", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "WithdrawETH", - "type": "event" - }, - { - "inputs": [], - "name": "MIN_WITHDRAWAL_AMOUNT", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "bobaFeeTokenUsers", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "feeWallet", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "gasPriceOracleAddress", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getBOBAForSwap", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_txData", - "type": "bytes" - } - ], - "name": "getL1BobaFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address payable", - "name": "_feeWallet", - "type": "address" - }, - { - "internalType": "address", - "name": "_l2BobaAddress", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "l2BobaAddress", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "marketPriceRatio", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "maxPriceRatio", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "metaTransactionFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "minPriceRatio", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "priceRatio", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "receivedETHAmount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenOwner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "name": "swapBOBAForETHMetaTransaction", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_gasPriceOracleAddress", - "type": "address" - } - ], - "name": "updateGasPriceOracleAddress", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_maxPriceRatio", - "type": "uint256" - } - ], - "name": "updateMaxPriceRatio", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_metaTransactionFee", - "type": "uint256" - } - ], - "name": "updateMetaTransactionFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_minPriceRatio", - "type": "uint256" - } - ], - "name": "updateMinPriceRatio", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_priceRatio", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_marketPriceRatio", - "type": "uint256" - } - ], - "name": "updatePriceRatio", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_receivedETHAmount", - "type": "uint256" - } - ], - "name": "updateReceivedETHAmount", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "useBobaAsFeeToken", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "useETHAsFeeToken", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "withdrawBOBA", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "withdrawETH", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ], - "bytecode": "0x60806040526113886003556101f4600455600680546001600160a01b03191673420000000000000000000000000000000000000f1790556729a2241af62c00006008556611c37937e0800060095534801561005957600080fd5b50611da5806100696000396000f3fe6080604052600436106101af5760003560e01c806389df963d116100ec578063d2e1fb221161008a578063e086e5ec11610064578063e086e5ec1461047b578063e3aea9ba14610490578063f25f4b56146104b0578063f2fde38b146104d057600080fd5b8063d2e1fb2214610432578063d3e5792b14610448578063d86732ef1461046557600080fd5b8063b54016dc116100c6578063b54016dc146103bc578063bc9bd6ee146103dc578063c8a05413146103fc578063cd0514ad1461041c57600080fd5b806389df963d146103695780638da5cb5b1461037e5780638fcfc8131461039c57600080fd5b806334fe1b16116101595780635b9da5c6116101335780635b9da5c6146102d35780636805491b146102f35780637728195c14610333578063872ea4991461035357600080fd5b806334fe1b1614610289578063438ac96c1461029e578063485cc955146102b357600080fd5b80631b6771991161018a5780631b6771991461021c57806323ec63201461023157806324b20eda1461025157600080fd5b80625c5fb2146101bb5780630aa2f420146101dd57806315a0c1ac1461020657600080fd5b366101b657005b600080fd5b3480156101c757600080fd5b506101db6101d63660046119d8565b6104f0565b005b3480156101e957600080fd5b506101f360055481565b6040519081526020015b60405180910390f35b34801561021257600080fd5b506101f3600a5481565b34801561022857600080fd5b506101db6105c7565b34801561023d57600080fd5b506101f361024c366004611a20565b6106da565b34801561025d57600080fd5b50600254610271906001600160a01b031681565b6040516001600160a01b0390911681526020016101fd565b34801561029557600080fd5b506101db61078b565b3480156102aa57600080fd5b506101f361092d565b3480156102bf57600080fd5b506101db6102ce366004611b07565b610957565b3480156102df57600080fd5b506101db6102ee3660046119d8565b610a70565b3480156102ff57600080fd5b5061032361030e366004611b40565b60076020526000908152604090205460ff1681565b60405190151581526020016101fd565b34801561033f57600080fd5b50600654610271906001600160a01b031681565b34801561035f57600080fd5b506101f360085481565b34801561037557600080fd5b506101db610b27565b34801561038a57600080fd5b506000546001600160a01b0316610271565b3480156103a857600080fd5b506101db6103b7366004611b40565b610dd0565b3480156103c857600080fd5b506101db6103d7366004611b5d565b610f12565b3480156103e857600080fd5b506101db6103f7366004611bd4565b6111d4565b34801561040857600080fd5b506101db6104173660046119d8565b6112d2565b34801561042857600080fd5b506101f360095481565b34801561043e57600080fd5b506101f360045481565b34801561045457600080fd5b506101f3680821ab0d441498000081565b34801561047157600080fd5b506101f360035481565b34801561048757600080fd5b506101db61137f565b34801561049c57600080fd5b506101db6104ab3660046119d8565b6114d2565b3480156104bc57600080fd5b50600154610271906001600160a01b031681565b3480156104dc57600080fd5b506101db6104eb366004611b40565b611571565b6000546001600160a01b0316331461054f5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064015b60405180910390fd5b60035481111580156105615750600081115b61056a57600080fd5b60048190557f680f379280fc8680df45c979a924c0084a250758604482cb01dadedbaa1c09c96105a26000546001600160a01b031690565b604080516001600160a01b03909216825260208201849052015b60405180910390a150565b333b156106165760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f4100000000000000000000000000000000006044820152606401610546565b66071afd498d00003331101561066e5760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610546565b3360008181526007602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f764389830e6a6b84f4ea3f2551a4c5afbb6dff806f2d8f571f6913c6c4b62a4091015b60405180910390a1565b6006546005546040517f49948e0e0000000000000000000000000000000000000000000000000000000081526000926001600160a01b0316919082906349948e0e9061072a908790600401611c6c565b60206040518083038186803b15801561074257600080fd5b505afa158015610756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077a9190611c7f565b6107849190611cc7565b9392505050565b333b156107da5760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f4100000000000000000000000000000000006044820152606401610546565b6002546040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526729a2241af62c0000916001600160a01b0316906370a082319060240160206040518083038186803b15801561083e57600080fd5b505afa158015610852573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108769190611c7f565b10156108c45760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e7420426f62612062616c616e6365000000000000006044820152606401610546565b3360008181526007602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590519182527fd1787ba09c5383b33cf88983fbbf2e6ae348746a3a906e1a1bb67c729661a4ac91016106d0565b600061095260085461094c600a546009546116b990919063ffffffff16565b906116c5565b905090565b6001546001600160a01b0316156109b05760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420686173206265656e20696e697469616c697a65640000006044820152606401610546565b6001600160a01b038216158015906109d057506001600160a01b03811615155b6109d957600080fd5b600180546001600160a01b039384167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155600280549290931691811691909117909155600080548216331790556006805490911673420000000000000000000000000000000000000f1790556729a2241af62c00006008556113886003556107d060058190556101f4600455600a55565b6000546001600160a01b03163314610aca5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610546565b66038d7ea4c6800081118015610ae65750662386f26fc1000081105b610aef57600080fd5b60098190557fdcb9e069a0d16a974c9c0f4a88e2c9b79df5c45d9721c26461043d51c44682076105a26000546001600160a01b031690565b6002546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152680821ab0d4414980000916001600160a01b0316906370a082319060240160206040518083038186803b158015610b8c57600080fd5b505afa158015610ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc49190611c7f565b1015610c5e5760405162461bcd60e51b815260206004820152605560248201527f426f62615f47617350726963654f7261636c653a207769746864726177616c2060448201527f616d6f756e74206d7573742062652067726561746572207468616e206d696e6960648201527f6d756d207769746864726177616c20616d6f756e740000000000000000000000608482015260a401610546565b6002546001546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527342000000000000000000000000000000000000109263a3a79548926001600160a01b039182169291169082906370a082319060240160206040518083038186803b158015610cde57600080fd5b505afa158015610cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d169190611c7f565b6000604051806020016040528060008152506040518663ffffffff1660e01b8152600401610d48959493929190611d04565b600060405180830381600087803b158015610d6257600080fd5b505af1158015610d76573d6000803e3d6000fd5b505050507f2c69c3957d9ca9782726f647b7a3592dd381f4370288551f5ed43fd3cc5b7753610dad6000546001600160a01b031690565b600154604080516001600160a01b039384168152929091166020830152016106d0565b6000546001600160a01b03163314610e2a5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610546565b803b610e785760405162461bcd60e51b815260206004820152600e60248201527f4163636f756e7420697320454f410000000000000000000000000000000000006044820152606401610546565b6001600160a01b038116610e8b57600080fd5b600680546001600160a01b0383167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790557f226bf99888a1e70d41ce744b11ce2acd4d1d1b8cf4ad17a0e72e67acff4bf5a7610ef36000546001600160a01b031690565b604080516001600160a01b0392831681529184166020830152016105bc565b863b15610f615760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f4100000000000000000000000000000000006044820152606401610546565b6001600160a01b0386163014610fb95760405162461bcd60e51b815260206004820152601c60248201527f5370656e646572206973206e6f74207468697320636f6e7472616374000000006044820152606401610546565b6000610fd860085461094c600a546009546116b990919063ffffffff16565b90508086101561102a5760405162461bcd60e51b815260206004820152601360248201527f56616c7565206973206e6f7420656e6f756768000000000000000000000000006044820152606401610546565b6002546040517fd505accf0000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301528981166024830152604482018990526064820188905260ff8716608483015260a4820186905260c4820185905290911690819063d505accf9060e401600060405180830381600087803b1580156110b957600080fd5b505af11580156110cd573d6000803e3d6000fd5b50506002546110ea92506001600160a01b031690508a30856116d1565b6009546040516000916001600160a01b038c16918381818185875af1925050503d8060008114611136576040519150601f19603f3d011682016040523d82523d6000602084013e61113b565b606091505b505090508061118c5760405162461bcd60e51b815260206004820152601260248201527f4661696c656420746f2073656e642045544800000000000000000000000000006044820152606401610546565b6040516001600160a01b038b1681527fb92b4b358dfa6e521f7f80a5d0522cf04a2082482701a0d78ff2bb615df646be9060200160405180910390a150505050505050505050565b6000546001600160a01b0316331461122e5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610546565b600354821115801561124257506004548210155b61124b57600080fd5b600354811115801561125f57506004548110155b61126857600080fd5b6005829055600a8190557f23632bbb735dece542dac9735a2ba4253234eb119ce45cdf9968cbbe12aa67906112a56000546001600160a01b031690565b604080516001600160a01b0390921682526020820185905281018390526060015b60405180910390a15050565b6000546001600160a01b0316331461132c5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610546565b600454811015801561133e5750600081115b61134757600080fd5b60038190557f7a28f69b71e51c4a30f620a2cfe4ce5aad2cd3fe5cc9647e400e252b65033d416105a26000546001600160a01b031690565b6000546001600160a01b031633146113d95760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610546565b6001546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611426576040519150601f19603f3d011682016040523d82523d6000602084013e61142b565b606091505b505090508061147c5760405162461bcd60e51b815260206004820181905260248201527f4661696c656420746f2073656e642045544820746f206665652077616c6c65746044820152606401610546565b7f6de63bb986f2779478e384365c03cc2e62f06b453856acca87d5a519ce0266496114af6000546001600160a01b031690565b600154604080516001600160a01b039384168152929091166020830152016105bc565b6000546001600160a01b0316331461152c5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610546565b6000811161153957600080fd5b60088190557f1071f61d642716391065a6f38aac12cdc6a436ca6a6622a18ae0530495738afc6105a26000546001600160a01b031690565b6000546001600160a01b031633146115cb5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610546565b6001600160a01b0381166116475760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610546565b600080546001600160a01b038381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c91016112c6565b60006107848284611cc7565b60006107848284611d42565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261175990859061175f565b50505050565b60006117b4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166118499092919063ffffffff16565b80519091501561184457808060200190518101906117d29190611d5a565b6118445760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610546565b505050565b60606118588484600085611860565b949350505050565b6060824710156118d85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610546565b843b6119265760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610546565b600080866001600160a01b031685876040516119429190611d7c565b60006040518083038185875af1925050503d806000811461197f576040519150601f19603f3d011682016040523d82523d6000602084013e611984565b606091505b509150915061199482828661199f565b979650505050505050565b606083156119ae575081610784565b8251156119be5782518084602001fd5b8160405162461bcd60e51b81526004016105469190611c6c565b6000602082840312156119ea57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060208284031215611a3257600080fd5b813567ffffffffffffffff80821115611a4a57600080fd5b818401915084601f830112611a5e57600080fd5b813581811115611a7057611a706119f1565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611ab657611ab66119f1565b81604052828152876020848701011115611acf57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6001600160a01b0381168114611b0457600080fd5b50565b60008060408385031215611b1a57600080fd5b8235611b2581611aef565b91506020830135611b3581611aef565b809150509250929050565b600060208284031215611b5257600080fd5b813561078481611aef565b600080600080600080600060e0888a031215611b7857600080fd5b8735611b8381611aef565b96506020880135611b9381611aef565b95506040880135945060608801359350608088013560ff81168114611bb757600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611be757600080fd5b50508035926020909101359150565b60005b83811015611c11578181015183820152602001611bf9565b838111156117595750506000910152565b60008151808452611c3a816020860160208601611bf6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006107846020830184611c22565b600060208284031215611c9157600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611cff57611cff611c98565b500290565b60006001600160a01b03808816835280871660208401525084604083015263ffffffff8416606083015260a0608083015261199460a0830184611c22565b60008219821115611d5557611d55611c98565b500190565b600060208284031215611d6c57600080fd5b8151801515811461078457600080fd5b60008251611d8e818460208701611bf6565b919091019291505056fea164736f6c6343000809000a", - "deployedBytecode": "0x6080604052600436106101af5760003560e01c806389df963d116100ec578063d2e1fb221161008a578063e086e5ec11610064578063e086e5ec1461047b578063e3aea9ba14610490578063f25f4b56146104b0578063f2fde38b146104d057600080fd5b8063d2e1fb2214610432578063d3e5792b14610448578063d86732ef1461046557600080fd5b8063b54016dc116100c6578063b54016dc146103bc578063bc9bd6ee146103dc578063c8a05413146103fc578063cd0514ad1461041c57600080fd5b806389df963d146103695780638da5cb5b1461037e5780638fcfc8131461039c57600080fd5b806334fe1b16116101595780635b9da5c6116101335780635b9da5c6146102d35780636805491b146102f35780637728195c14610333578063872ea4991461035357600080fd5b806334fe1b1614610289578063438ac96c1461029e578063485cc955146102b357600080fd5b80631b6771991161018a5780631b6771991461021c57806323ec63201461023157806324b20eda1461025157600080fd5b80625c5fb2146101bb5780630aa2f420146101dd57806315a0c1ac1461020657600080fd5b366101b657005b600080fd5b3480156101c757600080fd5b506101db6101d63660046119d8565b6104f0565b005b3480156101e957600080fd5b506101f360055481565b6040519081526020015b60405180910390f35b34801561021257600080fd5b506101f3600a5481565b34801561022857600080fd5b506101db6105c7565b34801561023d57600080fd5b506101f361024c366004611a20565b6106da565b34801561025d57600080fd5b50600254610271906001600160a01b031681565b6040516001600160a01b0390911681526020016101fd565b34801561029557600080fd5b506101db61078b565b3480156102aa57600080fd5b506101f361092d565b3480156102bf57600080fd5b506101db6102ce366004611b07565b610957565b3480156102df57600080fd5b506101db6102ee3660046119d8565b610a70565b3480156102ff57600080fd5b5061032361030e366004611b40565b60076020526000908152604090205460ff1681565b60405190151581526020016101fd565b34801561033f57600080fd5b50600654610271906001600160a01b031681565b34801561035f57600080fd5b506101f360085481565b34801561037557600080fd5b506101db610b27565b34801561038a57600080fd5b506000546001600160a01b0316610271565b3480156103a857600080fd5b506101db6103b7366004611b40565b610dd0565b3480156103c857600080fd5b506101db6103d7366004611b5d565b610f12565b3480156103e857600080fd5b506101db6103f7366004611bd4565b6111d4565b34801561040857600080fd5b506101db6104173660046119d8565b6112d2565b34801561042857600080fd5b506101f360095481565b34801561043e57600080fd5b506101f360045481565b34801561045457600080fd5b506101f3680821ab0d441498000081565b34801561047157600080fd5b506101f360035481565b34801561048757600080fd5b506101db61137f565b34801561049c57600080fd5b506101db6104ab3660046119d8565b6114d2565b3480156104bc57600080fd5b50600154610271906001600160a01b031681565b3480156104dc57600080fd5b506101db6104eb366004611b40565b611571565b6000546001600160a01b0316331461054f5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064015b60405180910390fd5b60035481111580156105615750600081115b61056a57600080fd5b60048190557f680f379280fc8680df45c979a924c0084a250758604482cb01dadedbaa1c09c96105a26000546001600160a01b031690565b604080516001600160a01b03909216825260208201849052015b60405180910390a150565b333b156106165760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f4100000000000000000000000000000000006044820152606401610546565b66071afd498d00003331101561066e5760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610546565b3360008181526007602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f764389830e6a6b84f4ea3f2551a4c5afbb6dff806f2d8f571f6913c6c4b62a4091015b60405180910390a1565b6006546005546040517f49948e0e0000000000000000000000000000000000000000000000000000000081526000926001600160a01b0316919082906349948e0e9061072a908790600401611c6c565b60206040518083038186803b15801561074257600080fd5b505afa158015610756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077a9190611c7f565b6107849190611cc7565b9392505050565b333b156107da5760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f4100000000000000000000000000000000006044820152606401610546565b6002546040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526729a2241af62c0000916001600160a01b0316906370a082319060240160206040518083038186803b15801561083e57600080fd5b505afa158015610852573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108769190611c7f565b10156108c45760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e7420426f62612062616c616e6365000000000000006044820152606401610546565b3360008181526007602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590519182527fd1787ba09c5383b33cf88983fbbf2e6ae348746a3a906e1a1bb67c729661a4ac91016106d0565b600061095260085461094c600a546009546116b990919063ffffffff16565b906116c5565b905090565b6001546001600160a01b0316156109b05760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420686173206265656e20696e697469616c697a65640000006044820152606401610546565b6001600160a01b038216158015906109d057506001600160a01b03811615155b6109d957600080fd5b600180546001600160a01b039384167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155600280549290931691811691909117909155600080548216331790556006805490911673420000000000000000000000000000000000000f1790556729a2241af62c00006008556113886003556107d060058190556101f4600455600a55565b6000546001600160a01b03163314610aca5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610546565b66038d7ea4c6800081118015610ae65750662386f26fc1000081105b610aef57600080fd5b60098190557fdcb9e069a0d16a974c9c0f4a88e2c9b79df5c45d9721c26461043d51c44682076105a26000546001600160a01b031690565b6002546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152680821ab0d4414980000916001600160a01b0316906370a082319060240160206040518083038186803b158015610b8c57600080fd5b505afa158015610ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc49190611c7f565b1015610c5e5760405162461bcd60e51b815260206004820152605560248201527f426f62615f47617350726963654f7261636c653a207769746864726177616c2060448201527f616d6f756e74206d7573742062652067726561746572207468616e206d696e6960648201527f6d756d207769746864726177616c20616d6f756e740000000000000000000000608482015260a401610546565b6002546001546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527342000000000000000000000000000000000000109263a3a79548926001600160a01b039182169291169082906370a082319060240160206040518083038186803b158015610cde57600080fd5b505afa158015610cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d169190611c7f565b6000604051806020016040528060008152506040518663ffffffff1660e01b8152600401610d48959493929190611d04565b600060405180830381600087803b158015610d6257600080fd5b505af1158015610d76573d6000803e3d6000fd5b505050507f2c69c3957d9ca9782726f647b7a3592dd381f4370288551f5ed43fd3cc5b7753610dad6000546001600160a01b031690565b600154604080516001600160a01b039384168152929091166020830152016106d0565b6000546001600160a01b03163314610e2a5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610546565b803b610e785760405162461bcd60e51b815260206004820152600e60248201527f4163636f756e7420697320454f410000000000000000000000000000000000006044820152606401610546565b6001600160a01b038116610e8b57600080fd5b600680546001600160a01b0383167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790557f226bf99888a1e70d41ce744b11ce2acd4d1d1b8cf4ad17a0e72e67acff4bf5a7610ef36000546001600160a01b031690565b604080516001600160a01b0392831681529184166020830152016105bc565b863b15610f615760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f4100000000000000000000000000000000006044820152606401610546565b6001600160a01b0386163014610fb95760405162461bcd60e51b815260206004820152601c60248201527f5370656e646572206973206e6f74207468697320636f6e7472616374000000006044820152606401610546565b6000610fd860085461094c600a546009546116b990919063ffffffff16565b90508086101561102a5760405162461bcd60e51b815260206004820152601360248201527f56616c7565206973206e6f7420656e6f756768000000000000000000000000006044820152606401610546565b6002546040517fd505accf0000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301528981166024830152604482018990526064820188905260ff8716608483015260a4820186905260c4820185905290911690819063d505accf9060e401600060405180830381600087803b1580156110b957600080fd5b505af11580156110cd573d6000803e3d6000fd5b50506002546110ea92506001600160a01b031690508a30856116d1565b6009546040516000916001600160a01b038c16918381818185875af1925050503d8060008114611136576040519150601f19603f3d011682016040523d82523d6000602084013e61113b565b606091505b505090508061118c5760405162461bcd60e51b815260206004820152601260248201527f4661696c656420746f2073656e642045544800000000000000000000000000006044820152606401610546565b6040516001600160a01b038b1681527fb92b4b358dfa6e521f7f80a5d0522cf04a2082482701a0d78ff2bb615df646be9060200160405180910390a150505050505050505050565b6000546001600160a01b0316331461122e5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610546565b600354821115801561124257506004548210155b61124b57600080fd5b600354811115801561125f57506004548110155b61126857600080fd5b6005829055600a8190557f23632bbb735dece542dac9735a2ba4253234eb119ce45cdf9968cbbe12aa67906112a56000546001600160a01b031690565b604080516001600160a01b0390921682526020820185905281018390526060015b60405180910390a15050565b6000546001600160a01b0316331461132c5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610546565b600454811015801561133e5750600081115b61134757600080fd5b60038190557f7a28f69b71e51c4a30f620a2cfe4ce5aad2cd3fe5cc9647e400e252b65033d416105a26000546001600160a01b031690565b6000546001600160a01b031633146113d95760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610546565b6001546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611426576040519150601f19603f3d011682016040523d82523d6000602084013e61142b565b606091505b505090508061147c5760405162461bcd60e51b815260206004820181905260248201527f4661696c656420746f2073656e642045544820746f206665652077616c6c65746044820152606401610546565b7f6de63bb986f2779478e384365c03cc2e62f06b453856acca87d5a519ce0266496114af6000546001600160a01b031690565b600154604080516001600160a01b039384168152929091166020830152016105bc565b6000546001600160a01b0316331461152c5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610546565b6000811161153957600080fd5b60088190557f1071f61d642716391065a6f38aac12cdc6a436ca6a6622a18ae0530495738afc6105a26000546001600160a01b031690565b6000546001600160a01b031633146115cb5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610546565b6001600160a01b0381166116475760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610546565b600080546001600160a01b038381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c91016112c6565b60006107848284611cc7565b60006107848284611d42565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261175990859061175f565b50505050565b60006117b4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166118499092919063ffffffff16565b80519091501561184457808060200190518101906117d29190611d5a565b6118445760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610546565b505050565b60606118588484600085611860565b949350505050565b6060824710156118d85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610546565b843b6119265760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610546565b600080866001600160a01b031685876040516119429190611d7c565b60006040518083038185875af1925050503d806000811461197f576040519150601f19603f3d011682016040523d82523d6000602084013e611984565b606091505b509150915061199482828661199f565b979650505050505050565b606083156119ae575081610784565b8251156119be5782518084602001fd5b8160405162461bcd60e51b81526004016105469190611c6c565b6000602082840312156119ea57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060208284031215611a3257600080fd5b813567ffffffffffffffff80821115611a4a57600080fd5b818401915084601f830112611a5e57600080fd5b813581811115611a7057611a706119f1565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611ab657611ab66119f1565b81604052828152876020848701011115611acf57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6001600160a01b0381168114611b0457600080fd5b50565b60008060408385031215611b1a57600080fd5b8235611b2581611aef565b91506020830135611b3581611aef565b809150509250929050565b600060208284031215611b5257600080fd5b813561078481611aef565b600080600080600080600060e0888a031215611b7857600080fd5b8735611b8381611aef565b96506020880135611b9381611aef565b95506040880135945060608801359350608088013560ff81168114611bb757600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611be757600080fd5b50508035926020909101359150565b60005b83811015611c11578181015183820152602001611bf9565b838111156117595750506000910152565b60008151808452611c3a816020860160208601611bf6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006107846020830184611c22565b600060208284031215611c9157600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611cff57611cff611c98565b500290565b60006001600160a01b03808816835280871660208401525084604083015263ffffffff8416606083015260a0608083015261199460a0830184611c22565b60008219821115611d5557611d55611c98565b500190565b600060208284031215611d6c57600080fd5b8151801515811461078457600080fd5b60008251611d8e818460208701611bf6565b919091019291505056fea164736f6c6343000809000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/boba/gateway/src/deployment/contracts/Gauge.json b/packages/boba/gateway/src/deployment/contracts/Gauge.json deleted file mode 100644 index 0d085aa35d..0000000000 --- a/packages/boba/gateway/src/deployment/contracts/Gauge.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Gauge", - "sourceName": "contracts/Basic-gauges.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_pool", - "type": "address" - }, - { - "internalType": "address", - "name": "__ve", - "type": "address" - }, - { - "internalType": "address", - "name": "_voter", - "type": "address" - }, - { - "internalType": "address", - "name": "_operator", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "reward", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "ClaimRewards", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "reward", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "NotifyReward", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "inputs": [], - "name": "_ve", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "address", - "name": "token", - "type": "address" - } - ], - "name": "getReward", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "notifyRewardAmount", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pool", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "voter", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x60e06040526001805534801561001457600080fd5b50604051610c5b380380610c5b833981016040819052610033916101a3565b61003c33610067565b6001600160a01b0380851660805283811660a052821660c05261005e816100b7565b505050506101f7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b031633146101165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811661017b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161010d565b61018481610067565b50565b80516001600160a01b038116811461019e57600080fd5b919050565b600080600080608085870312156101b957600080fd5b6101c285610187565b93506101d060208601610187565b92506101de60408601610187565b91506101ec60608601610187565b905092959194509250565b60805160a05160c051610a3061022b6000396000818160e20152610253015260006101440152600060920152610a306000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146101215780638dd598fb1461013f578063b66503cf14610166578063f2fde38b1461017957600080fd5b806316f0115b1461008d57806346c96aac146100dd5780636b09169514610104578063715018a614610119575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b61011761011236600461092e565b61018c565b005b6101176103dd565b60005473ffffffffffffffffffffffffffffffffffffffff166100b4565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b610117610174366004610961565b61046a565b61011761018736600461098b565b6104e9565b60005473ffffffffffffffffffffffffffffffffffffffff163314610212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60015460011461022157600080fd5b600180556040517f63453ae10000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906363453ae190602401600060405180830381600087803b1580156102ac57600080fd5b505af11580156102c0573d6000803e3d6000fd5b5050600260015550506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015610336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035a91906109ad565b9050801561036d5761036d828483610619565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9aa05b3d70a9e3e2f004f039648839560576334fb45c81f91b6db03ad9e2efc9836040516103cc91815260200190565b60405180910390a350506001805550565b60005473ffffffffffffffffffffffffffffffffffffffff16331461045e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610209565b6104686000610750565b565b60015460011461047957600080fd5b60026001558061048857600080fd5b610494823330846107c5565b60405181815273ffffffffffffffffffffffffffffffffffffffff83169033907ff70d5c697de7ea828df48e5c4573cb2194c659f1901f70110c52b066dcf508269060200160405180910390a3505060018055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461056a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610209565b73ffffffffffffffffffffffffffffffffffffffff811661060d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610209565b61061681610750565b50565b60008373ffffffffffffffffffffffffffffffffffffffff163b1161063d57600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916106d491906109c6565b6000604051808303816000865af19150503d8060008114610711576040519150601f19603f3d011682016040523d82523d6000602084013e610716565b606091505b50915091508180156107405750805115806107405750808060200190518101906107409190610a01565b61074957600080fd5b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008473ffffffffffffffffffffffffffffffffffffffff163b116107e957600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052915160009283929088169161088891906109c6565b6000604051808303816000865af19150503d80600081146108c5576040519150601f19603f3d011682016040523d82523d6000602084013e6108ca565b606091505b50915091508180156108f45750805115806108f45750808060200190518101906108f49190610a01565b6108fd57600080fd5b505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461092957600080fd5b919050565b6000806040838503121561094157600080fd5b61094a83610905565b915061095860208401610905565b90509250929050565b6000806040838503121561097457600080fd5b61097d83610905565b946020939093013593505050565b60006020828403121561099d57600080fd5b6109a682610905565b9392505050565b6000602082840312156109bf57600080fd5b5051919050565b6000825160005b818110156109e757602081860181015185830152016109cd565b818111156109f6576000828501525b509190910192915050565b600060208284031215610a1357600080fd5b815180151581146109a657600080fdfea164736f6c634300080b000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146101215780638dd598fb1461013f578063b66503cf14610166578063f2fde38b1461017957600080fd5b806316f0115b1461008d57806346c96aac146100dd5780636b09169514610104578063715018a614610119575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b61011761011236600461092e565b61018c565b005b6101176103dd565b60005473ffffffffffffffffffffffffffffffffffffffff166100b4565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b610117610174366004610961565b61046a565b61011761018736600461098b565b6104e9565b60005473ffffffffffffffffffffffffffffffffffffffff163314610212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60015460011461022157600080fd5b600180556040517f63453ae10000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906363453ae190602401600060405180830381600087803b1580156102ac57600080fd5b505af11580156102c0573d6000803e3d6000fd5b5050600260015550506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015610336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035a91906109ad565b9050801561036d5761036d828483610619565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9aa05b3d70a9e3e2f004f039648839560576334fb45c81f91b6db03ad9e2efc9836040516103cc91815260200190565b60405180910390a350506001805550565b60005473ffffffffffffffffffffffffffffffffffffffff16331461045e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610209565b6104686000610750565b565b60015460011461047957600080fd5b60026001558061048857600080fd5b610494823330846107c5565b60405181815273ffffffffffffffffffffffffffffffffffffffff83169033907ff70d5c697de7ea828df48e5c4573cb2194c659f1901f70110c52b066dcf508269060200160405180910390a3505060018055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461056a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610209565b73ffffffffffffffffffffffffffffffffffffffff811661060d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610209565b61061681610750565b50565b60008373ffffffffffffffffffffffffffffffffffffffff163b1161063d57600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916106d491906109c6565b6000604051808303816000865af19150503d8060008114610711576040519150601f19603f3d011682016040523d82523d6000602084013e610716565b606091505b50915091508180156107405750805115806107405750808060200190518101906107409190610a01565b61074957600080fd5b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008473ffffffffffffffffffffffffffffffffffffffff163b116107e957600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052915160009283929088169161088891906109c6565b6000604051808303816000865af19150503d80600081146108c5576040519150601f19603f3d011682016040523d82523d6000602084013e6108ca565b606091505b50915091508180156108f45750805115806108f45750808060200190518101906108f49190610a01565b6108fd57600080fd5b505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461092957600080fd5b919050565b6000806040838503121561094157600080fd5b61094a83610905565b915061095860208401610905565b90509250929050565b6000806040838503121561097457600080fd5b61097d83610905565b946020939093013593505050565b60006020828403121561099d57600080fd5b6109a682610905565b9392505050565b6000602082840312156109bf57600080fd5b5051919050565b6000825160005b818110156109e757602081860181015185830152016109cd565b818111156109f6576000828501525b509190910192915050565b600060208284031215610a1357600080fd5b815180151581146109a657600080fdfea164736f6c634300080b000a", - "linkReferences": {}, - "deployedLinkReferences": {} - } diff --git a/packages/boba/gateway/src/deployment/contracts/L1ERC20.json b/packages/boba/gateway/src/deployment/contracts/L1ERC20.json deleted file mode 100644 index e8c798780e..0000000000 --- a/packages/boba/gateway/src/deployment/contracts/L1ERC20.json +++ /dev/null @@ -1,302 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "L1ERC20", - "sourceName": "contracts/L1ERC20.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "_initialSupply", - "type": "uint256" - }, - { - "internalType": "string", - "name": "_tokenName", - "type": "string" - }, - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b506040516200163c3803806200163c833981810160405260608110156200003757600080fd5b8101908080519060200190929190805160405193929190846401000000008211156200006257600080fd5b838201915060208201858111156200007957600080fd5b82518660018202830111640100000000821117156200009757600080fd5b8083526020830192505050908051906020019080838360005b83811015620000cd578082015181840152602081019050620000b0565b50505050905090810190601f168015620000fb5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011f57600080fd5b838201915060208201858111156200013657600080fd5b82518660018202830111640100000000821117156200015457600080fd5b8083526020830192505050908051906020019080838360005b838110156200018a5780820151818401526020810190506200016d565b50505050905090810190601f168015620001b85780820380516001836020036101000a031916815260200191505b5060405250505081818160039080519060200190620001d992919062000498565b508060049080519060200190620001f292919062000498565b506012600560006101000a81548160ff021916908360ff16021790555050506200022333846200022c60201b60201c565b5050506200054e565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b620002e4600083836200040a60201b60201c565b62000300816002546200040f60201b620009a01790919060201c565b6002819055506200035e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200040f60201b620009a01790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b6000808284019050838110156200048e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620004d057600085556200051c565b82601f10620004eb57805160ff19168380011785556200051c565b828001600101855582156200051c579182015b828111156200051b578251825591602001919060010190620004fe565b5b5090506200052b91906200052f565b5090565b5b808211156200054a57600081600090555060010162000530565b5090565b6110de806200055e6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025857806370a08231146102bc57806395d89b4114610314578063a457c2d714610397578063a9059cbb146103fb578063dd62ed3e1461045f576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019557806323b872dd146101b3578063313ce56714610237575b600080fd5b6100b66104d7565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610579565b60405180821515815260200191505060405180910390f35b61019d610597565b6040518082815260200191505060405180910390f35b61021f600480360360608110156101c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105a1565b60405180821515815260200191505060405180910390f35b61023f61067a565b604051808260ff16815260200191505060405180910390f35b6102a46004803603604081101561026e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610691565b60405180821515815260200191505060405180910390f35b6102fe600480360360208110156102d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610744565b6040518082815260200191505060405180910390f35b61031c61078c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561035c578082015181840152602081019050610341565b50505050905090810190601f1680156103895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103e3600480360360408110156103ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061082e565b60405180821515815260200191505060405180910390f35b6104476004803603604081101561041157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108fb565b60405180821515815260200191505060405180910390f35b6104c16004803603604081101561047557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610919565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561056f5780601f106105445761010080835404028352916020019161056f565b820191906000526020600020905b81548152906001019060200180831161055257829003601f168201915b5050505050905090565b600061058d610586610a28565b8484610a30565b6001905092915050565b6000600254905090565b60006105ae848484610c27565b61066f846105ba610a28565b61066a8560405180606001604052806028815260200161101360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610620610a28565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee89092919063ffffffff16565b610a30565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600061073a61069e610a28565b8461073585600160006106af610a28565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109a090919063ffffffff16565b610a30565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108245780601f106107f957610100808354040283529160200191610824565b820191906000526020600020905b81548152906001019060200180831161080757829003601f168201915b5050505050905090565b60006108f161083b610a28565b846108ec856040518060600160405280602581526020016110846025913960016000610865610a28565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee89092919063ffffffff16565b610a30565b6001905092915050565b600061090f610908610a28565b8484610c27565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080828401905083811015610a1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ab6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110606024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fcb6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061103b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fa86023913960400191505060405180910390fd5b610d3e838383610fa2565b610da981604051806060016040528060268152602001610fed602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee89092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e3c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109a090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f5a578082015181840152602081019050610f3f565b50505050905090810190601f168015610f875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206bfb771f4d7713ecf38cf3b41339adc0b2121c05c4a8a4ff0d2599e72c1283c264736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025857806370a08231146102bc57806395d89b4114610314578063a457c2d714610397578063a9059cbb146103fb578063dd62ed3e1461045f576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019557806323b872dd146101b3578063313ce56714610237575b600080fd5b6100b66104d7565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610579565b60405180821515815260200191505060405180910390f35b61019d610597565b6040518082815260200191505060405180910390f35b61021f600480360360608110156101c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105a1565b60405180821515815260200191505060405180910390f35b61023f61067a565b604051808260ff16815260200191505060405180910390f35b6102a46004803603604081101561026e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610691565b60405180821515815260200191505060405180910390f35b6102fe600480360360208110156102d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610744565b6040518082815260200191505060405180910390f35b61031c61078c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561035c578082015181840152602081019050610341565b50505050905090810190601f1680156103895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103e3600480360360408110156103ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061082e565b60405180821515815260200191505060405180910390f35b6104476004803603604081101561041157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108fb565b60405180821515815260200191505060405180910390f35b6104c16004803603604081101561047557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610919565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561056f5780601f106105445761010080835404028352916020019161056f565b820191906000526020600020905b81548152906001019060200180831161055257829003601f168201915b5050505050905090565b600061058d610586610a28565b8484610a30565b6001905092915050565b6000600254905090565b60006105ae848484610c27565b61066f846105ba610a28565b61066a8560405180606001604052806028815260200161101360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610620610a28565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee89092919063ffffffff16565b610a30565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600061073a61069e610a28565b8461073585600160006106af610a28565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109a090919063ffffffff16565b610a30565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108245780601f106107f957610100808354040283529160200191610824565b820191906000526020600020905b81548152906001019060200180831161080757829003601f168201915b5050505050905090565b60006108f161083b610a28565b846108ec856040518060600160405280602581526020016110846025913960016000610865610a28565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee89092919063ffffffff16565b610a30565b6001905092915050565b600061090f610908610a28565b8484610c27565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080828401905083811015610a1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ab6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110606024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fcb6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061103b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fa86023913960400191505060405180910390fd5b610d3e838383610fa2565b610da981604051806060016040528060268152602001610fed602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee89092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e3c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109a090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f5a578082015181840152602081019050610f3f565b50505050905090810190601f168015610f875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206bfb771f4d7713ecf38cf3b41339adc0b2121c05c4a8a4ff0d2599e72c1283c264736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/boba/gateway/src/deployment/contracts/NFTMonsterV2.json b/packages/boba/gateway/src/deployment/contracts/NFTMonsterV2.json deleted file mode 100644 index 0a1e5d3fbe..0000000000 --- a/packages/boba/gateway/src/deployment/contracts/NFTMonsterV2.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "NFTMonsterV2", - "sourceName": "", - "abi": [{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"string","name":"name_","internalType":"string"},{"type":"string","name":"symbol_","internalType":"string"},{"type":"uint256","name":"maxNFTs_","internalType":"uint256"},{"type":"address[]","name":"creatorAddresses_","internalType":"address[]"},{"type":"address","name":"turingHelperAddress_","internalType":"address"}]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"approved","internalType":"address","indexed":true},{"type":"uint256","name":"tokenId","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"operator","internalType":"address","indexed":true},{"type":"bool","name":"approved","internalType":"bool","indexed":false}],"anonymous":false},{"type":"event","name":"MintedNFT","inputs":[{"type":"uint256","name":"id","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"type":"address","name":"account","internalType":"address","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"tokenId","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"type":"address","name":"account","internalType":"address","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"MAX_MINT_IN_PUBLIC","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"PRICE","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"ROYALTY_PERCENTAGE","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"amountMintedInPublicSale","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"approve","inputs":[{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"availableTokenCount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"owner","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bytes","name":"","internalType":"bytes"}],"name":"bridgeExtraData","inputs":[{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"burn","inputs":[{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"exists","inputs":[{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getApproved","inputs":[{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isApprovedForAll","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"operator","internalType":"address"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"mint","inputs":[{"type":"uint256","name":"_count","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"ownerOf","inputs":[{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"paused","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"price","inputs":[{"type":"uint256","name":"_count","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"projectOwners","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"recoverERC20","inputs":[{"type":"address","name":"tokenAddress","internalType":"address"},{"type":"uint256","name":"tokenAmount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"recoverERC721","inputs":[{"type":"address","name":"tokenAddress","internalType":"address"},{"type":"uint256","name":"tokenId_","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"receiver","internalType":"address"},{"type":"uint256","name":"royaltyAmount","internalType":"uint256"}],"name":"royaltyInfo","inputs":[{"type":"uint256","name":"_tokenId","internalType":"uint256"},{"type":"uint256","name":"_salePrice","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"safeTransferFrom","inputs":[{"type":"address","name":"from","internalType":"address"},{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"safeTransferFrom","inputs":[{"type":"address","name":"from","internalType":"address"},{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"tokenId","internalType":"uint256"},{"type":"bytes","name":"_data","internalType":"bytes"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setApprovalForAll","inputs":[{"type":"address","name":"operator","internalType":"address"},{"type":"bool","name":"approved","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"startTrading","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"supportsInterface","inputs":[{"type":"bytes4","name":"_interfaceId","internalType":"bytes4"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"tokenCount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"tokenURI","inputs":[{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferFrom","inputs":[{"type":"address","name":"from","internalType":"address"},{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"withdraw","inputs":[]}], - "bytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} \ No newline at end of file diff --git a/packages/boba/gateway/src/deployment/contracts/OMG.json b/packages/boba/gateway/src/deployment/contracts/OMG.json deleted file mode 100644 index a3582a412e..0000000000 --- a/packages/boba/gateway/src/deployment/contracts/OMG.json +++ /dev/null @@ -1 +0,0 @@ -[{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_releaseTime","type":"uint256"}],"name":"mintTimelocked","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}] \ No newline at end of file diff --git a/packages/boba/gateway/src/deployment/contracts/TwitterPay.json b/packages/boba/gateway/src/deployment/contracts/TwitterPay.json deleted file mode 100644 index 8821f8b65d..0000000000 --- a/packages/boba/gateway/src/deployment/contracts/TwitterPay.json +++ /dev/null @@ -1,352 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "TwitterPay", - "sourceName": "contracts/TwitterPay.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "apiUrl_", - "type": "string" - }, - { - "internalType": "address", - "name": "turingHelper_", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxRegistersPerEpoch_", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "authorId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "bobaBubble", - "type": "uint256" - } - ], - "name": "BubbleRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "inputs": [], - "name": "amountRegistersInLastEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "apiUrl", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "bubbleRegister", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - } - ], - "name": "getNonce", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "lastEpochStart", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "maxRegistersPerEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "twitterPostID_", - "type": "string" - } - ], - "name": "registerBobaBubble", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token_", - "type": "address" - }, - { - "internalType": "uint256", - "name": "bobaBubble_", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount_", - "type": "uint256" - } - ], - "name": "sendFunds", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token_", - "type": "address" - }, - { - "internalType": "address", - "name": "from_", - "type": "address" - }, - { - "internalType": "uint256", - "name": "bobaBubble_", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount_", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "hashedMessage_", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "signature_", - "type": "bytes" - } - ], - "name": "sendFundsMeta", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "apiUrl_", - "type": "string" - }, - { - "internalType": "uint256", - "name": "maxRegistersPerEpoch_", - "type": "uint256" - } - ], - "name": "setConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "turingHelper", - "outputs": [ - { - "internalType": "contract ITuringHelper", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "twitterRegister", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_hashedMessage", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "signature", - "type": "bytes" - } - ], - "name": "verifyMessage", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "withdraw", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b5060405162001d1238038062001d128339810160408190526200003491620001b2565b6200003f3362000089565b825162000054906001906020860190620000d9565b50600280546001600160a01b0319166001600160a01b03939093169290921790915542600555600060065560075550620002e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620000e790620002ac565b90600052602060002090601f0160209004810192826200010b576000855562000156565b82601f106200012657805160ff191683800117855562000156565b8280016001018555821562000156579182015b828111156200015657825182559160200191906001019062000139565b506200016492915062000168565b5090565b5b8082111562000164576000815560010162000169565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b0381168114620001ad57600080fd5b919050565b600080600060608486031215620001c857600080fd5b83516001600160401b0380821115620001e057600080fd5b818601915086601f830112620001f557600080fd5b8151818111156200020a576200020a6200017f565b604051601f8201601f19908116603f011681019083821181831017156200023557620002356200017f565b816040528281526020935089848487010111156200025257600080fd5b600091505b8282101562000276578482018401518183018501529083019062000257565b82821115620002885760008484830101525b96506200029a91505086820162000195565b93505050604084015190509250925092565b600181811c90821680620002c157607f821691505b60208210811415620002e357634e487b7160e01b600052602260045260246000fd5b50919050565b611a1980620002f96000396000f3fe6080604052600436106101125760003560e01c80633e8f5b90116100a5578063881279e511610074578063d5bf91e311610059578063d5bf91e31461036e578063e9eff3c914610384578063f2fde38b146103a457600080fd5b8063881279e5146103005780638da5cb5b1461034357600080fd5b80633e8f5b901461027c57806341efaee91461029c578063715018a6146102c95780638367e120146102de57600080fd5b80632de520e5116100e15780632de520e5146101c25780633855f9e2146101e25780633b51be4b146102225780633ccfd60b1461026757600080fd5b8063034b69131461011e5780632781c4cb146101475780632ae8a2d21461015d5780632d0335ab1461017f57600080fd5b3661011957005b600080fd5b34801561012a57600080fd5b5061013460065481565b6040519081526020015b60405180910390f35b34801561015357600080fd5b5061013460075481565b34801561016957600080fd5b5061017d6101783660046112d7565b6103c4565b005b34801561018b57600080fd5b5061013461019a36600461130a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526008602052604090205490565b3480156101ce57600080fd5b5061017d6101dd366004611412565b610519565b3480156101ee57600080fd5b506102126101fd36600461148c565b60046020526000908152604090205460ff1681565b604051901515815260200161013e565b34801561022e57600080fd5b5061024261023d3660046114a5565b610607565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013e565b34801561027357600080fd5b5061017d61066b565b34801561028857600080fd5b5061017d6102973660046114ec565b61071c565b3480156102a857600080fd5b506002546102429073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102d557600080fd5b5061017d61079d565b3480156102ea57600080fd5b506102f3610810565b60405161013e919061159d565b34801561030c57600080fd5b5061024261031b36600461148c565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561034f57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610242565b34801561037a57600080fd5b5061013460055481565b34801561039057600080fd5b5061017d61039f3660046115b0565b61089e565b3480156103b057600080fd5b5061017d6103bf36600461130a565b610ba4565b60008281526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1661043a5760405162461bcd60e51b815260206004820152600e60248201527f556e6b6e6f776e20627562626c6500000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166323b872dd336000858152600360205260409081902054905160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260448101849052606401602060405180830381600087803b1580156104db57600080fd5b505af11580156104ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105139190611622565b50505050565b8473ffffffffffffffffffffffffffffffffffffffff1661053a8383610607565b73ffffffffffffffffffffffffffffffffffffffff161461059d5760405162461bcd60e51b815260206004820152601060248201527f5369676e6174757265206661756c7479000000000000000000000000000000006044820152606401610431565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600860205260409020546105ce906001611673565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600860205260409020556105ff8685856103c4565b505050505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018390526000908190605c0160408051601f19818403018152919052805160209091012090506106638184610c9d565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106d25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610431565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116914780156108fc02929091818181858888f19350505050158015610719573d6000803e3d6000fd5b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610431565b8151610796906001906020850190611215565b5060075550565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108045760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610431565b61080e6000610cc1565b565b6001805461081d9061168b565b80601f01602080910402602001604051908101604052809291908181526020018280546108499061168b565b80156108965780601f1061086b57610100808354040283529160200191610896565b820191906000526020600020905b81548152906001019060200180831161087957829003601f168201915b505050505081565b6005546108ad90610e10611673565b42106108c1574260055560016006556108d7565b600680549060006108d1836116df565b91905055505b6007546006541061092a5760405162461bcd60e51b815260206004820152601260248201527f52617465206c696d6974207265616368656400000000000000000000000000006044820152606401610431565b600033838360405160200161094193929190611718565b60408051601f19818403018152908290526002547f2f7adf4300000000000000000000000000000000000000000000000000000000835290925060009182918291829173ffffffffffffffffffffffffffffffffffffffff1690632f7adf43906109b2906001908990600401611764565b600060405180830381600087803b1580156109cc57600080fd5b505af11580156109e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a089190810190611857565b806020019051810190610a1b91906118c5565b600083815260046020526040902054939750919550935091508415159060ff1615610a885760405162461bcd60e51b815260206004820152601460248201527f5477697474657220616c726561647920757365640000000000000000000000006044820152606401610431565b80610a9284610d36565b604051602001610aa291906118fb565b60405160208183030381529060405290610acf5760405162461bcd60e51b8152600401610431919061159d565b50600084815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610b0e3390565b60008381526003602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff949094169390931790925580518681529182018490527f6a550fe7e22cef8c37974c9923b3a90964b85326479cc6b2a9b0e70ae0e54a2a910160405180910390a15050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c0b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610431565b73ffffffffffffffffffffffffffffffffffffffff8116610c945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610431565b61071981610cc1565b6000806000610cac8585610e68565b91509150610cb981610ed8565b509392505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606081610d7657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610da05780610d8a816116df565b9150610d999050600a8361196f565b9150610d7a565b60008167ffffffffffffffff811115610dbb57610dbb61132c565b6040519080825280601f01601f191660200182016040528015610de5576020820181803683370190505b5090505b841561066357610dfa600183611983565b9150610e07600a8661199a565b610e12906030611673565b60f81b818381518110610e2757610e276119ae565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610e61600a8661196f565b9450610de9565b600080825160411415610e9f5760208301516040840151606085015160001a610e93878285856110c9565b94509450505050610ed1565b825160401415610ec95760208301516040840151610ebe8683836111c3565b935093505050610ed1565b506000905060025b9250929050565b6000816004811115610eec57610eec6119dd565b1415610ef55750565b6001816004811115610f0957610f096119dd565b1415610f575760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610431565b6002816004811115610f6b57610f6b6119dd565b1415610fb95760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610431565b6003816004811115610fcd57610fcd6119dd565b14156110415760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610431565b6004816004811115611055576110556119dd565b14156107195760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610431565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561110057506000905060036111ba565b8460ff16601b1415801561111857508460ff16601c14155b1561112957506000905060046111ba565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561117d573d6000803e3d6000fd5b5050604051601f19015191505073ffffffffffffffffffffffffffffffffffffffff81166111b3576000600192509250506111ba565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8316816111f960ff86901c601b611673565b9050611207878288856110c9565b935093505050935093915050565b8280546112219061168b565b90600052602060002090601f0160209004810192826112435760008555611289565b82601f1061125c57805160ff1916838001178555611289565b82800160010185558215611289579182015b8281111561128957825182559160200191906001019061126e565b50611295929150611299565b5090565b5b80821115611295576000815560010161129a565b803573ffffffffffffffffffffffffffffffffffffffff811681146112d257600080fd5b919050565b6000806000606084860312156112ec57600080fd5b6112f5846112ae565b95602085013595506040909401359392505050565b60006020828403121561131c57600080fd5b611325826112ae565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156113845761138461132c565b604052919050565b600067ffffffffffffffff8211156113a6576113a661132c565b50601f01601f191660200190565b60006113c76113c28461138c565b61135b565b90508281528383830111156113db57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261140357600080fd5b611325838335602085016113b4565b60008060008060008060c0878903121561142b57600080fd5b611434876112ae565b9550611442602088016112ae565b945060408701359350606087013592506080870135915060a087013567ffffffffffffffff81111561147357600080fd5b61147f89828a016113f2565b9150509295509295509295565b60006020828403121561149e57600080fd5b5035919050565b600080604083850312156114b857600080fd5b82359150602083013567ffffffffffffffff8111156114d657600080fd5b6114e2858286016113f2565b9150509250929050565b600080604083850312156114ff57600080fd5b823567ffffffffffffffff81111561151657600080fd5b8301601f8101851361152757600080fd5b611536858235602084016113b4565b95602094909401359450505050565b60005b83811015611560578181015183820152602001611548565b838111156105135750506000910152565b60008151808452611589816020860160208601611545565b601f01601f19169290920160200192915050565b6020815260006113256020830184611571565b600080602083850312156115c357600080fd5b823567ffffffffffffffff808211156115db57600080fd5b818501915085601f8301126115ef57600080fd5b8135818111156115fe57600080fd5b86602082850101111561161057600080fd5b60209290920196919550909350505050565b60006020828403121561163457600080fd5b8151801515811461132557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561168657611686611644565b500190565b600181811c9082168061169f57607f821691505b602082108114156116d9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561171157611711611644565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60408152600080845481600182811c91508083168061178457607f831692505b60208084108214156117bd577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b60408801849052606088018280156117dc576001811461180b57611836565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00871682528282019750611836565b60008c81526020902060005b8781101561183057815484820152908601908401611817565b83019850505b505087860381890152505050505061184e8185611571565b95945050505050565b60006020828403121561186957600080fd5b815167ffffffffffffffff81111561188057600080fd5b8201601f8101841361189157600080fd5b805161189f6113c28261138c565b8181528560208385010111156118b457600080fd5b61184e826020830160208601611545565b600080600080608085870312156118db57600080fd5b505082516020840151604085015160609095015191969095509092509050565b7f496e76616c696420726571756573743a00000000000000000000000000000000815260008251611933816010850160208701611545565b9190910160100192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261197e5761197e611940565b500490565b60008282101561199557611995611644565b500390565b6000826119a9576119a9611940565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c6343000809000a", - "deployedBytecode": "0x6080604052600436106101125760003560e01c80633e8f5b90116100a5578063881279e511610074578063d5bf91e311610059578063d5bf91e31461036e578063e9eff3c914610384578063f2fde38b146103a457600080fd5b8063881279e5146103005780638da5cb5b1461034357600080fd5b80633e8f5b901461027c57806341efaee91461029c578063715018a6146102c95780638367e120146102de57600080fd5b80632de520e5116100e15780632de520e5146101c25780633855f9e2146101e25780633b51be4b146102225780633ccfd60b1461026757600080fd5b8063034b69131461011e5780632781c4cb146101475780632ae8a2d21461015d5780632d0335ab1461017f57600080fd5b3661011957005b600080fd5b34801561012a57600080fd5b5061013460065481565b6040519081526020015b60405180910390f35b34801561015357600080fd5b5061013460075481565b34801561016957600080fd5b5061017d6101783660046112d7565b6103c4565b005b34801561018b57600080fd5b5061013461019a36600461130a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526008602052604090205490565b3480156101ce57600080fd5b5061017d6101dd366004611412565b610519565b3480156101ee57600080fd5b506102126101fd36600461148c565b60046020526000908152604090205460ff1681565b604051901515815260200161013e565b34801561022e57600080fd5b5061024261023d3660046114a5565b610607565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013e565b34801561027357600080fd5b5061017d61066b565b34801561028857600080fd5b5061017d6102973660046114ec565b61071c565b3480156102a857600080fd5b506002546102429073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102d557600080fd5b5061017d61079d565b3480156102ea57600080fd5b506102f3610810565b60405161013e919061159d565b34801561030c57600080fd5b5061024261031b36600461148c565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561034f57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610242565b34801561037a57600080fd5b5061013460055481565b34801561039057600080fd5b5061017d61039f3660046115b0565b61089e565b3480156103b057600080fd5b5061017d6103bf36600461130a565b610ba4565b60008281526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1661043a5760405162461bcd60e51b815260206004820152600e60248201527f556e6b6e6f776e20627562626c6500000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166323b872dd336000858152600360205260409081902054905160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260448101849052606401602060405180830381600087803b1580156104db57600080fd5b505af11580156104ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105139190611622565b50505050565b8473ffffffffffffffffffffffffffffffffffffffff1661053a8383610607565b73ffffffffffffffffffffffffffffffffffffffff161461059d5760405162461bcd60e51b815260206004820152601060248201527f5369676e6174757265206661756c7479000000000000000000000000000000006044820152606401610431565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600860205260409020546105ce906001611673565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600860205260409020556105ff8685856103c4565b505050505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018390526000908190605c0160408051601f19818403018152919052805160209091012090506106638184610c9d565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106d25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610431565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116914780156108fc02929091818181858888f19350505050158015610719573d6000803e3d6000fd5b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610431565b8151610796906001906020850190611215565b5060075550565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108045760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610431565b61080e6000610cc1565b565b6001805461081d9061168b565b80601f01602080910402602001604051908101604052809291908181526020018280546108499061168b565b80156108965780601f1061086b57610100808354040283529160200191610896565b820191906000526020600020905b81548152906001019060200180831161087957829003601f168201915b505050505081565b6005546108ad90610e10611673565b42106108c1574260055560016006556108d7565b600680549060006108d1836116df565b91905055505b6007546006541061092a5760405162461bcd60e51b815260206004820152601260248201527f52617465206c696d6974207265616368656400000000000000000000000000006044820152606401610431565b600033838360405160200161094193929190611718565b60408051601f19818403018152908290526002547f2f7adf4300000000000000000000000000000000000000000000000000000000835290925060009182918291829173ffffffffffffffffffffffffffffffffffffffff1690632f7adf43906109b2906001908990600401611764565b600060405180830381600087803b1580156109cc57600080fd5b505af11580156109e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a089190810190611857565b806020019051810190610a1b91906118c5565b600083815260046020526040902054939750919550935091508415159060ff1615610a885760405162461bcd60e51b815260206004820152601460248201527f5477697474657220616c726561647920757365640000000000000000000000006044820152606401610431565b80610a9284610d36565b604051602001610aa291906118fb565b60405160208183030381529060405290610acf5760405162461bcd60e51b8152600401610431919061159d565b50600084815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610b0e3390565b60008381526003602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff949094169390931790925580518681529182018490527f6a550fe7e22cef8c37974c9923b3a90964b85326479cc6b2a9b0e70ae0e54a2a910160405180910390a15050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c0b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610431565b73ffffffffffffffffffffffffffffffffffffffff8116610c945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610431565b61071981610cc1565b6000806000610cac8585610e68565b91509150610cb981610ed8565b509392505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606081610d7657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610da05780610d8a816116df565b9150610d999050600a8361196f565b9150610d7a565b60008167ffffffffffffffff811115610dbb57610dbb61132c565b6040519080825280601f01601f191660200182016040528015610de5576020820181803683370190505b5090505b841561066357610dfa600183611983565b9150610e07600a8661199a565b610e12906030611673565b60f81b818381518110610e2757610e276119ae565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610e61600a8661196f565b9450610de9565b600080825160411415610e9f5760208301516040840151606085015160001a610e93878285856110c9565b94509450505050610ed1565b825160401415610ec95760208301516040840151610ebe8683836111c3565b935093505050610ed1565b506000905060025b9250929050565b6000816004811115610eec57610eec6119dd565b1415610ef55750565b6001816004811115610f0957610f096119dd565b1415610f575760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610431565b6002816004811115610f6b57610f6b6119dd565b1415610fb95760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610431565b6003816004811115610fcd57610fcd6119dd565b14156110415760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610431565b6004816004811115611055576110556119dd565b14156107195760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610431565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561110057506000905060036111ba565b8460ff16601b1415801561111857508460ff16601c14155b1561112957506000905060046111ba565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561117d573d6000803e3d6000fd5b5050604051601f19015191505073ffffffffffffffffffffffffffffffffffffffff81166111b3576000600192509250506111ba565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8316816111f960ff86901c601b611673565b9050611207878288856110c9565b935093505050935093915050565b8280546112219061168b565b90600052602060002090601f0160209004810192826112435760008555611289565b82601f1061125c57805160ff1916838001178555611289565b82800160010185558215611289579182015b8281111561128957825182559160200191906001019061126e565b50611295929150611299565b5090565b5b80821115611295576000815560010161129a565b803573ffffffffffffffffffffffffffffffffffffffff811681146112d257600080fd5b919050565b6000806000606084860312156112ec57600080fd5b6112f5846112ae565b95602085013595506040909401359392505050565b60006020828403121561131c57600080fd5b611325826112ae565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156113845761138461132c565b604052919050565b600067ffffffffffffffff8211156113a6576113a661132c565b50601f01601f191660200190565b60006113c76113c28461138c565b61135b565b90508281528383830111156113db57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261140357600080fd5b611325838335602085016113b4565b60008060008060008060c0878903121561142b57600080fd5b611434876112ae565b9550611442602088016112ae565b945060408701359350606087013592506080870135915060a087013567ffffffffffffffff81111561147357600080fd5b61147f89828a016113f2565b9150509295509295509295565b60006020828403121561149e57600080fd5b5035919050565b600080604083850312156114b857600080fd5b82359150602083013567ffffffffffffffff8111156114d657600080fd5b6114e2858286016113f2565b9150509250929050565b600080604083850312156114ff57600080fd5b823567ffffffffffffffff81111561151657600080fd5b8301601f8101851361152757600080fd5b611536858235602084016113b4565b95602094909401359450505050565b60005b83811015611560578181015183820152602001611548565b838111156105135750506000910152565b60008151808452611589816020860160208601611545565b601f01601f19169290920160200192915050565b6020815260006113256020830184611571565b600080602083850312156115c357600080fd5b823567ffffffffffffffff808211156115db57600080fd5b818501915085601f8301126115ef57600080fd5b8135818111156115fe57600080fd5b86602082850101111561161057600080fd5b60209290920196919550909350505050565b60006020828403121561163457600080fd5b8151801515811461132557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561168657611686611644565b500190565b600181811c9082168061169f57607f821691505b602082108114156116d9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561171157611711611644565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60408152600080845481600182811c91508083168061178457607f831692505b60208084108214156117bd577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b60408801849052606088018280156117dc576001811461180b57611836565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00871682528282019750611836565b60008c81526020902060005b8781101561183057815484820152908601908401611817565b83019850505b505087860381890152505050505061184e8185611571565b95945050505050565b60006020828403121561186957600080fd5b815167ffffffffffffffff81111561188057600080fd5b8201601f8101841361189157600080fd5b805161189f6113c28261138c565b8181528560208385010111156118b457600080fd5b61184e826020830160208601611545565b600080600080608085870312156118db57600080fd5b505082516020840151604085015160609095015191969095509092509050565b7f496e76616c696420726571756573743a00000000000000000000000000000000815260008251611933816010850160208701611545565b9190910160100192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261197e5761197e611940565b500490565b60008282101561199557611995611644565b500390565b6000826119a9576119a9611940565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c6343000809000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/boba/gateway/src/deployment/contracts/WAGMIv0.json b/packages/boba/gateway/src/deployment/contracts/WAGMIv0.json deleted file mode 100644 index 5440c91453..0000000000 --- a/packages/boba/gateway/src/deployment/contracts/WAGMIv0.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "WAGMIv0", - "sourceName": "", - "abi": [{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"tuple","name":"params","internalType":"struct LongShortPair.ConstructorParams","components":[{"type":"string","name":"pairName","internalType":"string"},{"type":"uint64","name":"expirationTimestamp","internalType":"uint64"},{"type":"uint256","name":"collateralPerPair","internalType":"uint256"},{"type":"bytes32","name":"priceIdentifier","internalType":"bytes32"},{"type":"bool","name":"enableEarlyExpiration","internalType":"bool"},{"type":"address","name":"longToken","internalType":"contract ExpandedIERC20"},{"type":"address","name":"shortToken","internalType":"contract ExpandedIERC20"},{"type":"address","name":"collateralToken","internalType":"contract IERC20"},{"type":"address","name":"financialProductLibrary","internalType":"contract LongShortPairFinancialProductLibrary"},{"type":"bytes","name":"customAncillaryData","internalType":"bytes"},{"type":"uint256","name":"proposerReward","internalType":"uint256"},{"type":"uint256","name":"optimisticOracleLivenessTime","internalType":"uint256"},{"type":"uint256","name":"optimisticOracleProposerBond","internalType":"uint256"},{"type":"address","name":"finder","internalType":"contract FinderInterface"},{"type":"address","name":"timerAddress","internalType":"address"}]}]},{"type":"event","name":"ContractExpired","inputs":[{"type":"address","name":"caller","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"EarlyExpirationRequested","inputs":[{"type":"address","name":"caller","internalType":"address","indexed":true},{"type":"uint64","name":"earlyExpirationTimeStamp","internalType":"uint64","indexed":false}],"anonymous":false},{"type":"event","name":"PositionSettled","inputs":[{"type":"address","name":"sponsor","internalType":"address","indexed":true},{"type":"uint256","name":"collateralReturned","internalType":"uint256","indexed":false},{"type":"uint256","name":"longTokens","internalType":"uint256","indexed":false},{"type":"uint256","name":"shortTokens","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"TokensCreated","inputs":[{"type":"address","name":"sponsor","internalType":"address","indexed":true},{"type":"uint256","name":"collateralUsed","internalType":"uint256","indexed":true},{"type":"uint256","name":"tokensMinted","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"event","name":"TokensRedeemed","inputs":[{"type":"address","name":"sponsor","internalType":"address","indexed":true},{"type":"uint256","name":"collateralReturned","internalType":"uint256","indexed":true},{"type":"uint256","name":"tokensRedeemed","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"collateralPerPair","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IERC20"}],"name":"collateralToken","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"uint256","name":"collateralUsed","internalType":"uint256"}],"name":"create","inputs":[{"type":"uint256","name":"tokensToCreate","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bytes","name":"","internalType":"bytes"}],"name":"customAncillaryData","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint64","name":"","internalType":"uint64"}],"name":"earlyExpirationTimestamp","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"enableEarlyExpiration","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint64","name":"","internalType":"uint64"}],"name":"expirationTimestamp","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"expire","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"expiryPercentLong","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"int256","name":"","internalType":"int256"}],"name":"expiryPrice","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract LongShortPairFinancialProductLibrary"}],"name":"financialProductLibrary","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract FinderInterface"}],"name":"finder","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getCurrentTime","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bytes","name":"","internalType":"bytes"}],"name":"getEarlyExpirationAncillaryData","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"longTokens","internalType":"uint256"},{"type":"uint256","name":"shortTokens","internalType":"uint256"}],"name":"getPositionTokens","inputs":[{"type":"address","name":"sponsor","internalType":"address"}]},{"type":"function","stateMutability":"pure","outputs":[{"type":"int256","name":"","internalType":"int256"}],"name":"ignoreEarlyExpirationPrice","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isContractEarlyExpired","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract ExpandedIERC20"}],"name":"longToken","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"optimisticOracleLivenessTime","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"optimisticOracleProposerBond","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"pairName","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bytes32","name":"","internalType":"bytes32"}],"name":"priceIdentifier","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"proposerReward","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"receivedSettlementPrice","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"uint256","name":"collateralReturned","internalType":"uint256"}],"name":"redeem","inputs":[{"type":"uint256","name":"tokensToRedeem","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"requestEarlyExpiration","inputs":[{"type":"uint64","name":"_earlyExpirationTimestamp","internalType":"uint64"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setCurrentTime","inputs":[{"type":"uint256","name":"time","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"uint256","name":"collateralReturned","internalType":"uint256"}],"name":"settle","inputs":[{"type":"uint256","name":"longTokensToRedeem","internalType":"uint256"},{"type":"uint256","name":"shortTokensToRedeem","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract ExpandedIERC20"}],"name":"shortToken","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"timerAddress","inputs":[]}], - "bytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} \ No newline at end of file diff --git a/packages/boba/gateway/src/deployment/contracts/WAGMIv1.json b/packages/boba/gateway/src/deployment/contracts/WAGMIv1.json deleted file mode 100644 index 25f75d352a..0000000000 --- a/packages/boba/gateway/src/deployment/contracts/WAGMIv1.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "WAGMIv1", - "sourceName": "", - "abi": [{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"tuple","name":"params","internalType":"struct LongShortPair.ConstructorParams","components":[{"type":"string","name":"pairName","internalType":"string"},{"type":"uint64","name":"expirationTimestamp","internalType":"uint64"},{"type":"uint256","name":"collateralPerPair","internalType":"uint256"},{"type":"bytes32","name":"priceIdentifier","internalType":"bytes32"},{"type":"bool","name":"enableEarlyExpiration","internalType":"bool"},{"type":"address","name":"longToken","internalType":"contract ExpandedIERC20"},{"type":"address","name":"shortToken","internalType":"contract ExpandedIERC20"},{"type":"address","name":"collateralToken","internalType":"contract IERC20"},{"type":"address","name":"financialProductLibrary","internalType":"contract LongShortPairFinancialProductLibrary"},{"type":"bytes","name":"customAncillaryData","internalType":"bytes"},{"type":"uint256","name":"proposerReward","internalType":"uint256"},{"type":"uint256","name":"optimisticOracleLivenessTime","internalType":"uint256"},{"type":"uint256","name":"optimisticOracleProposerBond","internalType":"uint256"},{"type":"address","name":"finder","internalType":"contract FinderInterface"},{"type":"address","name":"timerAddress","internalType":"address"}]}]},{"type":"event","name":"ContractExpired","inputs":[{"type":"address","name":"caller","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"EarlyExpirationRequested","inputs":[{"type":"address","name":"caller","internalType":"address","indexed":true},{"type":"uint64","name":"earlyExpirationTimeStamp","internalType":"uint64","indexed":false}],"anonymous":false},{"type":"event","name":"PositionSettled","inputs":[{"type":"address","name":"sponsor","internalType":"address","indexed":true},{"type":"uint256","name":"collateralReturned","internalType":"uint256","indexed":false},{"type":"uint256","name":"longTokens","internalType":"uint256","indexed":false},{"type":"uint256","name":"shortTokens","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"TokensCreated","inputs":[{"type":"address","name":"sponsor","internalType":"address","indexed":true},{"type":"uint256","name":"collateralUsed","internalType":"uint256","indexed":true},{"type":"uint256","name":"tokensMinted","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"event","name":"TokensRedeemed","inputs":[{"type":"address","name":"sponsor","internalType":"address","indexed":true},{"type":"uint256","name":"collateralReturned","internalType":"uint256","indexed":true},{"type":"uint256","name":"tokensRedeemed","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"collateralPerPair","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IERC20"}],"name":"collateralToken","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"uint256","name":"collateralUsed","internalType":"uint256"}],"name":"create","inputs":[{"type":"uint256","name":"tokensToCreate","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bytes","name":"","internalType":"bytes"}],"name":"customAncillaryData","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint64","name":"","internalType":"uint64"}],"name":"earlyExpirationTimestamp","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"enableEarlyExpiration","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint64","name":"","internalType":"uint64"}],"name":"expirationTimestamp","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"expire","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"expiryPercentLong","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"int256","name":"","internalType":"int256"}],"name":"expiryPrice","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract LongShortPairFinancialProductLibrary"}],"name":"financialProductLibrary","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract FinderInterface"}],"name":"finder","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getCurrentTime","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bytes","name":"","internalType":"bytes"}],"name":"getEarlyExpirationAncillaryData","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"longTokens","internalType":"uint256"},{"type":"uint256","name":"shortTokens","internalType":"uint256"}],"name":"getPositionTokens","inputs":[{"type":"address","name":"sponsor","internalType":"address"}]},{"type":"function","stateMutability":"pure","outputs":[{"type":"int256","name":"","internalType":"int256"}],"name":"ignoreEarlyExpirationPrice","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isContractEarlyExpired","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract ExpandedIERC20"}],"name":"longToken","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"optimisticOracleLivenessTime","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"optimisticOracleProposerBond","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"pairName","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bytes32","name":"","internalType":"bytes32"}],"name":"priceIdentifier","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"proposerReward","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"receivedSettlementPrice","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"uint256","name":"collateralReturned","internalType":"uint256"}],"name":"redeem","inputs":[{"type":"uint256","name":"tokensToRedeem","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"requestEarlyExpiration","inputs":[{"type":"uint64","name":"_earlyExpirationTimestamp","internalType":"uint64"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setCurrentTime","inputs":[{"type":"uint256","name":"time","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"uint256","name":"collateralReturned","internalType":"uint256"}],"name":"settle","inputs":[{"type":"uint256","name":"longTokensToRedeem","internalType":"uint256"},{"type":"uint256","name":"shortTokensToRedeem","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract ExpandedIERC20"}],"name":"shortToken","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"timerAddress","inputs":[]}], - "bytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} \ No newline at end of file diff --git a/packages/boba/gateway/src/deployment/contracts/crosschain/AltL1Bridge.json b/packages/boba/gateway/src/deployment/contracts/crosschain/AltL1Bridge.json deleted file mode 100644 index 2513ad08c2..0000000000 --- a/packages/boba/gateway/src/deployment/contracts/crosschain/AltL1Bridge.json +++ /dev/null @@ -1,755 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "AltL1Bridge", - "sourceName": "contracts/lzTokenBridge/AltL1Bridge.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "DepositFinalized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "uint64", - "name": "_nonce", - "type": "uint64" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_payload", - "type": "bytes" - } - ], - "name": "MessageFailed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - } - ], - "name": "SetTrustedRemote", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "WithdrawalInitiated", - "type": "event" - }, - { - "inputs": [], - "name": "FUNCTION_TYPE_SEND", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "NO_EXTRA_GAS", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "dstChainId", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - }, - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "name": "failedMessages", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - } - ], - "name": "forceResumeReceive", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_version", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "_chainId", - "type": "uint16" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_configType", - "type": "uint256" - } - ], - "name": "getConfig", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_lzEndpoint", - "type": "address" - }, - { - "internalType": "uint16", - "name": "_dstChainId", - "type": "uint16" - }, - { - "internalType": "address", - "name": "_ethBridgeAddress", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - } - ], - "name": "isTrustedRemote", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "lzEndpoint", - "outputs": [ - { - "internalType": "contract ILayerZeroEndpoint", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - }, - { - "internalType": "uint64", - "name": "_nonce", - "type": "uint64" - }, - { - "internalType": "bytes", - "name": "_payload", - "type": "bytes" - } - ], - "name": "lzReceive", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "maxTransferAmountPerDay", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "minDstGasLookup", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - }, - { - "internalType": "uint64", - "name": "_nonce", - "type": "uint64" - }, - { - "internalType": "bytes", - "name": "_payload", - "type": "bytes" - } - ], - "name": "nonblockingLzReceive", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - }, - { - "internalType": "uint64", - "name": "_nonce", - "type": "uint64" - }, - { - "internalType": "bytes", - "name": "_payload", - "type": "bytes" - } - ], - "name": "retryMessage", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_version", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "_chainId", - "type": "uint16" - }, - { - "internalType": "uint256", - "name": "_configType", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_config", - "type": "bytes" - } - ], - "name": "setConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_maxTransferAmountPerDay", - "type": "uint256" - } - ], - "name": "setMaxTransferAmountPerDay", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_dstChainId", - "type": "uint16" - }, - { - "internalType": "uint256", - "name": "_type", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_dstGasAmount", - "type": "uint256" - } - ], - "name": "setMinDstGasLookup", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_version", - "type": "uint16" - } - ], - "name": "setReceiveVersion", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_version", - "type": "uint16" - } - ], - "name": "setSendVersion", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - } - ], - "name": "setTrustedRemote", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "_useCustomAdapterParams", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "_dstGasAmount", - "type": "uint256" - } - ], - "name": "setUseCustomAdapterParams", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "transferTimestampCheckPoint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "transferredAmount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "name": "trustedRemoteLookup", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "useCustomAdapterParams", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_zroPaymentAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_adapterParams", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "withdraw", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_zroPaymentAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_adapterParams", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "withdrawTo", - "outputs": [], - "stateMutability": "payable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b506132b0806100206000396000f3fe6080604052600436106101cc5760003560e01c80637533d788116100f7578063c8ed191011610095578063ed629c5c11610064578063ed629c5c14610578578063ede75eca14610598578063f2fde38b146105ab578063f5ecbdbc146105cb57600080fd5b8063c8ed19101461050f578063cbed8b9c14610525578063d1deba1f14610545578063eb8d72b71461055857600080fd5b8063901eec16116100d1578063901eec16146104975780639b57db5f146104ad578063af3fb21c146104cd578063b353aaa7146104e257600080fd5b80637533d788146103fe5780637e0ced091461042b5780638da5cb5b1461044b57600080fd5b806342d65a8d1161016f57806366ad5c8a1161013e57806366ad5c8a146103965780636fb2be6d146103b6578063708c0db9146103c9578063715018a6146103e957600080fd5b806342d65a8d146102fc578063447705151461031c578063512afd89146103315780635b8c41e61461034757600080fd5b806310ddb137116101ab57806310ddb1371461025e57806330c593f71461027e5780633496a68e146102ac5780633d8b38f6146102cc57600080fd5b80621d3567146101d157806307810867146101f357806307e0db171461023e575b600080fd5b3480156101dd57600080fd5b506101f16101ec3660046128a7565b6105eb565b005b3480156101ff57600080fd5b5061022b61020e36600461292c565b606760209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561024a57600080fd5b506101f1610259366004612956565b6107ae565b34801561026a57600080fd5b506101f1610279366004612956565b610899565b34801561028a57600080fd5b5060cd546102999061ffff1681565b60405161ffff9091168152602001610235565b3480156102b857600080fd5b506101f16102c7366004612971565b61095a565b3480156102d857600080fd5b506102ec6102e73660046129d3565b6109c6565b6040519015158152602001610235565b34801561030857600080fd5b506101f16103173660046129d3565b610a92565b34801561032857600080fd5b5061022b600081565b34801561033d57600080fd5b5061022b60ce5481565b34801561035357600080fd5b5061022b610362366004612a26565b609a602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b3480156103a257600080fd5b506101f16103b13660046128a7565b610b8a565b6101f16103c4366004612aa6565b610c11565b3480156103d557600080fd5b506101f16103e4366004612b3f565b610c29565b3480156103f557600080fd5b506101f1610e0b565b34801561040a57600080fd5b5061041e610419366004612956565b610e7e565b6040516102359190612be0565b34801561043757600080fd5b506101f1610446366004612c01565b610f18565b34801561045757600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610235565b3480156104a357600080fd5b5061022b60d05481565b3480156104b957600080fd5b506101f16104c8366004612c1f565b610fcc565b3480156104d957600080fd5b5061022b600181565b3480156104ee57600080fd5b506065546104729073ffffffffffffffffffffffffffffffffffffffff1681565b34801561051b57600080fd5b5061022b60cf5481565b34801561053157600080fd5b506101f1610540366004612c52565b6110a4565b6101f16105533660046128a7565b6111a2565b34801561056457600080fd5b506101f1610573366004612cc1565b61132c565b34801561058457600080fd5b5060cd546102ec9062010000900460ff1681565b6101f16105a6366004612d0f565b6113f5565b3480156105b757600080fd5b506101f16105c6366004612dbb565b611405565b3480156105d757600080fd5b5061041e6105e6366004612ddf565b611501565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066d5760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff84166000908152606660205260408120805461068b90612e2c565b80601f01602080910402602001604051908101604052809291908181526020018280546106b790612e2c565b80156107045780601f106106d957610100808354040283529160200191610704565b820191906000526020600020905b8154815290600101906020018083116106e757829003601f168201915b5050505050905080518451148015610729575080805190602001208480519060200120145b61079b5760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610664565b6107a7858585856115c9565b5050505050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146108155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b6065546040517f07e0db1700000000000000000000000000000000000000000000000000000000815261ffff8316600482015273ffffffffffffffffffffffffffffffffffffffff909116906307e0db17906024015b600060405180830381600087803b15801561088557600080fd5b505af11580156107a7573d6000803e3d6000fd5b60335473ffffffffffffffffffffffffffffffffffffffff1633146109005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b6065546040517f10ddb13700000000000000000000000000000000000000000000000000000000815261ffff8316600482015273ffffffffffffffffffffffffffffffffffffffff909116906310ddb1379060240161086b565b60335473ffffffffffffffffffffffffffffffffffffffff1633146109c15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b60ce55565b61ffff8316600090815260666020526040812080548291906109e790612e2c565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1390612e2c565b8015610a605780601f10610a3557610100808354040283529160200191610a60565b820191906000526020600020905b815481529060010190602001808311610a4357829003601f168201915b505050505090508383604051610a77929190612e80565b60405180910390208180519060200120149150509392505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610af95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b6065546040517f42d65a8d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906342d65a8d90610b5390869086908690600401612ebb565b600060405180830381600087803b158015610b6d57600080fd5b505af1158015610b81573d6000803e3d6000fd5b50505050505050565b333014610bff5760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d75737420626560448201527f204c7a41707000000000000000000000000000000000000000000000000000006064820152608401610664565b610c0b848484846116d4565b50505050565b610c21863333888888888861198c565b505050505050565b600054610100900460ff1680610c42575060005460ff16155b610cb45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610664565b600054610100900460ff16158015610cd6576000805461ffff19166101011790555b73ffffffffffffffffffffffffffffffffffffffff8416610d5f5760405162461bcd60e51b815260206004820152602260248201527f6c7a20656e64706f696e742063616e6e6f74206265207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610664565b610d6884611cfd565b60cd805461ffff191661ffff85161790556040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152610dc590849060340160405160208183030381529060405261132c565b4260d0556969e10de76676d080000060ce558015610c0b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610e725760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b610e7c6000611de5565b565b60666020526000908152604090208054610e9790612e2c565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec390612e2c565b8015610f105780601f10610ee557610100808354040283529160200191610f10565b820191906000526020600020905b815481529060010190602001808311610ef357829003601f168201915b505050505081565b60335473ffffffffffffffffffffffffffffffffffffffff163314610f7f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b60cd805483151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff82168117909255610fc89161ffff908116911617600183610fcc565b5050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146110335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b600081116110835760405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c6964205f647374476173416d6f756e74000000006044820152606401610664565b61ffff90921660009081526067602090815260408083209383529290522055565b60335473ffffffffffffffffffffffffffffffffffffffff16331461110b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b6065546040517fcbed8b9c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063cbed8b9c906111699088908890889088908890600401612ed9565b600060405180830381600087803b15801561118357600080fd5b505af1158015611197573d6000803e3d6000fd5b505050505050505050565b61ffff84166000908152609a602052604080822090516111c3908690612f12565b908152604080516020928190038301902067ffffffffffffffff86166000908152925290205490508061125e5760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201527f61676500000000000000000000000000000000000000000000000000000000006064820152608401610664565b8151602083012081146112d95760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f6160448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610664565b61ffff85166000908152609a602052604080822090516112fa908790612f12565b908152604080516020928190038301902067ffffffffffffffff8716600090815292529020556107a7858585856116d4565b60335473ffffffffffffffffffffffffffffffffffffffff1633146113935760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b61ffff8216600090815260666020908152604090912082516113b792840190612701565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab82826040516113e9929190612f2e565b60405180910390a15050565b610b81873388888888888861198c565b60335473ffffffffffffffffffffffffffffffffffffffff16331461146c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b73ffffffffffffffffffffffffffffffffffffffff81166114f55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610664565b6114fe81611de5565b50565b6065546040517ff5ecbdbc00000000000000000000000000000000000000000000000000000000815261ffff8087166004830152851660248201523060448201526064810183905260609173ffffffffffffffffffffffffffffffffffffffff169063f5ecbdbc9060840160006040518083038186803b15801561158457600080fd5b505afa158015611598573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115c09190810190612f98565b95945050505050565b6040517f66ad5c8a00000000000000000000000000000000000000000000000000000000815230906366ad5c8a9061160b908790879087908790600401612fcd565b600060405180830381600087803b15801561162557600080fd5b505af1925050508015611636575060015b610c0b578080519060200120609a60008661ffff1661ffff1681526020019081526020016000208460405161166b9190612f12565b90815260408051918290036020908101832067ffffffffffffffff87166000908152915220919091557fe6f254030bcb01ffd20558175c13fcaed6d1520be7becee4c961b65f79243b0d906116c7908690869086908690612fcd565b60405180910390a1610c0b565b60cd5461ffff85811691161461172c5760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420736f7572636520636861696e4964000000000000000000006044820152606401610664565b60008060008060008086806020019051810190611749919061300c565b95509550955095509550955061176685631d1d8b6360e01b611e5c565b801561181c57508473ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156117b557600080fd5b505af11580156117c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ed91906130a0565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b1561192e576040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490528616906340c10f1990604401600060405180830381600087803b15801561189157600080fd5b505af11580156118a5573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89868686604051611921939291906130bd565b60405180910390a4611980565b600086868587868660405160200161194b969594939291906130f2565b60408051601f1981840301815260cd5460208401909252600080845290935061197e9261ffff9092169184913391611e81565b505b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff86166119ef5760405162461bcd60e51b815260206004820152601a60248201527f5f746f2063616e6e6f74206265207a65726f20616464726573730000000000006044820152606401610664565b60d0546119ff906201518061314d565b421015611a76578460cf6000828254611a18919061314d565b909155505060ce5460cf541115611a715760405162461bcd60e51b815260206004820152601b60248201527f6d617820616d6f756e74207065722064617920657863656564656400000000006044820152606401610664565b611a80565b60cf8590554260d0555b6040517f9dc29fac0000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff891690639dc29fac90604401600060405180830381600087803b158015611aee57600080fd5b505af1158015611b02573d6000803e3d6000fd5b5050505060008873ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611b5057600080fd5b505af1158015611b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8891906130a0565b90506000818a8a8a8a8888604051602001611ba9979695949392919061318c565b60408051808303601f1901815291905260cd5490915062010000900460ff1615611be75760cd54611be29061ffff166001876000612026565b611c5b565b845115611c5b5760405162461bcd60e51b8152602060048201526024808201527f4c7a4170703a205f61646170746572506172616d73206d75737420626520656d60448201527f7074792e000000000000000000000000000000000000000000000000000000006064820152608401610664565b60cd54611c6f9061ffff1682338989611e81565b3373ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e8b8b8989604051611ce994939291906131e9565b60405180910390a450505050505050505050565b600054610100900460ff1680611d16575060005460ff16155b611d885760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610664565b600054610100900460ff16158015611daa576000805461ffff19166101011790555b611db382612103565b8015610fc857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000611e67836121c1565b8015611e785750611e788383612225565b90505b92915050565b61ffff851660009081526066602052604081208054611e9f90612e2c565b80601f0160208091040260200160405190810160405280929190818152602001828054611ecb90612e2c565b8015611f185780601f10611eed57610100808354040283529160200191611f18565b820191906000526020600020905b815481529060010190602001808311611efb57829003601f168201915b50505050509050805160001415611f975760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201527f61207472757374656420736f75726365000000000000000000000000000000006064820152608401610664565b6065546040517fc580310000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063c5803100903490611ff9908a9086908b908b908b908b9060040161321f565b6000604051808303818588803b15801561201257600080fd5b505af115801561197e573d6000803e3d6000fd5b6000612033836022015190565b61ffff861660009081526067602090815260408083208884529091528120549192509061206190849061314d565b9050600081116120b35760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606401610664565b80821015610c215760405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606401610664565b600054610100900460ff168061211c575060005460ff16155b61218e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610664565b600054610100900460ff161580156121b0576000805461ffff19166101011790555b6121b8612361565b611db38261244f565b60006121ed827f01ffc9a700000000000000000000000000000000000000000000000000000000612225565b8015611e7b575061221e827fffffffff00000000000000000000000000000000000000000000000000000000612225565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff871690617530906122df908690612f12565b6000604051808303818686fa925050503d806000811461231b576040519150601f19603f3d011682016040523d82523d6000602084013e612320565b606091505b509150915060208151101561233b5760009350505050611e7b565b8180156123575750808060200190518101906123579190613286565b9695505050505050565b600054610100900460ff168061237a575060005460ff16155b6123ec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610664565b600054610100900460ff1615801561240e576000805461ffff19166101011790555b61241661256e565b61241e61264b565b80156114fe57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600054610100900460ff1680612468575060005460ff16155b6124da5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610664565b600054610100900460ff161580156124fc576000805461ffff19166101011790555b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790558015610fc857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b600054610100900460ff1680612587575060005460ff16155b6125f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610664565b600054610100900460ff1615801561241e576000805461ffff191661010117905580156114fe57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600054610100900460ff1680612664575060005460ff16155b6126d65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610664565b600054610100900460ff161580156126f8576000805461ffff19166101011790555b61241e33611de5565b82805461270d90612e2c565b90600052602060002090601f01602090048101928261272f5760008555612775565b82601f1061274857805160ff1916838001178555612775565b82800160010185558215612775579182015b8281111561277557825182559160200191906001019061275a565b50612781929150612785565b5090565b5b808211156127815760008155600101612786565b803561ffff811681146127ac57600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612809576128096127b1565b604052919050565b600067ffffffffffffffff82111561282b5761282b6127b1565b50601f01601f191660200190565b600082601f83011261284a57600080fd5b813561285d61285882612811565b6127e0565b81815284602083860101111561287257600080fd5b816020850160208301376000918101602001919091529392505050565b803567ffffffffffffffff811681146127ac57600080fd5b600080600080608085870312156128bd57600080fd5b6128c68561279a565b9350602085013567ffffffffffffffff808211156128e357600080fd5b6128ef88838901612839565b94506128fd6040880161288f565b9350606087013591508082111561291357600080fd5b5061292087828801612839565b91505092959194509250565b6000806040838503121561293f57600080fd5b6129488361279a565b946020939093013593505050565b60006020828403121561296857600080fd5b611e788261279a565b60006020828403121561298357600080fd5b5035919050565b60008083601f84011261299c57600080fd5b50813567ffffffffffffffff8111156129b457600080fd5b6020830191508360208285010111156129cc57600080fd5b9250929050565b6000806000604084860312156129e857600080fd5b6129f18461279a565b9250602084013567ffffffffffffffff811115612a0d57600080fd5b612a198682870161298a565b9497909650939450505050565b600080600060608486031215612a3b57600080fd5b612a448461279a565b9250602084013567ffffffffffffffff811115612a6057600080fd5b612a6c86828701612839565b925050612a7b6040850161288f565b90509250925092565b73ffffffffffffffffffffffffffffffffffffffff811681146114fe57600080fd5b60008060008060008060a08789031215612abf57600080fd5b8635612aca81612a84565b9550602087013594506040870135612ae181612a84565b9350606087013567ffffffffffffffff80821115612afe57600080fd5b612b0a8a838b01612839565b94506080890135915080821115612b2057600080fd5b50612b2d89828a0161298a565b979a9699509497509295939492505050565b600080600060608486031215612b5457600080fd5b8335612b5f81612a84565b9250612b6d6020850161279a565b91506040840135612b7d81612a84565b809150509250925092565b60005b83811015612ba3578181015183820152602001612b8b565b83811115610c0b5750506000910152565b60008151808452612bcc816020860160208601612b88565b601f01601f19169290920160200192915050565b602081526000611e786020830184612bb4565b80151581146114fe57600080fd5b60008060408385031215612c1457600080fd5b823561294881612bf3565b600080600060608486031215612c3457600080fd5b612c3d8461279a565b95602085013595506040909401359392505050565b600080600080600060808688031215612c6a57600080fd5b612c738661279a565b9450612c816020870161279a565b935060408601359250606086013567ffffffffffffffff811115612ca457600080fd5b612cb08882890161298a565b969995985093965092949392505050565b60008060408385031215612cd457600080fd5b612cdd8361279a565b9150602083013567ffffffffffffffff811115612cf957600080fd5b612d0585828601612839565b9150509250929050565b600080600080600080600060c0888a031215612d2a57600080fd5b8735612d3581612a84565b96506020880135612d4581612a84565b9550604088013594506060880135612d5c81612a84565b9350608088013567ffffffffffffffff80821115612d7957600080fd5b612d858b838c01612839565b945060a08a0135915080821115612d9b57600080fd5b50612da88a828b0161298a565b989b979a50959850939692959293505050565b600060208284031215612dcd57600080fd5b8135612dd881612a84565b9392505050565b60008060008060808587031215612df557600080fd5b612dfe8561279a565b9350612e0c6020860161279a565b92506040850135612e1c81612a84565b9396929550929360600135925050565b600181811c90821680612e4057607f821691505b60208210811415612e7a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8183823760009101908152919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b61ffff841681526040602082015260006115c0604083018486612e90565b600061ffff808816835280871660208401525084604083015260806060830152612f07608083018486612e90565b979650505050505050565b60008251612f24818460208701612b88565b9190910192915050565b61ffff83168152604060208201526000612f4b6040830184612bb4565b949350505050565b600082601f830112612f6457600080fd5b8151612f7261285882612811565b818152846020838601011115612f8757600080fd5b612f4b826020830160208701612b88565b600060208284031215612faa57600080fd5b815167ffffffffffffffff811115612fc157600080fd5b612f4b84828501612f53565b61ffff85168152608060208201526000612fea6080830186612bb4565b67ffffffffffffffff851660408401528281036060840152612f078185612bb4565b60008060008060008060c0878903121561302557600080fd5b865161303081612a84565b602088015190965061304181612a84565b604088015190955061305281612a84565b606088015190945061306381612a84565b608088015160a0890151919450925067ffffffffffffffff81111561308757600080fd5b61309389828a01612f53565b9150509295509295509295565b6000602082840312156130b257600080fd5b8151612dd881612a84565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006115c06060830184612bb4565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a083015261314160c0830184612bb4565b98975050505050505050565b60008219821115613187577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a08301526131dc60c083018486612e90565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000612357606083018486612e90565b61ffff8716815260c06020820152600061323c60c0830188612bb4565b828103604084015261324e8188612bb4565b73ffffffffffffffffffffffffffffffffffffffff87811660608601528616608085015283810360a085015290506131dc8185612bb4565b60006020828403121561329857600080fd5b8151612dd881612bf356fea164736f6c6343000809000a", - "deployedBytecode": "0x6080604052600436106101cc5760003560e01c80637533d788116100f7578063c8ed191011610095578063ed629c5c11610064578063ed629c5c14610578578063ede75eca14610598578063f2fde38b146105ab578063f5ecbdbc146105cb57600080fd5b8063c8ed19101461050f578063cbed8b9c14610525578063d1deba1f14610545578063eb8d72b71461055857600080fd5b8063901eec16116100d1578063901eec16146104975780639b57db5f146104ad578063af3fb21c146104cd578063b353aaa7146104e257600080fd5b80637533d788146103fe5780637e0ced091461042b5780638da5cb5b1461044b57600080fd5b806342d65a8d1161016f57806366ad5c8a1161013e57806366ad5c8a146103965780636fb2be6d146103b6578063708c0db9146103c9578063715018a6146103e957600080fd5b806342d65a8d146102fc578063447705151461031c578063512afd89146103315780635b8c41e61461034757600080fd5b806310ddb137116101ab57806310ddb1371461025e57806330c593f71461027e5780633496a68e146102ac5780633d8b38f6146102cc57600080fd5b80621d3567146101d157806307810867146101f357806307e0db171461023e575b600080fd5b3480156101dd57600080fd5b506101f16101ec3660046128a7565b6105eb565b005b3480156101ff57600080fd5b5061022b61020e36600461292c565b606760209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561024a57600080fd5b506101f1610259366004612956565b6107ae565b34801561026a57600080fd5b506101f1610279366004612956565b610899565b34801561028a57600080fd5b5060cd546102999061ffff1681565b60405161ffff9091168152602001610235565b3480156102b857600080fd5b506101f16102c7366004612971565b61095a565b3480156102d857600080fd5b506102ec6102e73660046129d3565b6109c6565b6040519015158152602001610235565b34801561030857600080fd5b506101f16103173660046129d3565b610a92565b34801561032857600080fd5b5061022b600081565b34801561033d57600080fd5b5061022b60ce5481565b34801561035357600080fd5b5061022b610362366004612a26565b609a602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b3480156103a257600080fd5b506101f16103b13660046128a7565b610b8a565b6101f16103c4366004612aa6565b610c11565b3480156103d557600080fd5b506101f16103e4366004612b3f565b610c29565b3480156103f557600080fd5b506101f1610e0b565b34801561040a57600080fd5b5061041e610419366004612956565b610e7e565b6040516102359190612be0565b34801561043757600080fd5b506101f1610446366004612c01565b610f18565b34801561045757600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610235565b3480156104a357600080fd5b5061022b60d05481565b3480156104b957600080fd5b506101f16104c8366004612c1f565b610fcc565b3480156104d957600080fd5b5061022b600181565b3480156104ee57600080fd5b506065546104729073ffffffffffffffffffffffffffffffffffffffff1681565b34801561051b57600080fd5b5061022b60cf5481565b34801561053157600080fd5b506101f1610540366004612c52565b6110a4565b6101f16105533660046128a7565b6111a2565b34801561056457600080fd5b506101f1610573366004612cc1565b61132c565b34801561058457600080fd5b5060cd546102ec9062010000900460ff1681565b6101f16105a6366004612d0f565b6113f5565b3480156105b757600080fd5b506101f16105c6366004612dbb565b611405565b3480156105d757600080fd5b5061041e6105e6366004612ddf565b611501565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066d5760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff84166000908152606660205260408120805461068b90612e2c565b80601f01602080910402602001604051908101604052809291908181526020018280546106b790612e2c565b80156107045780601f106106d957610100808354040283529160200191610704565b820191906000526020600020905b8154815290600101906020018083116106e757829003601f168201915b5050505050905080518451148015610729575080805190602001208480519060200120145b61079b5760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610664565b6107a7858585856115c9565b5050505050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146108155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b6065546040517f07e0db1700000000000000000000000000000000000000000000000000000000815261ffff8316600482015273ffffffffffffffffffffffffffffffffffffffff909116906307e0db17906024015b600060405180830381600087803b15801561088557600080fd5b505af11580156107a7573d6000803e3d6000fd5b60335473ffffffffffffffffffffffffffffffffffffffff1633146109005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b6065546040517f10ddb13700000000000000000000000000000000000000000000000000000000815261ffff8316600482015273ffffffffffffffffffffffffffffffffffffffff909116906310ddb1379060240161086b565b60335473ffffffffffffffffffffffffffffffffffffffff1633146109c15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b60ce55565b61ffff8316600090815260666020526040812080548291906109e790612e2c565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1390612e2c565b8015610a605780601f10610a3557610100808354040283529160200191610a60565b820191906000526020600020905b815481529060010190602001808311610a4357829003601f168201915b505050505090508383604051610a77929190612e80565b60405180910390208180519060200120149150509392505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610af95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b6065546040517f42d65a8d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906342d65a8d90610b5390869086908690600401612ebb565b600060405180830381600087803b158015610b6d57600080fd5b505af1158015610b81573d6000803e3d6000fd5b50505050505050565b333014610bff5760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d75737420626560448201527f204c7a41707000000000000000000000000000000000000000000000000000006064820152608401610664565b610c0b848484846116d4565b50505050565b610c21863333888888888861198c565b505050505050565b600054610100900460ff1680610c42575060005460ff16155b610cb45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610664565b600054610100900460ff16158015610cd6576000805461ffff19166101011790555b73ffffffffffffffffffffffffffffffffffffffff8416610d5f5760405162461bcd60e51b815260206004820152602260248201527f6c7a20656e64706f696e742063616e6e6f74206265207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610664565b610d6884611cfd565b60cd805461ffff191661ffff85161790556040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152610dc590849060340160405160208183030381529060405261132c565b4260d0556969e10de76676d080000060ce558015610c0b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610e725760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b610e7c6000611de5565b565b60666020526000908152604090208054610e9790612e2c565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec390612e2c565b8015610f105780601f10610ee557610100808354040283529160200191610f10565b820191906000526020600020905b815481529060010190602001808311610ef357829003601f168201915b505050505081565b60335473ffffffffffffffffffffffffffffffffffffffff163314610f7f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b60cd805483151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff82168117909255610fc89161ffff908116911617600183610fcc565b5050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146110335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b600081116110835760405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c6964205f647374476173416d6f756e74000000006044820152606401610664565b61ffff90921660009081526067602090815260408083209383529290522055565b60335473ffffffffffffffffffffffffffffffffffffffff16331461110b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b6065546040517fcbed8b9c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063cbed8b9c906111699088908890889088908890600401612ed9565b600060405180830381600087803b15801561118357600080fd5b505af1158015611197573d6000803e3d6000fd5b505050505050505050565b61ffff84166000908152609a602052604080822090516111c3908690612f12565b908152604080516020928190038301902067ffffffffffffffff86166000908152925290205490508061125e5760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201527f61676500000000000000000000000000000000000000000000000000000000006064820152608401610664565b8151602083012081146112d95760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f6160448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610664565b61ffff85166000908152609a602052604080822090516112fa908790612f12565b908152604080516020928190038301902067ffffffffffffffff8716600090815292529020556107a7858585856116d4565b60335473ffffffffffffffffffffffffffffffffffffffff1633146113935760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b61ffff8216600090815260666020908152604090912082516113b792840190612701565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab82826040516113e9929190612f2e565b60405180910390a15050565b610b81873388888888888861198c565b60335473ffffffffffffffffffffffffffffffffffffffff16331461146c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b73ffffffffffffffffffffffffffffffffffffffff81166114f55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610664565b6114fe81611de5565b50565b6065546040517ff5ecbdbc00000000000000000000000000000000000000000000000000000000815261ffff8087166004830152851660248201523060448201526064810183905260609173ffffffffffffffffffffffffffffffffffffffff169063f5ecbdbc9060840160006040518083038186803b15801561158457600080fd5b505afa158015611598573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115c09190810190612f98565b95945050505050565b6040517f66ad5c8a00000000000000000000000000000000000000000000000000000000815230906366ad5c8a9061160b908790879087908790600401612fcd565b600060405180830381600087803b15801561162557600080fd5b505af1925050508015611636575060015b610c0b578080519060200120609a60008661ffff1661ffff1681526020019081526020016000208460405161166b9190612f12565b90815260408051918290036020908101832067ffffffffffffffff87166000908152915220919091557fe6f254030bcb01ffd20558175c13fcaed6d1520be7becee4c961b65f79243b0d906116c7908690869086908690612fcd565b60405180910390a1610c0b565b60cd5461ffff85811691161461172c5760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420736f7572636520636861696e4964000000000000000000006044820152606401610664565b60008060008060008086806020019051810190611749919061300c565b95509550955095509550955061176685631d1d8b6360e01b611e5c565b801561181c57508473ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156117b557600080fd5b505af11580156117c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ed91906130a0565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b1561192e576040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490528616906340c10f1990604401600060405180830381600087803b15801561189157600080fd5b505af11580156118a5573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89868686604051611921939291906130bd565b60405180910390a4611980565b600086868587868660405160200161194b969594939291906130f2565b60408051601f1981840301815260cd5460208401909252600080845290935061197e9261ffff9092169184913391611e81565b505b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff86166119ef5760405162461bcd60e51b815260206004820152601a60248201527f5f746f2063616e6e6f74206265207a65726f20616464726573730000000000006044820152606401610664565b60d0546119ff906201518061314d565b421015611a76578460cf6000828254611a18919061314d565b909155505060ce5460cf541115611a715760405162461bcd60e51b815260206004820152601b60248201527f6d617820616d6f756e74207065722064617920657863656564656400000000006044820152606401610664565b611a80565b60cf8590554260d0555b6040517f9dc29fac0000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff891690639dc29fac90604401600060405180830381600087803b158015611aee57600080fd5b505af1158015611b02573d6000803e3d6000fd5b5050505060008873ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611b5057600080fd5b505af1158015611b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8891906130a0565b90506000818a8a8a8a8888604051602001611ba9979695949392919061318c565b60408051808303601f1901815291905260cd5490915062010000900460ff1615611be75760cd54611be29061ffff166001876000612026565b611c5b565b845115611c5b5760405162461bcd60e51b8152602060048201526024808201527f4c7a4170703a205f61646170746572506172616d73206d75737420626520656d60448201527f7074792e000000000000000000000000000000000000000000000000000000006064820152608401610664565b60cd54611c6f9061ffff1682338989611e81565b3373ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e8b8b8989604051611ce994939291906131e9565b60405180910390a450505050505050505050565b600054610100900460ff1680611d16575060005460ff16155b611d885760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610664565b600054610100900460ff16158015611daa576000805461ffff19166101011790555b611db382612103565b8015610fc857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000611e67836121c1565b8015611e785750611e788383612225565b90505b92915050565b61ffff851660009081526066602052604081208054611e9f90612e2c565b80601f0160208091040260200160405190810160405280929190818152602001828054611ecb90612e2c565b8015611f185780601f10611eed57610100808354040283529160200191611f18565b820191906000526020600020905b815481529060010190602001808311611efb57829003601f168201915b50505050509050805160001415611f975760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201527f61207472757374656420736f75726365000000000000000000000000000000006064820152608401610664565b6065546040517fc580310000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063c5803100903490611ff9908a9086908b908b908b908b9060040161321f565b6000604051808303818588803b15801561201257600080fd5b505af115801561197e573d6000803e3d6000fd5b6000612033836022015190565b61ffff861660009081526067602090815260408083208884529091528120549192509061206190849061314d565b9050600081116120b35760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606401610664565b80821015610c215760405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606401610664565b600054610100900460ff168061211c575060005460ff16155b61218e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610664565b600054610100900460ff161580156121b0576000805461ffff19166101011790555b6121b8612361565b611db38261244f565b60006121ed827f01ffc9a700000000000000000000000000000000000000000000000000000000612225565b8015611e7b575061221e827fffffffff00000000000000000000000000000000000000000000000000000000612225565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff871690617530906122df908690612f12565b6000604051808303818686fa925050503d806000811461231b576040519150601f19603f3d011682016040523d82523d6000602084013e612320565b606091505b509150915060208151101561233b5760009350505050611e7b565b8180156123575750808060200190518101906123579190613286565b9695505050505050565b600054610100900460ff168061237a575060005460ff16155b6123ec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610664565b600054610100900460ff1615801561240e576000805461ffff19166101011790555b61241661256e565b61241e61264b565b80156114fe57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600054610100900460ff1680612468575060005460ff16155b6124da5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610664565b600054610100900460ff161580156124fc576000805461ffff19166101011790555b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790558015610fc857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b600054610100900460ff1680612587575060005460ff16155b6125f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610664565b600054610100900460ff1615801561241e576000805461ffff191661010117905580156114fe57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600054610100900460ff1680612664575060005460ff16155b6126d65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610664565b600054610100900460ff161580156126f8576000805461ffff19166101011790555b61241e33611de5565b82805461270d90612e2c565b90600052602060002090601f01602090048101928261272f5760008555612775565b82601f1061274857805160ff1916838001178555612775565b82800160010185558215612775579182015b8281111561277557825182559160200191906001019061275a565b50612781929150612785565b5090565b5b808211156127815760008155600101612786565b803561ffff811681146127ac57600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612809576128096127b1565b604052919050565b600067ffffffffffffffff82111561282b5761282b6127b1565b50601f01601f191660200190565b600082601f83011261284a57600080fd5b813561285d61285882612811565b6127e0565b81815284602083860101111561287257600080fd5b816020850160208301376000918101602001919091529392505050565b803567ffffffffffffffff811681146127ac57600080fd5b600080600080608085870312156128bd57600080fd5b6128c68561279a565b9350602085013567ffffffffffffffff808211156128e357600080fd5b6128ef88838901612839565b94506128fd6040880161288f565b9350606087013591508082111561291357600080fd5b5061292087828801612839565b91505092959194509250565b6000806040838503121561293f57600080fd5b6129488361279a565b946020939093013593505050565b60006020828403121561296857600080fd5b611e788261279a565b60006020828403121561298357600080fd5b5035919050565b60008083601f84011261299c57600080fd5b50813567ffffffffffffffff8111156129b457600080fd5b6020830191508360208285010111156129cc57600080fd5b9250929050565b6000806000604084860312156129e857600080fd5b6129f18461279a565b9250602084013567ffffffffffffffff811115612a0d57600080fd5b612a198682870161298a565b9497909650939450505050565b600080600060608486031215612a3b57600080fd5b612a448461279a565b9250602084013567ffffffffffffffff811115612a6057600080fd5b612a6c86828701612839565b925050612a7b6040850161288f565b90509250925092565b73ffffffffffffffffffffffffffffffffffffffff811681146114fe57600080fd5b60008060008060008060a08789031215612abf57600080fd5b8635612aca81612a84565b9550602087013594506040870135612ae181612a84565b9350606087013567ffffffffffffffff80821115612afe57600080fd5b612b0a8a838b01612839565b94506080890135915080821115612b2057600080fd5b50612b2d89828a0161298a565b979a9699509497509295939492505050565b600080600060608486031215612b5457600080fd5b8335612b5f81612a84565b9250612b6d6020850161279a565b91506040840135612b7d81612a84565b809150509250925092565b60005b83811015612ba3578181015183820152602001612b8b565b83811115610c0b5750506000910152565b60008151808452612bcc816020860160208601612b88565b601f01601f19169290920160200192915050565b602081526000611e786020830184612bb4565b80151581146114fe57600080fd5b60008060408385031215612c1457600080fd5b823561294881612bf3565b600080600060608486031215612c3457600080fd5b612c3d8461279a565b95602085013595506040909401359392505050565b600080600080600060808688031215612c6a57600080fd5b612c738661279a565b9450612c816020870161279a565b935060408601359250606086013567ffffffffffffffff811115612ca457600080fd5b612cb08882890161298a565b969995985093965092949392505050565b60008060408385031215612cd457600080fd5b612cdd8361279a565b9150602083013567ffffffffffffffff811115612cf957600080fd5b612d0585828601612839565b9150509250929050565b600080600080600080600060c0888a031215612d2a57600080fd5b8735612d3581612a84565b96506020880135612d4581612a84565b9550604088013594506060880135612d5c81612a84565b9350608088013567ffffffffffffffff80821115612d7957600080fd5b612d858b838c01612839565b945060a08a0135915080821115612d9b57600080fd5b50612da88a828b0161298a565b989b979a50959850939692959293505050565b600060208284031215612dcd57600080fd5b8135612dd881612a84565b9392505050565b60008060008060808587031215612df557600080fd5b612dfe8561279a565b9350612e0c6020860161279a565b92506040850135612e1c81612a84565b9396929550929360600135925050565b600181811c90821680612e4057607f821691505b60208210811415612e7a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8183823760009101908152919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b61ffff841681526040602082015260006115c0604083018486612e90565b600061ffff808816835280871660208401525084604083015260806060830152612f07608083018486612e90565b979650505050505050565b60008251612f24818460208701612b88565b9190910192915050565b61ffff83168152604060208201526000612f4b6040830184612bb4565b949350505050565b600082601f830112612f6457600080fd5b8151612f7261285882612811565b818152846020838601011115612f8757600080fd5b612f4b826020830160208701612b88565b600060208284031215612faa57600080fd5b815167ffffffffffffffff811115612fc157600080fd5b612f4b84828501612f53565b61ffff85168152608060208201526000612fea6080830186612bb4565b67ffffffffffffffff851660408401528281036060840152612f078185612bb4565b60008060008060008060c0878903121561302557600080fd5b865161303081612a84565b602088015190965061304181612a84565b604088015190955061305281612a84565b606088015190945061306381612a84565b608088015160a0890151919450925067ffffffffffffffff81111561308757600080fd5b61309389828a01612f53565b9150509295509295509295565b6000602082840312156130b257600080fd5b8151612dd881612a84565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006115c06060830184612bb4565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a083015261314160c0830184612bb4565b98975050505050505050565b60008219821115613187577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a08301526131dc60c083018486612e90565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000612357606083018486612e90565b61ffff8716815260c06020820152600061323c60c0830188612bb4565b828103604084015261324e8188612bb4565b73ffffffffffffffffffffffffffffffffffffffff87811660608601528616608085015283810360a085015290506131dc8185612bb4565b60006020828403121561329857600080fd5b8151612dd881612bf356fea164736f6c6343000809000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/boba/gateway/src/deployment/contracts/crosschain/EthBridge.json b/packages/boba/gateway/src/deployment/contracts/crosschain/EthBridge.json deleted file mode 100644 index 0bf8744863..0000000000 --- a/packages/boba/gateway/src/deployment/contracts/crosschain/EthBridge.json +++ /dev/null @@ -1,789 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "EthBridge", - "sourceName": "contracts/lzTokenBridge/EthBridge.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "ERC20DepositInitiated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "ERC20WithdrawalFinalized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "uint64", - "name": "_nonce", - "type": "uint64" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_payload", - "type": "bytes" - } - ], - "name": "MessageFailed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - } - ], - "name": "SetTrustedRemote", - "type": "event" - }, - { - "inputs": [], - "name": "FUNCTION_TYPE_SEND", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "NO_EXTRA_GAS", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_zroPaymentAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_adapterParams", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "depositERC20", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_zroPaymentAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_adapterParams", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "depositERC20To", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "deposits", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "dstChainId", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - }, - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "name": "failedMessages", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - } - ], - "name": "forceResumeReceive", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_version", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "_chainId", - "type": "uint16" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_configType", - "type": "uint256" - } - ], - "name": "getConfig", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_lzEndpoint", - "type": "address" - }, - { - "internalType": "uint16", - "name": "_dstChainId", - "type": "uint16" - }, - { - "internalType": "address", - "name": "_altL1BridgeAddress", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - } - ], - "name": "isTrustedRemote", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "lzEndpoint", - "outputs": [ - { - "internalType": "contract ILayerZeroEndpoint", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - }, - { - "internalType": "uint64", - "name": "_nonce", - "type": "uint64" - }, - { - "internalType": "bytes", - "name": "_payload", - "type": "bytes" - } - ], - "name": "lzReceive", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "maxTransferAmountPerDay", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "minDstGasLookup", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - }, - { - "internalType": "uint64", - "name": "_nonce", - "type": "uint64" - }, - { - "internalType": "bytes", - "name": "_payload", - "type": "bytes" - } - ], - "name": "nonblockingLzReceive", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - }, - { - "internalType": "uint64", - "name": "_nonce", - "type": "uint64" - }, - { - "internalType": "bytes", - "name": "_payload", - "type": "bytes" - } - ], - "name": "retryMessage", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_version", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "_chainId", - "type": "uint16" - }, - { - "internalType": "uint256", - "name": "_configType", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_config", - "type": "bytes" - } - ], - "name": "setConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_maxTransferAmountPerDay", - "type": "uint256" - } - ], - "name": "setMaxTransferAmountPerDay", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_dstChainId", - "type": "uint16" - }, - { - "internalType": "uint256", - "name": "_type", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_dstGasAmount", - "type": "uint256" - } - ], - "name": "setMinDstGasLookup", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_version", - "type": "uint16" - } - ], - "name": "setReceiveVersion", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_version", - "type": "uint16" - } - ], - "name": "setSendVersion", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - } - ], - "name": "setTrustedRemote", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "_useCustomAdapterParams", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "_dstGasAmount", - "type": "uint256" - } - ], - "name": "setUseCustomAdapterParams", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "transferTimestampCheckPoint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "transferredAmount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "name": "trustedRemoteLookup", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "useCustomAdapterParams", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50613382806100206000396000f3fe6080604052600436106101d75760003560e01c8063715018a611610102578063b353aaa711610095578063eb8d72b711610064578063eb8d72b7146105ae578063ed629c5c146105ce578063f2fde38b146105ee578063f5ecbdbc1461060e57600080fd5b8063b353aaa714610538578063c8ed191014610565578063cbed8b9c1461057b578063d1deba1f1461059b57600080fd5b80638f601f66116100d15780638f601f66146104b5578063901eec16146104ed5780639b57db5f14610503578063af3fb21c1461052357600080fd5b8063715018a6146104075780637533d7881461041c5780637e0ced09146104495780638da5cb5b1461046957600080fd5b80633d8b38f61161017a5780635b8c41e6116101495780635b8c41e61461036557806365f77189146103b457806366ad5c8a146103c7578063708c0db9146103e757600080fd5b80633d8b38f6146102ea57806342d65a8d1461031a578063447705151461033a578063512afd891461034f57600080fd5b80630d265fdb116101b65780630d265fdb1461026957806310ddb1371461027c57806330c593f71461029c5780633496a68e146102ca57600080fd5b80621d3567146101dc57806307810867146101fe57806307e0db1714610249575b600080fd5b3480156101e857600080fd5b506101fc6101f7366004612984565b61062e565b005b34801561020a57600080fd5b50610236610219366004612a09565b606760209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561025557600080fd5b506101fc610264366004612a33565b6107f1565b6101fc610277366004612ab9565b6108dc565b34801561028857600080fd5b506101fc610297366004612a33565b610945565b3480156102a857600080fd5b5060cd546102b79061ffff1681565b60405161ffff9091168152602001610240565b3480156102d657600080fd5b506101fc6102e5366004612b65565b610a06565b3480156102f657600080fd5b5061030a610305366004612b7e565b610a72565b6040519015158152602001610240565b34801561032657600080fd5b506101fc610335366004612b7e565b610b3f565b34801561034657600080fd5b50610236600081565b34801561035b57600080fd5b5061023660ce5481565b34801561037157600080fd5b50610236610380366004612bd1565b609a602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b6101fc6103c2366004612c2f565b610c2e565b3480156103d357600080fd5b506101fc6103e2366004612984565b610c49565b3480156103f357600080fd5b506101fc610402366004612ced565b610cd0565b34801561041357600080fd5b506101fc610eb2565b34801561042857600080fd5b5061043c610437366004612a33565b610f25565b6040516102409190612d8e565b34801561045557600080fd5b506101fc610464366004612daf565b610fbf565b34801561047557600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610240565b3480156104c157600080fd5b506102366104d0366004612dcd565b60d160209081526000928352604080842090915290825290205481565b3480156104f957600080fd5b5061023660d05481565b34801561050f57600080fd5b506101fc61051e366004612e06565b611073565b34801561052f57600080fd5b50610236600181565b34801561054457600080fd5b506065546104909073ffffffffffffffffffffffffffffffffffffffff1681565b34801561057157600080fd5b5061023660cf5481565b34801561058757600080fd5b506101fc610596366004612e39565b61114b565b6101fc6105a9366004612984565b611249565b3480156105ba57600080fd5b506101fc6105c9366004612ea8565b6113d3565b3480156105da57600080fd5b5060cd5461030a9062010000900460ff1681565b3480156105fa57600080fd5b506101fc610609366004612ef6565b61149c565b34801561061a57600080fd5b5061043c610629366004612f13565b611598565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b05760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff8416600090815260666020526040812080546106ce90612f60565b80601f01602080910402602001604051908101604052809291908181526020018280546106fa90612f60565b80156107475780601f1061071c57610100808354040283529160200191610747565b820191906000526020600020905b81548152906001019060200180831161072a57829003601f168201915b505050505090508051845114801561076c575080805190602001208480519060200120145b6107de5760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016106a7565b6107ea85858585611660565b5050505050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146108585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b6065546040517f07e0db1700000000000000000000000000000000000000000000000000000000815261ffff8316600482015273ffffffffffffffffffffffffffffffffffffffff909116906307e0db17906024015b600060405180830381600087803b1580156108c857600080fd5b505af11580156107ea573d6000803e3d6000fd5b333b1561092b5760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f41000000000000000000000000000000000060448201526064016106a7565b61093c87873333898989898961176b565b50505050505050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146109ac5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b6065546040517f10ddb13700000000000000000000000000000000000000000000000000000000815261ffff8316600482015273ffffffffffffffffffffffffffffffffffffffff909116906310ddb137906024016108ae565b60335473ffffffffffffffffffffffffffffffffffffffff163314610a6d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b60ce55565b61ffff831660009081526066602052604081208054829190610a9390612f60565b80601f0160208091040260200160405190810160405280929190818152602001828054610abf90612f60565b8015610b0c5780601f10610ae157610100808354040283529160200191610b0c565b820191906000526020600020905b815481529060010190602001808311610aef57829003601f168201915b505050505090508383604051610b23929190612fb4565b60405180910390208180519060200120149150505b9392505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610ba65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b6065546040517f42d65a8d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906342d65a8d90610c0090869086908690600401612fef565b600060405180830381600087803b158015610c1a57600080fd5b505af115801561093c573d6000803e3d6000fd5b610c3f88883389898989898961176b565b5050505050505050565b333014610cbe5760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d75737420626560448201527f204c7a417070000000000000000000000000000000000000000000000000000060648201526084016106a7565b610cca84848484611a65565b50505050565b600054610100900460ff1680610ce9575060005460ff16155b610d5b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106a7565b600054610100900460ff16158015610d7d576000805461ffff19166101011790555b73ffffffffffffffffffffffffffffffffffffffff8416610e065760405162461bcd60e51b815260206004820152602260248201527f6c7a20656e64706f696e742063616e6e6f74206265207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106a7565b610e0f84611be3565b60cd805461ffff191661ffff85161790556040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152610e6c9084906034016040516020818303038152906040526113d3565b4260d0556969e10de76676d080000060ce558015610cca57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610f195760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b610f236000611ccb565b565b60666020526000908152604090208054610f3e90612f60565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6a90612f60565b8015610fb75780601f10610f8c57610100808354040283529160200191610fb7565b820191906000526020600020905b815481529060010190602001808311610f9a57829003601f168201915b505050505081565b60335473ffffffffffffffffffffffffffffffffffffffff1633146110265760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b60cd805483151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff8216811790925561106f9161ffff908116911617600183611073565b5050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146110da5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b6000811161112a5760405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c6964205f647374476173416d6f756e740000000060448201526064016106a7565b61ffff90921660009081526067602090815260408083209383529290522055565b60335473ffffffffffffffffffffffffffffffffffffffff1633146111b25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b6065546040517fcbed8b9c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063cbed8b9c90611210908890889088908890889060040161300d565b600060405180830381600087803b15801561122a57600080fd5b505af115801561123e573d6000803e3d6000fd5b505050505050505050565b61ffff84166000908152609a6020526040808220905161126a90869061303b565b908152604080516020928190038301902067ffffffffffffffff8616600090815292529020549050806113055760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201527f616765000000000000000000000000000000000000000000000000000000000060648201526084016106a7565b8151602083012081146113805760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f6160448201527f640000000000000000000000000000000000000000000000000000000000000060648201526084016106a7565b61ffff85166000908152609a602052604080822090516113a190879061303b565b908152604080516020928190038301902067ffffffffffffffff8716600090815292529020556107ea85858585611a65565b60335473ffffffffffffffffffffffffffffffffffffffff16331461143a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b61ffff82166000908152606660209081526040909120825161145e928401906127de565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab8282604051611490929190613057565b60405180910390a15050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146115035760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b73ffffffffffffffffffffffffffffffffffffffff811661158c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106a7565b61159581611ccb565b50565b6065546040517ff5ecbdbc00000000000000000000000000000000000000000000000000000000815261ffff8087166004830152851660248201523060448201526064810183905260609173ffffffffffffffffffffffffffffffffffffffff169063f5ecbdbc9060840160006040518083038186803b15801561161b57600080fd5b505afa15801561162f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261165791908101906130b9565b95945050505050565b6040517f66ad5c8a00000000000000000000000000000000000000000000000000000000815230906366ad5c8a906116a29087908790879087906004016130ee565b600060405180830381600087803b1580156116bc57600080fd5b505af19250505080156116cd575060015b610cca578080519060200120609a60008661ffff1661ffff16815260200190815260200160002084604051611702919061303b565b90815260408051918290036020908101832067ffffffffffffffff87166000908152915220919091557fe6f254030bcb01ffd20558175c13fcaed6d1520be7becee4c961b65f79243b0d9061175e9086908690869086906130ee565b60405180910390a1610cca565b73ffffffffffffffffffffffffffffffffffffffff86166117ce5760405162461bcd60e51b815260206004820152601a60248201527f5f746f2063616e6e6f74206265207a65726f206164647265737300000000000060448201526064016106a7565b60d0546117de906201518061315c565b421015611855578460cf60008282546117f7919061315c565b909155505060ce5460cf5411156118505760405162461bcd60e51b815260206004820152601b60248201527f6d617820616d6f756e742070657220646179206578636565646564000000000060448201526064016106a7565b61185f565b60cf8590554260d0555b61188173ffffffffffffffffffffffffffffffffffffffff8a16883088611d42565b6000898989898987876040516020016118a09796959493929190613174565b60408051808303601f1901815291905260cd5490915062010000900460ff16156118de5760cd546118d99061ffff166001866000611e00565b611952565b8351156119525760405162461bcd60e51b8152602060048201526024808201527f4c7a4170703a205f61646170746572506172616d73206d75737420626520656d60448201527f7074792e0000000000000000000000000000000000000000000000000000000060648201526084016106a7565b73ffffffffffffffffffffffffffffffffffffffff808b16600090815260d160209081526040808320938d168352929052205461199090879061315c565b73ffffffffffffffffffffffffffffffffffffffff808c16600090815260d160209081526040808320938e168352929052205560cd546119d79061ffff1682338888611ee5565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d03968a8a8888604051611a5194939291906131d1565b60405180910390a450505050505050505050565b60cd5461ffff858116911614611abd5760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420736f7572636520636861696e49640000000000000000000060448201526064016106a7565b60008060008060008086806020019051810190611ada9190613211565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260d16020908152604080832093891683529290522054959b50939950919750955093509150611b279083906132a5565b73ffffffffffffffffffffffffffffffffffffffff808816600081815260d160209081526040808320948b1683529390529190912091909155611b6b908484612097565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b3868686604051611a51939291906132bc565b600054610100900460ff1680611bfc575060005460ff16155b611c6e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106a7565b600054610100900460ff16158015611c90576000805461ffff19166101011790555b611c99826120f2565b801561106f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610cca9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526121b0565b6000611e0d836022015190565b61ffff8616600090815260676020908152604080832088845290915281205491925090611e3b90849061315c565b905060008111611e8d5760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f742073657400000000000060448201526064016106a7565b80821015611edd5760405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f77000000000060448201526064016106a7565b505050505050565b61ffff851660009081526066602052604081208054611f0390612f60565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2f90612f60565b8015611f7c5780601f10611f5157610100808354040283529160200191611f7c565b820191906000526020600020905b815481529060010190602001808311611f5f57829003601f168201915b50505050509050805160001415611ffb5760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201527f61207472757374656420736f757263650000000000000000000000000000000060648201526084016106a7565b6065546040517fc580310000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063c580310090349061205d908a9086908b908b908b908b906004016132f1565b6000604051808303818588803b15801561207657600080fd5b505af115801561208a573d6000803e3d6000fd5b5050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526120ed9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401611d9c565b505050565b600054610100900460ff168061210b575060005460ff16155b61217d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106a7565b600054610100900460ff1615801561219f576000805461ffff19166101011790555b6121a76122a2565b611c9982612390565b6000612212826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166124af9092919063ffffffff16565b8051909150156120ed57808060200190518101906122309190613358565b6120ed5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106a7565b600054610100900460ff16806122bb575060005460ff16155b61232d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106a7565b600054610100900460ff1615801561234f576000805461ffff19166101011790555b6123576124c6565b61235f6125a3565b801561159557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600054610100900460ff16806123a9575060005460ff16155b61241b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106a7565b600054610100900460ff1615801561243d576000805461ffff19166101011790555b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055801561106f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b60606124be8484600085612659565b949350505050565b600054610100900460ff16806124df575060005460ff16155b6125515760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106a7565b600054610100900460ff1615801561235f576000805461ffff1916610101179055801561159557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600054610100900460ff16806125bc575060005460ff16155b61262e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106a7565b600054610100900460ff16158015612650576000805461ffff19166101011790555b61235f33611ccb565b6060824710156126d15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106a7565b843b61271f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a7565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612748919061303b565b60006040518083038185875af1925050503d8060008114612785576040519150601f19603f3d011682016040523d82523d6000602084013e61278a565b606091505b509150915061279a8282866127a5565b979650505050505050565b606083156127b4575081610b38565b8251156127c45782518084602001fd5b8160405162461bcd60e51b81526004016106a79190612d8e565b8280546127ea90612f60565b90600052602060002090601f01602090048101928261280c5760008555612852565b82601f1061282557805160ff1916838001178555612852565b82800160010185558215612852579182015b82811115612852578251825591602001919060010190612837565b5061285e929150612862565b5090565b5b8082111561285e5760008155600101612863565b803561ffff8116811461288957600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156128e6576128e661288e565b604052919050565b600067ffffffffffffffff8211156129085761290861288e565b50601f01601f191660200190565b600082601f83011261292757600080fd5b813561293a612935826128ee565b6128bd565b81815284602083860101111561294f57600080fd5b816020850160208301376000918101602001919091529392505050565b803567ffffffffffffffff8116811461288957600080fd5b6000806000806080858703121561299a57600080fd5b6129a385612877565b9350602085013567ffffffffffffffff808211156129c057600080fd5b6129cc88838901612916565b94506129da6040880161296c565b935060608701359150808211156129f057600080fd5b506129fd87828801612916565b91505092959194509250565b60008060408385031215612a1c57600080fd5b612a2583612877565b946020939093013593505050565b600060208284031215612a4557600080fd5b610b3882612877565b73ffffffffffffffffffffffffffffffffffffffff8116811461159557600080fd5b60008083601f840112612a8257600080fd5b50813567ffffffffffffffff811115612a9a57600080fd5b602083019150836020828501011115612ab257600080fd5b9250929050565b600080600080600080600060c0888a031215612ad457600080fd5b8735612adf81612a4e565b96506020880135612aef81612a4e565b9550604088013594506060880135612b0681612a4e565b9350608088013567ffffffffffffffff80821115612b2357600080fd5b612b2f8b838c01612916565b945060a08a0135915080821115612b4557600080fd5b50612b528a828b01612a70565b989b979a50959850939692959293505050565b600060208284031215612b7757600080fd5b5035919050565b600080600060408486031215612b9357600080fd5b612b9c84612877565b9250602084013567ffffffffffffffff811115612bb857600080fd5b612bc486828701612a70565b9497909650939450505050565b600080600060608486031215612be657600080fd5b612bef84612877565b9250602084013567ffffffffffffffff811115612c0b57600080fd5b612c1786828701612916565b925050612c266040850161296c565b90509250925092565b60008060008060008060008060e0898b031215612c4b57600080fd5b8835612c5681612a4e565b97506020890135612c6681612a4e565b96506040890135612c7681612a4e565b9550606089013594506080890135612c8d81612a4e565b935060a089013567ffffffffffffffff80821115612caa57600080fd5b612cb68c838d01612916565b945060c08b0135915080821115612ccc57600080fd5b50612cd98b828c01612a70565b999c989b5096995094979396929594505050565b600080600060608486031215612d0257600080fd5b8335612d0d81612a4e565b9250612d1b60208501612877565b91506040840135612d2b81612a4e565b809150509250925092565b60005b83811015612d51578181015183820152602001612d39565b83811115610cca5750506000910152565b60008151808452612d7a816020860160208601612d36565b601f01601f19169290920160200192915050565b602081526000610b386020830184612d62565b801515811461159557600080fd5b60008060408385031215612dc257600080fd5b8235612a2581612da1565b60008060408385031215612de057600080fd5b8235612deb81612a4e565b91506020830135612dfb81612a4e565b809150509250929050565b600080600060608486031215612e1b57600080fd5b612e2484612877565b95602085013595506040909401359392505050565b600080600080600060808688031215612e5157600080fd5b612e5a86612877565b9450612e6860208701612877565b935060408601359250606086013567ffffffffffffffff811115612e8b57600080fd5b612e9788828901612a70565b969995985093965092949392505050565b60008060408385031215612ebb57600080fd5b612ec483612877565b9150602083013567ffffffffffffffff811115612ee057600080fd5b612eec85828601612916565b9150509250929050565b600060208284031215612f0857600080fd5b8135610b3881612a4e565b60008060008060808587031215612f2957600080fd5b612f3285612877565b9350612f4060208601612877565b92506040850135612f5081612a4e565b9396929550929360600135925050565b600181811c90821680612f7457607f821691505b60208210811415612fae577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8183823760009101908152919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b61ffff84168152604060208201526000611657604083018486612fc4565b600061ffff80881683528087166020840152508460408301526080606083015261279a608083018486612fc4565b6000825161304d818460208701612d36565b9190910192915050565b61ffff831681526040602082015260006124be6040830184612d62565b600082601f83011261308557600080fd5b8151613093612935826128ee565b8181528460208386010111156130a857600080fd5b6124be826020830160208701612d36565b6000602082840312156130cb57600080fd5b815167ffffffffffffffff8111156130e257600080fd5b6124be84828501613074565b61ffff8516815260806020820152600061310b6080830186612d62565b67ffffffffffffffff85166040840152828103606084015261279a8185612d62565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561316f5761316f61312d565b500190565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a08301526131c460c083018486612fc4565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000613207606083018486612fc4565b9695505050505050565b60008060008060008060c0878903121561322a57600080fd5b865161323581612a4e565b602088015190965061324681612a4e565b604088015190955061325781612a4e565b606088015190945061326881612a4e565b608088015160a0890151919450925067ffffffffffffffff81111561328c57600080fd5b61329889828a01613074565b9150509295509295509295565b6000828210156132b7576132b761312d565b500390565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006116576060830184612d62565b61ffff8716815260c06020820152600061330e60c0830188612d62565b82810360408401526133208188612d62565b73ffffffffffffffffffffffffffffffffffffffff87811660608601528616608085015283810360a085015290506131c48185612d62565b60006020828403121561336a57600080fd5b8151610b3881612da156fea164736f6c6343000809000a", - "deployedBytecode": "0x6080604052600436106101d75760003560e01c8063715018a611610102578063b353aaa711610095578063eb8d72b711610064578063eb8d72b7146105ae578063ed629c5c146105ce578063f2fde38b146105ee578063f5ecbdbc1461060e57600080fd5b8063b353aaa714610538578063c8ed191014610565578063cbed8b9c1461057b578063d1deba1f1461059b57600080fd5b80638f601f66116100d15780638f601f66146104b5578063901eec16146104ed5780639b57db5f14610503578063af3fb21c1461052357600080fd5b8063715018a6146104075780637533d7881461041c5780637e0ced09146104495780638da5cb5b1461046957600080fd5b80633d8b38f61161017a5780635b8c41e6116101495780635b8c41e61461036557806365f77189146103b457806366ad5c8a146103c7578063708c0db9146103e757600080fd5b80633d8b38f6146102ea57806342d65a8d1461031a578063447705151461033a578063512afd891461034f57600080fd5b80630d265fdb116101b65780630d265fdb1461026957806310ddb1371461027c57806330c593f71461029c5780633496a68e146102ca57600080fd5b80621d3567146101dc57806307810867146101fe57806307e0db1714610249575b600080fd5b3480156101e857600080fd5b506101fc6101f7366004612984565b61062e565b005b34801561020a57600080fd5b50610236610219366004612a09565b606760209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561025557600080fd5b506101fc610264366004612a33565b6107f1565b6101fc610277366004612ab9565b6108dc565b34801561028857600080fd5b506101fc610297366004612a33565b610945565b3480156102a857600080fd5b5060cd546102b79061ffff1681565b60405161ffff9091168152602001610240565b3480156102d657600080fd5b506101fc6102e5366004612b65565b610a06565b3480156102f657600080fd5b5061030a610305366004612b7e565b610a72565b6040519015158152602001610240565b34801561032657600080fd5b506101fc610335366004612b7e565b610b3f565b34801561034657600080fd5b50610236600081565b34801561035b57600080fd5b5061023660ce5481565b34801561037157600080fd5b50610236610380366004612bd1565b609a602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b6101fc6103c2366004612c2f565b610c2e565b3480156103d357600080fd5b506101fc6103e2366004612984565b610c49565b3480156103f357600080fd5b506101fc610402366004612ced565b610cd0565b34801561041357600080fd5b506101fc610eb2565b34801561042857600080fd5b5061043c610437366004612a33565b610f25565b6040516102409190612d8e565b34801561045557600080fd5b506101fc610464366004612daf565b610fbf565b34801561047557600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610240565b3480156104c157600080fd5b506102366104d0366004612dcd565b60d160209081526000928352604080842090915290825290205481565b3480156104f957600080fd5b5061023660d05481565b34801561050f57600080fd5b506101fc61051e366004612e06565b611073565b34801561052f57600080fd5b50610236600181565b34801561054457600080fd5b506065546104909073ffffffffffffffffffffffffffffffffffffffff1681565b34801561057157600080fd5b5061023660cf5481565b34801561058757600080fd5b506101fc610596366004612e39565b61114b565b6101fc6105a9366004612984565b611249565b3480156105ba57600080fd5b506101fc6105c9366004612ea8565b6113d3565b3480156105da57600080fd5b5060cd5461030a9062010000900460ff1681565b3480156105fa57600080fd5b506101fc610609366004612ef6565b61149c565b34801561061a57600080fd5b5061043c610629366004612f13565b611598565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b05760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff8416600090815260666020526040812080546106ce90612f60565b80601f01602080910402602001604051908101604052809291908181526020018280546106fa90612f60565b80156107475780601f1061071c57610100808354040283529160200191610747565b820191906000526020600020905b81548152906001019060200180831161072a57829003601f168201915b505050505090508051845114801561076c575080805190602001208480519060200120145b6107de5760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016106a7565b6107ea85858585611660565b5050505050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146108585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b6065546040517f07e0db1700000000000000000000000000000000000000000000000000000000815261ffff8316600482015273ffffffffffffffffffffffffffffffffffffffff909116906307e0db17906024015b600060405180830381600087803b1580156108c857600080fd5b505af11580156107ea573d6000803e3d6000fd5b333b1561092b5760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f41000000000000000000000000000000000060448201526064016106a7565b61093c87873333898989898961176b565b50505050505050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146109ac5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b6065546040517f10ddb13700000000000000000000000000000000000000000000000000000000815261ffff8316600482015273ffffffffffffffffffffffffffffffffffffffff909116906310ddb137906024016108ae565b60335473ffffffffffffffffffffffffffffffffffffffff163314610a6d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b60ce55565b61ffff831660009081526066602052604081208054829190610a9390612f60565b80601f0160208091040260200160405190810160405280929190818152602001828054610abf90612f60565b8015610b0c5780601f10610ae157610100808354040283529160200191610b0c565b820191906000526020600020905b815481529060010190602001808311610aef57829003601f168201915b505050505090508383604051610b23929190612fb4565b60405180910390208180519060200120149150505b9392505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610ba65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b6065546040517f42d65a8d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906342d65a8d90610c0090869086908690600401612fef565b600060405180830381600087803b158015610c1a57600080fd5b505af115801561093c573d6000803e3d6000fd5b610c3f88883389898989898961176b565b5050505050505050565b333014610cbe5760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d75737420626560448201527f204c7a417070000000000000000000000000000000000000000000000000000060648201526084016106a7565b610cca84848484611a65565b50505050565b600054610100900460ff1680610ce9575060005460ff16155b610d5b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106a7565b600054610100900460ff16158015610d7d576000805461ffff19166101011790555b73ffffffffffffffffffffffffffffffffffffffff8416610e065760405162461bcd60e51b815260206004820152602260248201527f6c7a20656e64706f696e742063616e6e6f74206265207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106a7565b610e0f84611be3565b60cd805461ffff191661ffff85161790556040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152610e6c9084906034016040516020818303038152906040526113d3565b4260d0556969e10de76676d080000060ce558015610cca57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610f195760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b610f236000611ccb565b565b60666020526000908152604090208054610f3e90612f60565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6a90612f60565b8015610fb75780601f10610f8c57610100808354040283529160200191610fb7565b820191906000526020600020905b815481529060010190602001808311610f9a57829003601f168201915b505050505081565b60335473ffffffffffffffffffffffffffffffffffffffff1633146110265760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b60cd805483151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff8216811790925561106f9161ffff908116911617600183611073565b5050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146110da5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b6000811161112a5760405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c6964205f647374476173416d6f756e740000000060448201526064016106a7565b61ffff90921660009081526067602090815260408083209383529290522055565b60335473ffffffffffffffffffffffffffffffffffffffff1633146111b25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b6065546040517fcbed8b9c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063cbed8b9c90611210908890889088908890889060040161300d565b600060405180830381600087803b15801561122a57600080fd5b505af115801561123e573d6000803e3d6000fd5b505050505050505050565b61ffff84166000908152609a6020526040808220905161126a90869061303b565b908152604080516020928190038301902067ffffffffffffffff8616600090815292529020549050806113055760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201527f616765000000000000000000000000000000000000000000000000000000000060648201526084016106a7565b8151602083012081146113805760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f6160448201527f640000000000000000000000000000000000000000000000000000000000000060648201526084016106a7565b61ffff85166000908152609a602052604080822090516113a190879061303b565b908152604080516020928190038301902067ffffffffffffffff8716600090815292529020556107ea85858585611a65565b60335473ffffffffffffffffffffffffffffffffffffffff16331461143a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b61ffff82166000908152606660209081526040909120825161145e928401906127de565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab8282604051611490929190613057565b60405180910390a15050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146115035760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b73ffffffffffffffffffffffffffffffffffffffff811661158c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106a7565b61159581611ccb565b50565b6065546040517ff5ecbdbc00000000000000000000000000000000000000000000000000000000815261ffff8087166004830152851660248201523060448201526064810183905260609173ffffffffffffffffffffffffffffffffffffffff169063f5ecbdbc9060840160006040518083038186803b15801561161b57600080fd5b505afa15801561162f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261165791908101906130b9565b95945050505050565b6040517f66ad5c8a00000000000000000000000000000000000000000000000000000000815230906366ad5c8a906116a29087908790879087906004016130ee565b600060405180830381600087803b1580156116bc57600080fd5b505af19250505080156116cd575060015b610cca578080519060200120609a60008661ffff1661ffff16815260200190815260200160002084604051611702919061303b565b90815260408051918290036020908101832067ffffffffffffffff87166000908152915220919091557fe6f254030bcb01ffd20558175c13fcaed6d1520be7becee4c961b65f79243b0d9061175e9086908690869086906130ee565b60405180910390a1610cca565b73ffffffffffffffffffffffffffffffffffffffff86166117ce5760405162461bcd60e51b815260206004820152601a60248201527f5f746f2063616e6e6f74206265207a65726f206164647265737300000000000060448201526064016106a7565b60d0546117de906201518061315c565b421015611855578460cf60008282546117f7919061315c565b909155505060ce5460cf5411156118505760405162461bcd60e51b815260206004820152601b60248201527f6d617820616d6f756e742070657220646179206578636565646564000000000060448201526064016106a7565b61185f565b60cf8590554260d0555b61188173ffffffffffffffffffffffffffffffffffffffff8a16883088611d42565b6000898989898987876040516020016118a09796959493929190613174565b60408051808303601f1901815291905260cd5490915062010000900460ff16156118de5760cd546118d99061ffff166001866000611e00565b611952565b8351156119525760405162461bcd60e51b8152602060048201526024808201527f4c7a4170703a205f61646170746572506172616d73206d75737420626520656d60448201527f7074792e0000000000000000000000000000000000000000000000000000000060648201526084016106a7565b73ffffffffffffffffffffffffffffffffffffffff808b16600090815260d160209081526040808320938d168352929052205461199090879061315c565b73ffffffffffffffffffffffffffffffffffffffff808c16600090815260d160209081526040808320938e168352929052205560cd546119d79061ffff1682338888611ee5565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d03968a8a8888604051611a5194939291906131d1565b60405180910390a450505050505050505050565b60cd5461ffff858116911614611abd5760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420736f7572636520636861696e49640000000000000000000060448201526064016106a7565b60008060008060008086806020019051810190611ada9190613211565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260d16020908152604080832093891683529290522054959b50939950919750955093509150611b279083906132a5565b73ffffffffffffffffffffffffffffffffffffffff808816600081815260d160209081526040808320948b1683529390529190912091909155611b6b908484612097565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b3868686604051611a51939291906132bc565b600054610100900460ff1680611bfc575060005460ff16155b611c6e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106a7565b600054610100900460ff16158015611c90576000805461ffff19166101011790555b611c99826120f2565b801561106f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610cca9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526121b0565b6000611e0d836022015190565b61ffff8616600090815260676020908152604080832088845290915281205491925090611e3b90849061315c565b905060008111611e8d5760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f742073657400000000000060448201526064016106a7565b80821015611edd5760405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f77000000000060448201526064016106a7565b505050505050565b61ffff851660009081526066602052604081208054611f0390612f60565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2f90612f60565b8015611f7c5780601f10611f5157610100808354040283529160200191611f7c565b820191906000526020600020905b815481529060010190602001808311611f5f57829003601f168201915b50505050509050805160001415611ffb5760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201527f61207472757374656420736f757263650000000000000000000000000000000060648201526084016106a7565b6065546040517fc580310000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063c580310090349061205d908a9086908b908b908b908b906004016132f1565b6000604051808303818588803b15801561207657600080fd5b505af115801561208a573d6000803e3d6000fd5b5050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526120ed9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401611d9c565b505050565b600054610100900460ff168061210b575060005460ff16155b61217d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106a7565b600054610100900460ff1615801561219f576000805461ffff19166101011790555b6121a76122a2565b611c9982612390565b6000612212826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166124af9092919063ffffffff16565b8051909150156120ed57808060200190518101906122309190613358565b6120ed5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106a7565b600054610100900460ff16806122bb575060005460ff16155b61232d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106a7565b600054610100900460ff1615801561234f576000805461ffff19166101011790555b6123576124c6565b61235f6125a3565b801561159557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600054610100900460ff16806123a9575060005460ff16155b61241b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106a7565b600054610100900460ff1615801561243d576000805461ffff19166101011790555b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055801561106f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b60606124be8484600085612659565b949350505050565b600054610100900460ff16806124df575060005460ff16155b6125515760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106a7565b600054610100900460ff1615801561235f576000805461ffff1916610101179055801561159557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600054610100900460ff16806125bc575060005460ff16155b61262e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106a7565b600054610100900460ff16158015612650576000805461ffff19166101011790555b61235f33611ccb565b6060824710156126d15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106a7565b843b61271f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a7565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612748919061303b565b60006040518083038185875af1925050503d8060008114612785576040519150601f19603f3d011682016040523d82523d6000602084013e61278a565b606091505b509150915061279a8282866127a5565b979650505050505050565b606083156127b4575081610b38565b8251156127c45782518084602001fd5b8160405162461bcd60e51b81526004016106a79190612d8e565b8280546127ea90612f60565b90600052602060002090601f01602090048101928261280c5760008555612852565b82601f1061282557805160ff1916838001178555612852565b82800160010185558215612852579182015b82811115612852578251825591602001919060010190612837565b5061285e929150612862565b5090565b5b8082111561285e5760008155600101612863565b803561ffff8116811461288957600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156128e6576128e661288e565b604052919050565b600067ffffffffffffffff8211156129085761290861288e565b50601f01601f191660200190565b600082601f83011261292757600080fd5b813561293a612935826128ee565b6128bd565b81815284602083860101111561294f57600080fd5b816020850160208301376000918101602001919091529392505050565b803567ffffffffffffffff8116811461288957600080fd5b6000806000806080858703121561299a57600080fd5b6129a385612877565b9350602085013567ffffffffffffffff808211156129c057600080fd5b6129cc88838901612916565b94506129da6040880161296c565b935060608701359150808211156129f057600080fd5b506129fd87828801612916565b91505092959194509250565b60008060408385031215612a1c57600080fd5b612a2583612877565b946020939093013593505050565b600060208284031215612a4557600080fd5b610b3882612877565b73ffffffffffffffffffffffffffffffffffffffff8116811461159557600080fd5b60008083601f840112612a8257600080fd5b50813567ffffffffffffffff811115612a9a57600080fd5b602083019150836020828501011115612ab257600080fd5b9250929050565b600080600080600080600060c0888a031215612ad457600080fd5b8735612adf81612a4e565b96506020880135612aef81612a4e565b9550604088013594506060880135612b0681612a4e565b9350608088013567ffffffffffffffff80821115612b2357600080fd5b612b2f8b838c01612916565b945060a08a0135915080821115612b4557600080fd5b50612b528a828b01612a70565b989b979a50959850939692959293505050565b600060208284031215612b7757600080fd5b5035919050565b600080600060408486031215612b9357600080fd5b612b9c84612877565b9250602084013567ffffffffffffffff811115612bb857600080fd5b612bc486828701612a70565b9497909650939450505050565b600080600060608486031215612be657600080fd5b612bef84612877565b9250602084013567ffffffffffffffff811115612c0b57600080fd5b612c1786828701612916565b925050612c266040850161296c565b90509250925092565b60008060008060008060008060e0898b031215612c4b57600080fd5b8835612c5681612a4e565b97506020890135612c6681612a4e565b96506040890135612c7681612a4e565b9550606089013594506080890135612c8d81612a4e565b935060a089013567ffffffffffffffff80821115612caa57600080fd5b612cb68c838d01612916565b945060c08b0135915080821115612ccc57600080fd5b50612cd98b828c01612a70565b999c989b5096995094979396929594505050565b600080600060608486031215612d0257600080fd5b8335612d0d81612a4e565b9250612d1b60208501612877565b91506040840135612d2b81612a4e565b809150509250925092565b60005b83811015612d51578181015183820152602001612d39565b83811115610cca5750506000910152565b60008151808452612d7a816020860160208601612d36565b601f01601f19169290920160200192915050565b602081526000610b386020830184612d62565b801515811461159557600080fd5b60008060408385031215612dc257600080fd5b8235612a2581612da1565b60008060408385031215612de057600080fd5b8235612deb81612a4e565b91506020830135612dfb81612a4e565b809150509250929050565b600080600060608486031215612e1b57600080fd5b612e2484612877565b95602085013595506040909401359392505050565b600080600080600060808688031215612e5157600080fd5b612e5a86612877565b9450612e6860208701612877565b935060408601359250606086013567ffffffffffffffff811115612e8b57600080fd5b612e9788828901612a70565b969995985093965092949392505050565b60008060408385031215612ebb57600080fd5b612ec483612877565b9150602083013567ffffffffffffffff811115612ee057600080fd5b612eec85828601612916565b9150509250929050565b600060208284031215612f0857600080fd5b8135610b3881612a4e565b60008060008060808587031215612f2957600080fd5b612f3285612877565b9350612f4060208601612877565b92506040850135612f5081612a4e565b9396929550929360600135925050565b600181811c90821680612f7457607f821691505b60208210811415612fae577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8183823760009101908152919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b61ffff84168152604060208201526000611657604083018486612fc4565b600061ffff80881683528087166020840152508460408301526080606083015261279a608083018486612fc4565b6000825161304d818460208701612d36565b9190910192915050565b61ffff831681526040602082015260006124be6040830184612d62565b600082601f83011261308557600080fd5b8151613093612935826128ee565b8181528460208386010111156130a857600080fd5b6124be826020830160208701612d36565b6000602082840312156130cb57600080fd5b815167ffffffffffffffff8111156130e257600080fd5b6124be84828501613074565b61ffff8516815260806020820152600061310b6080830186612d62565b67ffffffffffffffff85166040840152828103606084015261279a8185612d62565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561316f5761316f61312d565b500190565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a08301526131c460c083018486612fc4565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000613207606083018486612fc4565b9695505050505050565b60008060008060008060c0878903121561322a57600080fd5b865161323581612a4e565b602088015190965061324681612a4e565b604088015190955061325781612a4e565b606088015190945061326881612a4e565b608088015160a0890151919450925067ffffffffffffffff81111561328c57600080fd5b61329889828a01613074565b9150509295509295509295565b6000828210156132b7576132b761312d565b500390565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006116576060830184612d62565b61ffff8716815260c06020820152600061330e60c0830188612d62565b82810360408401526133208188612d62565b73ffffffffffffffffffffffffffffffffffffffff87811660608601528616608085015283810360a085015290506131c48185612d62565b60006020828403121561336a57600080fd5b8151610b3881612da156fea164736f6c6343000809000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/boba/gateway/src/deployment/contracts/crosschain/L2StandardERC20.json b/packages/boba/gateway/src/deployment/contracts/crosschain/L2StandardERC20.json deleted file mode 100644 index b5b9c82326..0000000000 --- a/packages/boba/gateway/src/deployment/contracts/crosschain/L2StandardERC20.json +++ /dev/null @@ -1,431 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "L2StandardERC20", - "sourceName": "contracts/standards/L2StandardERC20.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_l2Bridge", - "type": "address" - }, - { - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "internalType": "string", - "name": "_name", - "type": "string" - }, - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "decimals_", - "type": "uint8" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_account", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "Burn", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_account", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "Mint", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "l1Token", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "l2Bridge", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "mint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60a06040523480156200001157600080fd5b50604051620013fd380380620013fd833981016040819052620000349162000234565b8251839083906200004d906003906020850190620000a4565b50805162000063906004906020840190620000a4565b5050600580546001600160a01b039687166001600160a01b0319918216179091556006805497909616961695909517909355505060ff16608052506200031d565b828054620000b290620002e0565b90600052602060002090601f016020900481019282620000d6576000855562000121565b82601f10620000f157805160ff191683800117855562000121565b8280016001018555821562000121579182015b828111156200012157825182559160200191906001019062000104565b506200012f92915062000133565b5090565b5b808211156200012f576000815560010162000134565b80516001600160a01b03811681146200016257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200018f57600080fd5b81516001600160401b0380821115620001ac57620001ac62000167565b604051601f8301601f19908116603f01168101908282118183101715620001d757620001d762000167565b81604052838152602092508683858801011115620001f457600080fd5b600091505b83821015620002185785820183015181830184015290820190620001f9565b838211156200022a5760008385830101525b9695505050505050565b600080600080600060a086880312156200024d57600080fd5b62000258866200014a565b945062000268602087016200014a565b60408701519094506001600160401b03808211156200028657600080fd5b6200029489838a016200017d565b94506060880151915080821115620002ab57600080fd5b50620002ba888289016200017d565b925050608086015160ff81168114620002d257600080fd5b809150509295509295909350565b600181811c90821680620002f557607f821691505b602082108114156200031757634e487b7160e01b600052602260045260246000fd5b50919050565b6080516110c462000339600039600061018101526110c46000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a9059cbb11610066578063a9059cbb14610237578063ae1f6aaf1461024a578063c01e1bd61461028f578063dd62ed3e146102af57600080fd5b806370a08231146101d357806395d89b41146102095780639dc29fac14610211578063a457c2d71461022457600080fd5b806323b872dd116100d357806323b872dd14610167578063313ce5671461017a57806339509351146101ab57806340c10f19146101be57600080fd5b806301ffc9a71461010557806306fdde031461012d578063095ea7b31461014257806318160ddd14610155575b600080fd5b610118610113366004610e6c565b6102f5565b60405190151581526020015b60405180910390f35b6101356103b5565b6040516101249190610eb5565b610118610150366004610f51565b610447565b6002545b604051908152602001610124565b610118610175366004610f7b565b61045d565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610124565b6101186101b9366004610f51565b61052e565b6101d16101cc366004610f51565b610577565b005b6101596101e1366004610fb7565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61013561063c565b6101d161021f366004610f51565b61064b565b610118610232366004610f51565b610704565b610118610245366004610f51565b6107c2565b60065461026a9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b60055461026a9073ffffffffffffffffffffffffffffffffffffffff1681565b6101596102bd366004610fd2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60007f01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e27f1d1d8b63000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000084167f01ffc9a70000000000000000000000000000000000000000000000000000000014806103ad57507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b949350505050565b6060600380546103c490611005565b80601f01602080910402602001604051908101604052809291908181526020018280546103f090611005565b801561043d5780601f106104125761010080835404028352916020019161043d565b820191906000526020600020905b81548152906001019060200180831161042057829003601f168201915b5050505050905090565b60006104543384846107cf565b50600192915050565b600061046a84848461094f565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338452909152902054828110156105165760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61052385338584036107cf565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091610454918590610572908690611088565b6107cf565b60065473ffffffffffffffffffffffffffffffffffffffff1633146105de5760405162461bcd60e51b815260206004820181905260248201527f4f6e6c79204c32204272696467652063616e206d696e7420616e64206275726e604482015260640161050d565b6105e88282610bb5565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161063091815260200190565b60405180910390a25050565b6060600480546103c490611005565b60065473ffffffffffffffffffffffffffffffffffffffff1633146106b25760405162461bcd60e51b815260206004820181905260248201527f4f6e6c79204c32204272696467652063616e206d696e7420616e64206275726e604482015260640161050d565b6106bc8282610cbb565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161063091815260200190565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054828110156107ab5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161050d565b6107b833858584036107cf565b5060019392505050565b600061045433848461094f565b73ffffffffffffffffffffffffffffffffffffffff83166108575760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161050d565b73ffffffffffffffffffffffffffffffffffffffff82166108e05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161050d565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166109d85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161050d565b73ffffffffffffffffffffffffffffffffffffffff8216610a615760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161050d565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161050d565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b41908490611088565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ba791815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610c185760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161050d565b8060026000828254610c2a9190611088565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610c64908490611088565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610d445760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161050d565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610de05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161050d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610e1c9084906110a0565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610942565b600060208284031215610e7e57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610eae57600080fd5b9392505050565b600060208083528351808285015260005b81811015610ee257858101830151858201604001528201610ec6565b81811115610ef4576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4c57600080fd5b919050565b60008060408385031215610f6457600080fd5b610f6d83610f28565b946020939093013593505050565b600080600060608486031215610f9057600080fd5b610f9984610f28565b9250610fa760208501610f28565b9150604084013590509250925092565b600060208284031215610fc957600080fd5b610eae82610f28565b60008060408385031215610fe557600080fd5b610fee83610f28565b9150610ffc60208401610f28565b90509250929050565b600181811c9082168061101957607f821691505b60208210811415611053577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561109b5761109b611059565b500190565b6000828210156110b2576110b2611059565b50039056fea164736f6c6343000809000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a9059cbb11610066578063a9059cbb14610237578063ae1f6aaf1461024a578063c01e1bd61461028f578063dd62ed3e146102af57600080fd5b806370a08231146101d357806395d89b41146102095780639dc29fac14610211578063a457c2d71461022457600080fd5b806323b872dd116100d357806323b872dd14610167578063313ce5671461017a57806339509351146101ab57806340c10f19146101be57600080fd5b806301ffc9a71461010557806306fdde031461012d578063095ea7b31461014257806318160ddd14610155575b600080fd5b610118610113366004610e6c565b6102f5565b60405190151581526020015b60405180910390f35b6101356103b5565b6040516101249190610eb5565b610118610150366004610f51565b610447565b6002545b604051908152602001610124565b610118610175366004610f7b565b61045d565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610124565b6101186101b9366004610f51565b61052e565b6101d16101cc366004610f51565b610577565b005b6101596101e1366004610fb7565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61013561063c565b6101d161021f366004610f51565b61064b565b610118610232366004610f51565b610704565b610118610245366004610f51565b6107c2565b60065461026a9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b60055461026a9073ffffffffffffffffffffffffffffffffffffffff1681565b6101596102bd366004610fd2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60007f01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e27f1d1d8b63000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000084167f01ffc9a70000000000000000000000000000000000000000000000000000000014806103ad57507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b949350505050565b6060600380546103c490611005565b80601f01602080910402602001604051908101604052809291908181526020018280546103f090611005565b801561043d5780601f106104125761010080835404028352916020019161043d565b820191906000526020600020905b81548152906001019060200180831161042057829003601f168201915b5050505050905090565b60006104543384846107cf565b50600192915050565b600061046a84848461094f565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338452909152902054828110156105165760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61052385338584036107cf565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091610454918590610572908690611088565b6107cf565b60065473ffffffffffffffffffffffffffffffffffffffff1633146105de5760405162461bcd60e51b815260206004820181905260248201527f4f6e6c79204c32204272696467652063616e206d696e7420616e64206275726e604482015260640161050d565b6105e88282610bb5565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161063091815260200190565b60405180910390a25050565b6060600480546103c490611005565b60065473ffffffffffffffffffffffffffffffffffffffff1633146106b25760405162461bcd60e51b815260206004820181905260248201527f4f6e6c79204c32204272696467652063616e206d696e7420616e64206275726e604482015260640161050d565b6106bc8282610cbb565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161063091815260200190565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054828110156107ab5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161050d565b6107b833858584036107cf565b5060019392505050565b600061045433848461094f565b73ffffffffffffffffffffffffffffffffffffffff83166108575760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161050d565b73ffffffffffffffffffffffffffffffffffffffff82166108e05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161050d565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166109d85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161050d565b73ffffffffffffffffffffffffffffffffffffffff8216610a615760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161050d565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161050d565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b41908490611088565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ba791815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610c185760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161050d565b8060026000828254610c2a9190611088565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610c64908490611088565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610d445760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161050d565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610de05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161050d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610e1c9084906110a0565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610942565b600060208284031215610e7e57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610eae57600080fd5b9392505050565b600060208083528351808285015260005b81811015610ee257858101830151858201604001528201610ec6565b81811115610ef4576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4c57600080fd5b919050565b60008060408385031215610f6457600080fd5b610f6d83610f28565b946020939093013593505050565b600080600060608486031215610f9057600080fd5b610f9984610f28565b9250610fa760208501610f28565b9150604084013590509250925092565b600060208284031215610fc957600080fd5b610eae82610f28565b60008060408385031215610fe557600080fd5b610fee83610f28565b9150610ffc60208401610f28565b90509250929050565b600181811c9082168061101957607f821691505b60208210811415611053577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561109b5761109b611059565b500190565b6000828210156110b2576110b2611059565b50039056fea164736f6c6343000809000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/boba/gateway/src/deployment/contracts/crosschain/LZEndpointMock.json b/packages/boba/gateway/src/deployment/contracts/crosschain/LZEndpointMock.json deleted file mode 100644 index 41a125f88e..0000000000 --- a/packages/boba/gateway/src/deployment/contracts/crosschain/LZEndpointMock.json +++ /dev/null @@ -1,913 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "LZEndpointMock", - "sourceName": "contracts/test-helpers/mocks/LZEndpointMock.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "uint16", - "name": "_chainId", - "type": "uint16" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint16", - "name": "srcChainId", - "type": "uint16" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "srcAddress", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "uint64", - "name": "nonce", - "type": "uint64" - }, - { - "indexed": false, - "internalType": "address", - "name": "dstAddress", - "type": "address" - } - ], - "name": "PayloadCleared", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint16", - "name": "srcChainId", - "type": "uint16" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "srcAddress", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "address", - "name": "dstAddress", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint64", - "name": "nonce", - "type": "uint64" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "payload", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "reason", - "type": "bytes" - } - ], - "name": "PayloadStored", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint16", - "name": "chainId", - "type": "uint16" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "srcAddress", - "type": "bytes" - } - ], - "name": "UaForceResumeReceive", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_a", - "type": "address" - } - ], - "name": "addrToPackedBytes", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "blockNextMsg", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_payload", - "type": "bytes" - }, - { - "internalType": "bool", - "name": "", - "type": "bool" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "estimateFees", - "outputs": [ - { - "internalType": "uint256", - "name": "_nativeFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_zroFee", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - } - ], - "name": "forceResumeReceive", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "getChainId", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "", - "type": "uint16" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "getConfig", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_chainID", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - } - ], - "name": "getInboundNonce", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - } - ], - "name": "getLengthOfQueue", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_chainID", - "type": "uint16" - }, - { - "internalType": "address", - "name": "_srcAddress", - "type": "address" - } - ], - "name": "getOutboundNonce", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "getReceiveLibraryAddress", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "getReceiveVersion", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "getSendLibraryAddress", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "getSendVersion", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - } - ], - "name": "hasStoredPayload", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "inboundNonce", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "isReceivingPayload", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "isSendingPayload", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "lzEndpointLookup", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "mockBlockConfirmations", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "mockChainId", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "mockLayerZeroVersion", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "mockLibraryVersion", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "mockOracle", - "outputs": [ - { - "internalType": "address payable", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "mockRelayer", - "outputs": [ - { - "internalType": "address payable", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "mockStaticNativeFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "msgsToDeliver", - "outputs": [ - { - "internalType": "address", - "name": "dstAddress", - "type": "address" - }, - { - "internalType": "uint64", - "name": "nonce", - "type": "uint64" - }, - { - "internalType": "bytes", - "name": "payload", - "type": "bytes" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "nativeFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "outboundNonce", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_b", - "type": "bytes" - } - ], - "name": "packedBytesToAddr", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - }, - { - "internalType": "address", - "name": "_dstAddress", - "type": "address" - }, - { - "internalType": "uint64", - "name": "_nonce", - "type": "uint64" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_payload", - "type": "bytes" - } - ], - "name": "receivePayload", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_payload", - "type": "bytes" - } - ], - "name": "retryPayload", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_chainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_destination", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_payload", - "type": "bytes" - }, - { - "internalType": "address payable", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_adapterParams", - "type": "bytes" - } - ], - "name": "send", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "", - "type": "uint16" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "setConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "destAddr", - "type": "address" - }, - { - "internalType": "address", - "name": "lzEndpointAddr", - "type": "address" - } - ], - "name": "setDestLzEndpoint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_nativeFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_zroFee", - "type": "uint256" - } - ], - "name": "setEstimatedFees", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "name": "setReceiveVersion", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "name": "setSendVersion", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "storedPayload", - "outputs": [ - { - "internalType": "uint64", - "name": "payloadLength", - "type": "uint64" - }, - { - "internalType": "address", - "name": "dstAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "payloadHash", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "zroFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b506040516200299138038062002991833981016040819052620000349162000061565b602a60055560068054600161ffff19918216811790925581541661ffff929092169190911790556200008e565b6000602082840312156200007457600080fd5b815161ffff811681146200008757600080fd5b9392505050565b6128f3806200009e6000396000f3fe6080604052600436106102a05760003560e01c8063996f79c01161016e578063ca066b35116100cb578063db14f3051161007f578063e97a448a11610064578063e97a448a14610862578063f5ecbdbc14610938578063fdc07c701461096a57600080fd5b8063db14f30514610907578063e961a9521461092257600080fd5b8063d23104f1116100b0578063d23104f114610897578063da1a7c9a146102f8578063dab31277146108d457600080fd5b8063ca066b3514610862578063cbed8b9c1461087657600080fd5b8063b208649911610122578063c2fa481311610107578063c2fa4813146107ec578063c58031001461080c578063c81b383a1461081f57600080fd5b8063b20864991461073c578063c08f15a11461077e57600080fd5b8063aaff5f1611610153578063aaff5f16146106eb578063af406aa51461070b578063b12107701461072157600080fd5b8063996f79c0146106d55780639c729da11461050f57600080fd5b806340a7bb101161021c57806371ba2fd6116101d05780637a145748116101b55780637a145748146105e95780637f6df8e6146106625780639924d33b1461068257600080fd5b806371ba2fd61461050f57806376a386dc1461052f57600080fd5b80634f055b04116102015780634f055b04146104515780635952c4ec1461047e5780635b301135146104a257600080fd5b806340a7bb10146103fc57806342d65a8d1461043157600080fd5b80630eaf6ea61161027357806312a9ee6b1161025857806312a9ee6b1461038e5780632646af08146103bd5780633408e470146103e357600080fd5b80630eaf6ea61461035e57806310ddb137146102d857600080fd5b806305bc710f146102a557806307e0db17146102d8578063096568f6146102f857806309eddf5414610319575b600080fd5b3480156102b157600080fd5b506004546102c09061ffff1681565b60405161ffff90911681526020015b60405180910390f35b3480156102e457600080fd5b506102f66102f3366004611d8a565b50565b005b34801561030457600080fd5b506102c0610313366004611dce565b50600190565b34801561032557600080fd5b50610339610334366004611e34565b61098a565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102cf565b34801561036a57600080fd5b5061037e610379366004611e76565b6109c5565b60405190151581526020016102cf565b34801561039a57600080fd5b506103ae6103a9366004611fa3565b610a0a565b6040516102cf93929190612065565b3480156103c957600080fd5b506102f66103d83660046120ad565b600791909155600855565b3480156103ef57600080fd5b5060015461ffff166102c0565b34801561040857600080fd5b5061041c6104173660046120cf565b610b26565b604080519283526020830191909152016102cf565b34801561043d57600080fd5b506102f661044c366004611e76565b610b49565b34801561045d57600080fd5b506002546103399073ffffffffffffffffffffffffffffffffffffffff1681565b34801561048a57600080fd5b5061049460035481565b6040519081526020016102cf565b3480156104ae57600080fd5b506105026104bd366004611dce565b6040805160609290921b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020830152805180830360140181526034909201905290565b6040516102cf9190612170565b34801561051b57600080fd5b5061033961052a366004611dce565b503090565b34801561053b57600080fd5b506105ae61054a366004612183565b600c60209081526000928352604090922081518083018401805192815290840192909301919091209152805460019091015467ffffffffffffffff82169168010000000000000000900473ffffffffffffffffffffffffffffffffffffffff169083565b6040805167ffffffffffffffff909416845273ffffffffffffffffffffffffffffffffffffffff9092166020840152908201526060016102cf565b3480156105f557600080fd5b506106496106043660046121d1565b61ffff82166000908152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205467ffffffffffffffff1692915050565b60405167ffffffffffffffff90911681526020016102cf565b34801561066e57600080fd5b5061049461067d366004611e76565b610cee565b34801561068e57600080fd5b5061064961069d366004612183565b600a602090815260009283526040909220815180830184018051928152908401929093019190912091525467ffffffffffffffff1681565b3480156106e157600080fd5b5061049460075481565b3480156106f757600080fd5b506102f6610706366004612208565b610d2a565b34801561071757600080fd5b5061049460085481565b34801561072d57600080fd5b506006546102c09061ffff1681565b34801561074857600080fd5b506106496107573660046121d1565b600b60209081526000928352604080842090915290825290205467ffffffffffffffff1681565b34801561078a57600080fd5b506102f6610799366004612289565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b3480156107f857600080fd5b506102f66108073660046122a7565b610fc6565b6102f661081a36600461235f565b6116f7565b34801561082b57600080fd5b5061033961083a366004611dce565b60006020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561086e57600080fd5b50600061037e565b34801561088257600080fd5b506102f661089136600461242c565b50505050565b3480156108a357600080fd5b506102f6600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b3480156108e057600080fd5b506001546103399062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561091357600080fd5b506001546102c09061ffff1681565b34801561092e57600080fd5b5061049460055481565b34801561094457600080fd5b50610502610953366004612494565b604080516020810190915260008152949350505050565b34801561097657600080fd5b50610649610985366004611e76565b61198a565b600080604051600284016002860382377ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60151949350505050565b61ffff83166000908152600c602052604080822090518291906109eb90869086906124e1565b9081526040519081900360200190206001015415159150509392505050565b600d6020908152600084815260409020835180850183018051928152908301928501929092209152805482908110610a4157600080fd5b60009182526020909120600290910201805460018201805473ffffffffffffffffffffffffffffffffffffffff831696507401000000000000000000000000000000000000000090920467ffffffffffffffff169450919250610aa3906124f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610acf906124f1565b8015610b1c5780601f10610af157610100808354040283529160200191610b1c565b820191906000526020600020905b815481529060010190602001808311610aff57829003601f168201915b5050505050905083565b6000808451600754610b389190612574565b915060085490509550959350505050565b61ffff83166000908152600c60205260408082209051610b6c90859085906124e1565b9081526040519081900360200190206001810154909150610bee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4c617965725a65726f3a206e6f2073746f726564207061796c6f61640000000060448201526064015b60405180910390fd5b805468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610c7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4c617965725a65726f3a20696e76616c69642063616c6c6572000000000000006044820152606401610be5565b80547fffffffff00000000000000000000000000000000000000000000000000000000168155600060018201556040517f23d2684f396e92a6e2ff2d16f98e6fea00d50cb27a64b531bc0748f730211f9890610cdb908690869086906125fa565b60405180910390a16108918484846119d0565b61ffff83166000908152600d60205260408082209051610d1190859085906124e1565b9081526040519081900360200190205490509392505050565b61ffff85166000908152600c60205260408082209051610d4d90879087906124e1565b9081526040519081900360200190206001810154909150610dca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4c617965725a65726f3a206e6f2073746f726564207061796c6f6164000000006044820152606401610be5565b805467ffffffffffffffff1682148015610dfe575080600101548383604051610df49291906124e1565b6040518091039020145b610e64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4c617965725a65726f3a20696e76616c6964207061796c6f61640000000000006044820152606401610be5565b80547fffffffff000000000000000000000000000000000000000000000000000000008116825560006001830181905561ffff88168152600a602052604080822090516801000000000000000090930473ffffffffffffffffffffffffffffffffffffffff1692610ed890899089906124e1565b908152604051908190036020018120547e1d356700000000000000000000000000000000000000000000000000000000825267ffffffffffffffff16915073ffffffffffffffffffffffffffffffffffffffff831690621d356790610f4b908b908b908b9087908c908c90600401612618565b600060405180830381600087803b158015610f6557600080fd5b505af1158015610f79573d6000803e3d6000fd5b505050507f612434f39581c8e7d99746c9c20c6eb0ce8c0eb99f007c5719d620841370957d8888888486604051610fb4959493929190612666565b60405180910390a15050505050505050565b61ffff88166000908152600c60205260408082209051610fe9908a908a906124e1565b90815260200160405180910390209050600a60008a61ffff1661ffff16815260200190815260200160002088886040516110249291906124e1565b908152604051908190036020019020805460009061104b9067ffffffffffffffff166126bc565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905567ffffffffffffffff168567ffffffffffffffff16146110ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c617965725a65726f3a2077726f6e67206e6f6e6365000000000000000000006044820152606401610be5565b6001810154156114e25761ffff89166000908152600d60205260408082209051611119908b908b906124e1565b90815260200160405180910390209050600060405180606001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018867ffffffffffffffff16815260200186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250825490915015611435578154600181810184556000848152602090819020845160029094020180548286015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff909516949094179390931783556040840151805185949361124693908501920190611c29565b50505060005b825461125a906001906126e4565b81101561137c57828181548110611273576112736126fb565b90600052602060002090600202018382600161128f919061272a565b8154811061129f5761129f6126fb565b600091825260209091208254600290920201805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117825583547fffffffff0000000000000000000000000000000000000000000000000000000090931617740100000000000000000000000000000000000000009283900467ffffffffffffffff16909202919091178155600180830180549183019161135a906124f1565b611365929190611cad565b50905050808061137490612742565b91505061124c565b508082600081548110611391576113916126fb565b6000918252602091829020835160029092020180548484015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117815560408301518051919261142c92600185019290910190611c29565b509050506114db565b8154600181810184556000848152602090819020845160029094020180548286015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff90951694909417939093178355604084015180518594936114d793908501920190611c29565b5050505b50506116ec565b60095460ff161561165f5760405180606001604052808484905067ffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff16815260200184846040516115379291906124e1565b604080519182900390912090915261ffff8b166000908152600c6020528190209051611566908b908b906124e1565b908152604080519182900360209081018320845181548684015173ffffffffffffffffffffffffffffffffffffffff1668010000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090911667ffffffffffffffff909216919091171781559382015160019094019390935591810182526000815290517f0f9e4d95b62f08222d612b5ab92039cd8fbbbea550a95e8df9f927436bbdf5db9161162a918c918c918c918c918c918b918b919061277b565b60405180910390a1600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556116ec565b6040517e1d356700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690621d3567906116b9908c908c908c908b908a908a90600401612618565b600060405180830381600087803b1580156116d357600080fd5b505af11580156116e7573d6000803e3d6000fd5b505050505b505050505050505050565b6000611703888861098a565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526020819052604090205491925016806117bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c617965725a65726f4d6f636b3a2064657374696e6174696f6e204c6179657260448201527f5a65726f20456e64706f696e74206e6f7420666f756e640000000000000000006064820152608401610be5565b6007546117c9908790612574565b341015611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4c617965725a65726f4d6f636b3a206e6f7420656e6f756768206e617469766560448201527f20666f72206665657300000000000000000000000000000000000000000000006064820152608401610be5565b61ffff8a166000908152600b6020908152604080832033845290915281208054829061188d9067ffffffffffffffff166126bc565b825467ffffffffffffffff8281166101009490940a9384029302191691909117909155604080517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b1660208201528151601481830301815260349091019091529091508273ffffffffffffffffffffffffffffffffffffffff1663c2fa4813600160009054906101000a900461ffff1683878660008f8f6040518863ffffffff1660e01b815260040161194a97969594939291906127fb565b600060405180830381600087803b15801561196457600080fd5b505af1158015611978573d6000803e3d6000fd5b50505050505050505050505050505050565b61ffff83166000908152600a602052604080822090516119ad90859085906124e1565b9081526040519081900360200190205467ffffffffffffffff1690509392505050565b61ffff83166000908152600d602052604080822090516119f390859085906124e1565b908152602001604051809103902090505b8054156108915780546000908290611a1e906001906126e4565b81548110611a2e57611a2e6126fb565b6000918252602091829020604080516060810182526002909302909101805473ffffffffffffffffffffffffffffffffffffffff8116845267ffffffffffffffff74010000000000000000000000000000000000000000909104169383019390935260018301805492939291840191611aa6906124f1565b80601f0160208091040260200160405190810160405280929190818152602001828054611ad2906124f1565b8015611b1f5780601f10611af457610100808354040283529160200191611b1f565b820191906000526020600020905b815481529060010190602001808311611b0257829003601f168201915b5050505050815250509050806000015173ffffffffffffffffffffffffffffffffffffffff16621d3567868686856020015186604001516040518663ffffffff1660e01b8152600401611b7695949392919061286b565b600060405180830381600087803b158015611b9057600080fd5b505af1158015611ba4573d6000803e3d6000fd5b5050505081805480611bb857611bb86128b7565b60008281526020812060027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019283020180547fffffffff0000000000000000000000000000000000000000000000000000000016815590611c1f6001830182611d28565b5050905550611a04565b828054611c35906124f1565b90600052602060002090601f016020900481019282611c575760008555611c9d565b82601f10611c7057805160ff1916838001178555611c9d565b82800160010185558215611c9d579182015b82811115611c9d578251825591602001919060010190611c82565b50611ca9929150611d5e565b5090565b828054611cb9906124f1565b90600052602060002090601f016020900481019282611cdb5760008555611c9d565b82601f10611cec5780548555611c9d565b82800160010185558215611c9d57600052602060002091601f016020900482015b82811115611c9d578254825591600101919060010190611d0d565b508054611d34906124f1565b6000825580601f10611d44575050565b601f0160209004906000526020600020908101906102f391905b5b80821115611ca95760008155600101611d5f565b803561ffff81168114611d8557600080fd5b919050565b600060208284031215611d9c57600080fd5b611da582611d73565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146102f357600080fd5b600060208284031215611de057600080fd5b8135611da581611dac565b60008083601f840112611dfd57600080fd5b50813567ffffffffffffffff811115611e1557600080fd5b602083019150836020828501011115611e2d57600080fd5b9250929050565b60008060208385031215611e4757600080fd5b823567ffffffffffffffff811115611e5e57600080fd5b611e6a85828601611deb565b90969095509350505050565b600080600060408486031215611e8b57600080fd5b611e9484611d73565b9250602084013567ffffffffffffffff811115611eb057600080fd5b611ebc86828701611deb565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611f0957600080fd5b813567ffffffffffffffff80821115611f2457611f24611ec9565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611f6a57611f6a611ec9565b81604052838152866020858801011115611f8357600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215611fb857600080fd5b611fc184611d73565b9250602084013567ffffffffffffffff811115611fdd57600080fd5b611fe986828701611ef8565b925050604084013590509250925092565b6000815180845260005b8181101561202057602081850181015186830182015201612004565b81811115612032576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8416815267ffffffffffffffff831660208201526060604082015260006120a46060830184611ffa565b95945050505050565b600080604083850312156120c057600080fd5b50508035926020909101359150565b600080600080600060a086880312156120e757600080fd5b6120f086611d73565b9450602086013561210081611dac565b9350604086013567ffffffffffffffff8082111561211d57600080fd5b61212989838a01611ef8565b945060608801359150811515821461214057600080fd5b9092506080870135908082111561215657600080fd5b5061216388828901611ef8565b9150509295509295909350565b602081526000611da56020830184611ffa565b6000806040838503121561219657600080fd5b61219f83611d73565b9150602083013567ffffffffffffffff8111156121bb57600080fd5b6121c785828601611ef8565b9150509250929050565b600080604083850312156121e457600080fd5b6121ed83611d73565b915060208301356121fd81611dac565b809150509250929050565b60008060008060006060868803121561222057600080fd5b61222986611d73565b9450602086013567ffffffffffffffff8082111561224657600080fd5b61225289838a01611deb565b9096509450604088013591508082111561226b57600080fd5b5061227888828901611deb565b969995985093965092949392505050565b6000806040838503121561229c57600080fd5b82356121ed81611dac565b60008060008060008060008060c0898b0312156122c357600080fd5b6122cc89611d73565b9750602089013567ffffffffffffffff808211156122e957600080fd5b6122f58c838d01611deb565b909950975060408b0135915061230a82611dac565b90955060608a013590808216821461232157600080fd5b90945060808a0135935060a08a0135908082111561233e57600080fd5b5061234b8b828c01611deb565b999c989b5096995094979396929594505050565b60008060008060008060008060c0898b03121561237b57600080fd5b61238489611d73565b9750602089013567ffffffffffffffff808211156123a157600080fd5b6123ad8c838d01611deb565b909950975060408b01359150808211156123c657600080fd5b6123d28c838d01611deb565b909750955060608b013591506123e782611dac565b90935060808a0135906123f982611dac565b90925060a08a0135908082111561240f57600080fd5b5061241c8b828c01611ef8565b9150509295985092959890939650565b6000806000806080858703121561244257600080fd5b61244b85611d73565b935061245960208601611d73565b925060408501359150606085013567ffffffffffffffff81111561247c57600080fd5b61248887828801611ef8565b91505092959194509250565b600080600080608085870312156124aa57600080fd5b6124b385611d73565b93506124c160208601611d73565b925060408501356124d181611dac565b9396929550929360600135925050565b8183823760009101908152919050565b600181811c9082168061250557607f821691505b6020821081141561253f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156125ac576125ac612545565b500290565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b61ffff841681526040602082015260006120a46040830184866125b1565b61ffff871681526080602082015260006126366080830187896125b1565b67ffffffffffffffff8616604084015282810360608401526126598185876125b1565b9998505050505050505050565b61ffff861681526080602082015260006126846080830186886125b1565b905067ffffffffffffffff8416604083015273ffffffffffffffffffffffffffffffffffffffff831660608301529695505050505050565b600067ffffffffffffffff808316818114156126da576126da612545565b6001019392505050565b6000828210156126f6576126f6612545565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000821982111561273d5761273d612545565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561277457612774612545565b5060010190565b61ffff8916815260c06020820152600061279960c08301898b6125b1565b73ffffffffffffffffffffffffffffffffffffffff8816604084015267ffffffffffffffff8716606084015282810360808401526127d88186886125b1565b905082810360a08401526127ec8185611ffa565b9b9a5050505050505050505050565b61ffff8816815260c06020820152600061281860c0830189611ffa565b73ffffffffffffffffffffffffffffffffffffffff8816604084015267ffffffffffffffff8716606084015285608084015282810360a084015261285d8185876125b1565b9a9950505050505050505050565b61ffff861681526080602082015260006128896080830186886125b1565b67ffffffffffffffff8516604084015282810360608401526128ab8185611ffa565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c6343000809000a", - "deployedBytecode": "0x6080604052600436106102a05760003560e01c8063996f79c01161016e578063ca066b35116100cb578063db14f3051161007f578063e97a448a11610064578063e97a448a14610862578063f5ecbdbc14610938578063fdc07c701461096a57600080fd5b8063db14f30514610907578063e961a9521461092257600080fd5b8063d23104f1116100b0578063d23104f114610897578063da1a7c9a146102f8578063dab31277146108d457600080fd5b8063ca066b3514610862578063cbed8b9c1461087657600080fd5b8063b208649911610122578063c2fa481311610107578063c2fa4813146107ec578063c58031001461080c578063c81b383a1461081f57600080fd5b8063b20864991461073c578063c08f15a11461077e57600080fd5b8063aaff5f1611610153578063aaff5f16146106eb578063af406aa51461070b578063b12107701461072157600080fd5b8063996f79c0146106d55780639c729da11461050f57600080fd5b806340a7bb101161021c57806371ba2fd6116101d05780637a145748116101b55780637a145748146105e95780637f6df8e6146106625780639924d33b1461068257600080fd5b806371ba2fd61461050f57806376a386dc1461052f57600080fd5b80634f055b04116102015780634f055b04146104515780635952c4ec1461047e5780635b301135146104a257600080fd5b806340a7bb10146103fc57806342d65a8d1461043157600080fd5b80630eaf6ea61161027357806312a9ee6b1161025857806312a9ee6b1461038e5780632646af08146103bd5780633408e470146103e357600080fd5b80630eaf6ea61461035e57806310ddb137146102d857600080fd5b806305bc710f146102a557806307e0db17146102d8578063096568f6146102f857806309eddf5414610319575b600080fd5b3480156102b157600080fd5b506004546102c09061ffff1681565b60405161ffff90911681526020015b60405180910390f35b3480156102e457600080fd5b506102f66102f3366004611d8a565b50565b005b34801561030457600080fd5b506102c0610313366004611dce565b50600190565b34801561032557600080fd5b50610339610334366004611e34565b61098a565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102cf565b34801561036a57600080fd5b5061037e610379366004611e76565b6109c5565b60405190151581526020016102cf565b34801561039a57600080fd5b506103ae6103a9366004611fa3565b610a0a565b6040516102cf93929190612065565b3480156103c957600080fd5b506102f66103d83660046120ad565b600791909155600855565b3480156103ef57600080fd5b5060015461ffff166102c0565b34801561040857600080fd5b5061041c6104173660046120cf565b610b26565b604080519283526020830191909152016102cf565b34801561043d57600080fd5b506102f661044c366004611e76565b610b49565b34801561045d57600080fd5b506002546103399073ffffffffffffffffffffffffffffffffffffffff1681565b34801561048a57600080fd5b5061049460035481565b6040519081526020016102cf565b3480156104ae57600080fd5b506105026104bd366004611dce565b6040805160609290921b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020830152805180830360140181526034909201905290565b6040516102cf9190612170565b34801561051b57600080fd5b5061033961052a366004611dce565b503090565b34801561053b57600080fd5b506105ae61054a366004612183565b600c60209081526000928352604090922081518083018401805192815290840192909301919091209152805460019091015467ffffffffffffffff82169168010000000000000000900473ffffffffffffffffffffffffffffffffffffffff169083565b6040805167ffffffffffffffff909416845273ffffffffffffffffffffffffffffffffffffffff9092166020840152908201526060016102cf565b3480156105f557600080fd5b506106496106043660046121d1565b61ffff82166000908152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205467ffffffffffffffff1692915050565b60405167ffffffffffffffff90911681526020016102cf565b34801561066e57600080fd5b5061049461067d366004611e76565b610cee565b34801561068e57600080fd5b5061064961069d366004612183565b600a602090815260009283526040909220815180830184018051928152908401929093019190912091525467ffffffffffffffff1681565b3480156106e157600080fd5b5061049460075481565b3480156106f757600080fd5b506102f6610706366004612208565b610d2a565b34801561071757600080fd5b5061049460085481565b34801561072d57600080fd5b506006546102c09061ffff1681565b34801561074857600080fd5b506106496107573660046121d1565b600b60209081526000928352604080842090915290825290205467ffffffffffffffff1681565b34801561078a57600080fd5b506102f6610799366004612289565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b3480156107f857600080fd5b506102f66108073660046122a7565b610fc6565b6102f661081a36600461235f565b6116f7565b34801561082b57600080fd5b5061033961083a366004611dce565b60006020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561086e57600080fd5b50600061037e565b34801561088257600080fd5b506102f661089136600461242c565b50505050565b3480156108a357600080fd5b506102f6600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b3480156108e057600080fd5b506001546103399062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561091357600080fd5b506001546102c09061ffff1681565b34801561092e57600080fd5b5061049460055481565b34801561094457600080fd5b50610502610953366004612494565b604080516020810190915260008152949350505050565b34801561097657600080fd5b50610649610985366004611e76565b61198a565b600080604051600284016002860382377ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60151949350505050565b61ffff83166000908152600c602052604080822090518291906109eb90869086906124e1565b9081526040519081900360200190206001015415159150509392505050565b600d6020908152600084815260409020835180850183018051928152908301928501929092209152805482908110610a4157600080fd5b60009182526020909120600290910201805460018201805473ffffffffffffffffffffffffffffffffffffffff831696507401000000000000000000000000000000000000000090920467ffffffffffffffff169450919250610aa3906124f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610acf906124f1565b8015610b1c5780601f10610af157610100808354040283529160200191610b1c565b820191906000526020600020905b815481529060010190602001808311610aff57829003601f168201915b5050505050905083565b6000808451600754610b389190612574565b915060085490509550959350505050565b61ffff83166000908152600c60205260408082209051610b6c90859085906124e1565b9081526040519081900360200190206001810154909150610bee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4c617965725a65726f3a206e6f2073746f726564207061796c6f61640000000060448201526064015b60405180910390fd5b805468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610c7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4c617965725a65726f3a20696e76616c69642063616c6c6572000000000000006044820152606401610be5565b80547fffffffff00000000000000000000000000000000000000000000000000000000168155600060018201556040517f23d2684f396e92a6e2ff2d16f98e6fea00d50cb27a64b531bc0748f730211f9890610cdb908690869086906125fa565b60405180910390a16108918484846119d0565b61ffff83166000908152600d60205260408082209051610d1190859085906124e1565b9081526040519081900360200190205490509392505050565b61ffff85166000908152600c60205260408082209051610d4d90879087906124e1565b9081526040519081900360200190206001810154909150610dca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4c617965725a65726f3a206e6f2073746f726564207061796c6f6164000000006044820152606401610be5565b805467ffffffffffffffff1682148015610dfe575080600101548383604051610df49291906124e1565b6040518091039020145b610e64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4c617965725a65726f3a20696e76616c6964207061796c6f61640000000000006044820152606401610be5565b80547fffffffff000000000000000000000000000000000000000000000000000000008116825560006001830181905561ffff88168152600a602052604080822090516801000000000000000090930473ffffffffffffffffffffffffffffffffffffffff1692610ed890899089906124e1565b908152604051908190036020018120547e1d356700000000000000000000000000000000000000000000000000000000825267ffffffffffffffff16915073ffffffffffffffffffffffffffffffffffffffff831690621d356790610f4b908b908b908b9087908c908c90600401612618565b600060405180830381600087803b158015610f6557600080fd5b505af1158015610f79573d6000803e3d6000fd5b505050507f612434f39581c8e7d99746c9c20c6eb0ce8c0eb99f007c5719d620841370957d8888888486604051610fb4959493929190612666565b60405180910390a15050505050505050565b61ffff88166000908152600c60205260408082209051610fe9908a908a906124e1565b90815260200160405180910390209050600a60008a61ffff1661ffff16815260200190815260200160002088886040516110249291906124e1565b908152604051908190036020019020805460009061104b9067ffffffffffffffff166126bc565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905567ffffffffffffffff168567ffffffffffffffff16146110ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c617965725a65726f3a2077726f6e67206e6f6e6365000000000000000000006044820152606401610be5565b6001810154156114e25761ffff89166000908152600d60205260408082209051611119908b908b906124e1565b90815260200160405180910390209050600060405180606001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018867ffffffffffffffff16815260200186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250825490915015611435578154600181810184556000848152602090819020845160029094020180548286015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff909516949094179390931783556040840151805185949361124693908501920190611c29565b50505060005b825461125a906001906126e4565b81101561137c57828181548110611273576112736126fb565b90600052602060002090600202018382600161128f919061272a565b8154811061129f5761129f6126fb565b600091825260209091208254600290920201805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117825583547fffffffff0000000000000000000000000000000000000000000000000000000090931617740100000000000000000000000000000000000000009283900467ffffffffffffffff16909202919091178155600180830180549183019161135a906124f1565b611365929190611cad565b50905050808061137490612742565b91505061124c565b508082600081548110611391576113916126fb565b6000918252602091829020835160029092020180548484015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117815560408301518051919261142c92600185019290910190611c29565b509050506114db565b8154600181810184556000848152602090819020845160029094020180548286015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff90951694909417939093178355604084015180518594936114d793908501920190611c29565b5050505b50506116ec565b60095460ff161561165f5760405180606001604052808484905067ffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff16815260200184846040516115379291906124e1565b604080519182900390912090915261ffff8b166000908152600c6020528190209051611566908b908b906124e1565b908152604080519182900360209081018320845181548684015173ffffffffffffffffffffffffffffffffffffffff1668010000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090911667ffffffffffffffff909216919091171781559382015160019094019390935591810182526000815290517f0f9e4d95b62f08222d612b5ab92039cd8fbbbea550a95e8df9f927436bbdf5db9161162a918c918c918c918c918c918b918b919061277b565b60405180910390a1600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556116ec565b6040517e1d356700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690621d3567906116b9908c908c908c908b908a908a90600401612618565b600060405180830381600087803b1580156116d357600080fd5b505af11580156116e7573d6000803e3d6000fd5b505050505b505050505050505050565b6000611703888861098a565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526020819052604090205491925016806117bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c617965725a65726f4d6f636b3a2064657374696e6174696f6e204c6179657260448201527f5a65726f20456e64706f696e74206e6f7420666f756e640000000000000000006064820152608401610be5565b6007546117c9908790612574565b341015611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4c617965725a65726f4d6f636b3a206e6f7420656e6f756768206e617469766560448201527f20666f72206665657300000000000000000000000000000000000000000000006064820152608401610be5565b61ffff8a166000908152600b6020908152604080832033845290915281208054829061188d9067ffffffffffffffff166126bc565b825467ffffffffffffffff8281166101009490940a9384029302191691909117909155604080517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b1660208201528151601481830301815260349091019091529091508273ffffffffffffffffffffffffffffffffffffffff1663c2fa4813600160009054906101000a900461ffff1683878660008f8f6040518863ffffffff1660e01b815260040161194a97969594939291906127fb565b600060405180830381600087803b15801561196457600080fd5b505af1158015611978573d6000803e3d6000fd5b50505050505050505050505050505050565b61ffff83166000908152600a602052604080822090516119ad90859085906124e1565b9081526040519081900360200190205467ffffffffffffffff1690509392505050565b61ffff83166000908152600d602052604080822090516119f390859085906124e1565b908152602001604051809103902090505b8054156108915780546000908290611a1e906001906126e4565b81548110611a2e57611a2e6126fb565b6000918252602091829020604080516060810182526002909302909101805473ffffffffffffffffffffffffffffffffffffffff8116845267ffffffffffffffff74010000000000000000000000000000000000000000909104169383019390935260018301805492939291840191611aa6906124f1565b80601f0160208091040260200160405190810160405280929190818152602001828054611ad2906124f1565b8015611b1f5780601f10611af457610100808354040283529160200191611b1f565b820191906000526020600020905b815481529060010190602001808311611b0257829003601f168201915b5050505050815250509050806000015173ffffffffffffffffffffffffffffffffffffffff16621d3567868686856020015186604001516040518663ffffffff1660e01b8152600401611b7695949392919061286b565b600060405180830381600087803b158015611b9057600080fd5b505af1158015611ba4573d6000803e3d6000fd5b5050505081805480611bb857611bb86128b7565b60008281526020812060027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019283020180547fffffffff0000000000000000000000000000000000000000000000000000000016815590611c1f6001830182611d28565b5050905550611a04565b828054611c35906124f1565b90600052602060002090601f016020900481019282611c575760008555611c9d565b82601f10611c7057805160ff1916838001178555611c9d565b82800160010185558215611c9d579182015b82811115611c9d578251825591602001919060010190611c82565b50611ca9929150611d5e565b5090565b828054611cb9906124f1565b90600052602060002090601f016020900481019282611cdb5760008555611c9d565b82601f10611cec5780548555611c9d565b82800160010185558215611c9d57600052602060002091601f016020900482015b82811115611c9d578254825591600101919060010190611d0d565b508054611d34906124f1565b6000825580601f10611d44575050565b601f0160209004906000526020600020908101906102f391905b5b80821115611ca95760008155600101611d5f565b803561ffff81168114611d8557600080fd5b919050565b600060208284031215611d9c57600080fd5b611da582611d73565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146102f357600080fd5b600060208284031215611de057600080fd5b8135611da581611dac565b60008083601f840112611dfd57600080fd5b50813567ffffffffffffffff811115611e1557600080fd5b602083019150836020828501011115611e2d57600080fd5b9250929050565b60008060208385031215611e4757600080fd5b823567ffffffffffffffff811115611e5e57600080fd5b611e6a85828601611deb565b90969095509350505050565b600080600060408486031215611e8b57600080fd5b611e9484611d73565b9250602084013567ffffffffffffffff811115611eb057600080fd5b611ebc86828701611deb565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611f0957600080fd5b813567ffffffffffffffff80821115611f2457611f24611ec9565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611f6a57611f6a611ec9565b81604052838152866020858801011115611f8357600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215611fb857600080fd5b611fc184611d73565b9250602084013567ffffffffffffffff811115611fdd57600080fd5b611fe986828701611ef8565b925050604084013590509250925092565b6000815180845260005b8181101561202057602081850181015186830182015201612004565b81811115612032576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8416815267ffffffffffffffff831660208201526060604082015260006120a46060830184611ffa565b95945050505050565b600080604083850312156120c057600080fd5b50508035926020909101359150565b600080600080600060a086880312156120e757600080fd5b6120f086611d73565b9450602086013561210081611dac565b9350604086013567ffffffffffffffff8082111561211d57600080fd5b61212989838a01611ef8565b945060608801359150811515821461214057600080fd5b9092506080870135908082111561215657600080fd5b5061216388828901611ef8565b9150509295509295909350565b602081526000611da56020830184611ffa565b6000806040838503121561219657600080fd5b61219f83611d73565b9150602083013567ffffffffffffffff8111156121bb57600080fd5b6121c785828601611ef8565b9150509250929050565b600080604083850312156121e457600080fd5b6121ed83611d73565b915060208301356121fd81611dac565b809150509250929050565b60008060008060006060868803121561222057600080fd5b61222986611d73565b9450602086013567ffffffffffffffff8082111561224657600080fd5b61225289838a01611deb565b9096509450604088013591508082111561226b57600080fd5b5061227888828901611deb565b969995985093965092949392505050565b6000806040838503121561229c57600080fd5b82356121ed81611dac565b60008060008060008060008060c0898b0312156122c357600080fd5b6122cc89611d73565b9750602089013567ffffffffffffffff808211156122e957600080fd5b6122f58c838d01611deb565b909950975060408b0135915061230a82611dac565b90955060608a013590808216821461232157600080fd5b90945060808a0135935060a08a0135908082111561233e57600080fd5b5061234b8b828c01611deb565b999c989b5096995094979396929594505050565b60008060008060008060008060c0898b03121561237b57600080fd5b61238489611d73565b9750602089013567ffffffffffffffff808211156123a157600080fd5b6123ad8c838d01611deb565b909950975060408b01359150808211156123c657600080fd5b6123d28c838d01611deb565b909750955060608b013591506123e782611dac565b90935060808a0135906123f982611dac565b90925060a08a0135908082111561240f57600080fd5b5061241c8b828c01611ef8565b9150509295985092959890939650565b6000806000806080858703121561244257600080fd5b61244b85611d73565b935061245960208601611d73565b925060408501359150606085013567ffffffffffffffff81111561247c57600080fd5b61248887828801611ef8565b91505092959194509250565b600080600080608085870312156124aa57600080fd5b6124b385611d73565b93506124c160208601611d73565b925060408501356124d181611dac565b9396929550929360600135925050565b8183823760009101908152919050565b600181811c9082168061250557607f821691505b6020821081141561253f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156125ac576125ac612545565b500290565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b61ffff841681526040602082015260006120a46040830184866125b1565b61ffff871681526080602082015260006126366080830187896125b1565b67ffffffffffffffff8616604084015282810360608401526126598185876125b1565b9998505050505050505050565b61ffff861681526080602082015260006126846080830186886125b1565b905067ffffffffffffffff8416604083015273ffffffffffffffffffffffffffffffffffffffff831660608301529695505050505050565b600067ffffffffffffffff808316818114156126da576126da612545565b6001019392505050565b6000828210156126f6576126f6612545565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000821982111561273d5761273d612545565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561277457612774612545565b5060010190565b61ffff8916815260c06020820152600061279960c08301898b6125b1565b73ffffffffffffffffffffffffffffffffffffffff8816604084015267ffffffffffffffff8716606084015282810360808401526127d88186886125b1565b905082810360a08401526127ec8185611ffa565b9b9a5050505050505050505050565b61ffff8816815260c06020820152600061281860c0830189611ffa565b73ffffffffffffffffffffffffffffffffffffffff8816604084015267ffffffffffffffff8716606084015285608084015282810360a084015261285d8185876125b1565b9a9950505050505050505050565b61ffff861681526080602082015260006128896080830186886125b1565b67ffffffffffffffff8516604084015282810360608401526128ab8185611ffa565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c6343000809000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/boba/gateway/src/deployment/contracts/ve.json b/packages/boba/gateway/src/deployment/contracts/ve.json deleted file mode 100644 index 995e543899..0000000000 --- a/packages/boba/gateway/src/deployment/contracts/ve.json +++ /dev/null @@ -1,1145 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ve", - "sourceName": "contracts/ve.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "token_addr", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "approved", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "ApprovalForAll", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "provider", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "locktime", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "enum ve.DepositType", - "name": "deposit_type", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "ts", - "type": "uint256" - } - ], - "name": "Deposit", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "prevSupply", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "supply", - "type": "uint256" - } - ], - "name": "Supply", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "provider", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "ts", - "type": "uint256" - } - ], - "name": "Withdraw", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - } - ], - "name": "abstain", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_approved", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_block", - "type": "uint256" - } - ], - "name": "balanceOfAtNFT", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - } - ], - "name": "balanceOfNFT", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_t", - "type": "uint256" - } - ], - "name": "balanceOfNFTAt", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "block_number", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "checkpoint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_lock_duration", - "type": "uint256" - } - ], - "name": "create_lock", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_lock_duration", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - } - ], - "name": "create_lock_for", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - } - ], - "name": "deposit_for", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "epoch", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - } - ], - "name": "getApproved", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - } - ], - "name": "get_last_user_slope", - "outputs": [ - { - "internalType": "int128", - "name": "", - "type": "int128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - } - ], - "name": "increase_amount", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_lock_duration", - "type": "uint256" - } - ], - "name": "increase_unlock_time", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - }, - { - "internalType": "address", - "name": "_operator", - "type": "address" - } - ], - "name": "isApprovedForAll", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - } - ], - "name": "isApprovedOrOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "locked", - "outputs": [ - { - "internalType": "int128", - "name": "amount", - "type": "int128" - }, - { - "internalType": "uint256", - "name": "end", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - } - ], - "name": "locked__end", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_from", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_to", - "type": "uint256" - } - ], - "name": "merge", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - } - ], - "name": "ownerOf", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "ownership_change", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "point_history", - "outputs": [ - { - "internalType": "int128", - "name": "bias", - "type": "int128" - }, - { - "internalType": "int128", - "name": "slope", - "type": "int128" - }, - { - "internalType": "uint256", - "name": "ts", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "blk", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_operator", - "type": "address" - }, - { - "internalType": "bool", - "name": "_approved", - "type": "bool" - } - ], - "name": "setApprovalForAll", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_voter", - "type": "address" - } - ], - "name": "setVoter", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "slope_changes", - "outputs": [ - { - "internalType": "int128", - "name": "", - "type": "int128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "supply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceID", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "token", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_tokenIndex", - "type": "uint256" - } - ], - "name": "tokenOfOwnerByIndex", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - } - ], - "name": "tokenURI", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_block", - "type": "uint256" - } - ], - "name": "totalSupplyAt", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "t", - "type": "uint256" - } - ], - "name": "totalSupplyAtT", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "user_point_epoch", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "user_point_history", - "outputs": [ - { - "internalType": "int128", - "name": "bias", - "type": "int128" - }, - { - "internalType": "int128", - "name": "slope", - "type": "int128" - }, - { - "internalType": "uint256", - "name": "ts", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "blk", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_idx", - "type": "uint256" - } - ], - "name": "user_point_history__ts", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_timestamp", - "type": "uint256" - } - ], - "name": "ve_for_at", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "version", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "voted", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "voter", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - } - ], - "name": "voting", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - } - ], - "name": "withdraw", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60a06040526012805460ff191660011790553480156200001e57600080fd5b506040516200479e3803806200479e833981016040819052620000419162000181565b6001600160a01b038116608052600980546001600160a01b03191633179055437f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ee55427f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ed5560116020527f3e87c36c65d41f2d1f93bff6c6912ffb5eecfa7a08ec62ba64f325e6f54b62b6805460ff1990811660019081179092557fed0c07505a792b35dc46d92d52f3aa9b2eb49320f7593a35750fca7038c91f428054821683179055635b5e139f60e01b60009081527f7fe31c34b300e6139c230f3de8239aaceec0a6887735a4aa356c95bf048c388880549092169092179055600a54604051909130916000805160206200477e833981519152908290a4600a5460405160009030906000805160206200477e833981519152908390a450620001b3565b6000602082840312156200019457600080fd5b81516001600160a01b0381168114620001ac57600080fd5b9392505050565b6080516145a1620001dd6000396000818161091401528181610d1f0152612e0201526145a16000f3fe608060405234801561001057600080fd5b50600436106103365760003560e01c806371197484116101b2578063c2c4c5c1116100f9578063e441135c116100a2578063ee99fe281161007c578063ee99fe28146108d8578063f8a05763146108eb578063fc0c546a1461090f578063fd4a77f11461093657600080fd5b8063e441135c1461085c578063e7e242d41461087c578063e985e9c51461088f57600080fd5b8063d1febfb9116100d3578063d1febfb9146107eb578063d4e54c3b14610836578063e0514aba1461084957600080fd5b8063c2c4c5c1146107bd578063c87b56dd146107c5578063d1c2babb146107d857600080fd5b8063a183af521161015b578063b45a3c0e11610135578063b45a3c0e1461074f578063b88d4fde14610797578063c1f0fb9f146107aa57600080fd5b8063a183af5214610716578063a22cb46514610729578063a4d855df1461073c57600080fd5b8063900cf0cf1161018c578063900cf0cf146106fa57806395d89b41146103ac578063981b24d01461070357600080fd5b806371197484146106a15780638c2c9baf146106c45780638fbb38ff146106d757600080fd5b8063313ce5671161028157806354fd4d501161022a578063688098891161020457806368809889146106485780636f5488371461065b57806370a082311461067b5780637116c60c1461068e57600080fd5b806354fd4d50146105c35780636352211e146105ff57806365fc38731461063557600080fd5b8063461f711c1161025b578063461f711c1461056a57806346c96aac146105905780634bc2a657146105b057600080fd5b8063313ce5671461052a57806342842e0e14610544578063430c20811461055757600080fd5b806318160ddd116102e357806325a58b56116102bd57806325a58b56146104ce5780632e1a7d4d146104d45780632f745c59146104e757600080fd5b806318160ddd146104a05780631c984bc3146104a857806323b872dd146104bb57600080fd5b8063081812fc11610314578063081812fc146103f5578063095ea7b3146104505780631376f3da1461046557600080fd5b806301ffc9a71461033b578063047fc9aa1461039557806306fdde03146103ac575b600080fd5b6103806103493660046137ed565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526011602052604090205460ff1690565b60405190151581526020015b60405180910390f35b61039e60005481565b60405190815260200161038c565b6103e86040518060400160405280600681526020017f7665424f4241000000000000000000000000000000000000000000000000000081525081565b60405161038c9190613880565b61042b610403366004613893565b6000908152600c602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161038c565b61046361045e3660046138d5565b610949565b005b6104786104733660046138ff565b610a8b565b60408051600f95860b81529390940b602084015292820152606081019190915260800161038c565b61039e610adf565b61039e6104b63660046138ff565b610aef565b6104636104c9366004613921565b610b22565b4361039e565b6104636104e2366004613893565b610b33565b61039e6104f53660046138d5565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600e60209081526040808320938352929052205490565b610532601281565b60405160ff909116815260200161038c565b610463610552366004613921565b610e4f565b6103806105653660046138d5565b610e6a565b61057d610578366004613893565b610e7d565b604051600f9190910b815260200161038c565b60095461042b9073ffffffffffffffffffffffffffffffffffffffff1681565b6104636105be36600461395d565b610ecd565b6103e86040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b61042b61060d366004613893565b6000908152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b61039e6106433660046138ff565b610f38565b61039e6106563660046138ff565b610f7a565b61039e610669366004613893565b60026020526000908152604090205481565b61039e61068936600461395d565b61105a565b61039e61069c366004613893565b611085565b61057d6106af366004613893565b600760205260009081526040902054600f0b81565b61039e6106d23660046138ff565b6110f2565b6103806106e5366004613893565b60086020526000908152604090205460ff1681565b61039e60035481565b61039e610711366004613893565b6110fe565b6104636107243660046138ff565b6112ba565b610463610737366004613986565b611415565b61046361074a3660046138ff565b6114b4565b61077d61075d366004613893565b60016020819052600091825260409091208054910154600f9190910b9082565b60408051600f9390930b835260208301919091520161038c565b6104636107a53660046139ec565b6116b3565b6104636107b8366004613893565b61182f565b61046361186b565b6103e86107d3366004613893565b6118ab565b6104636107e63660046138ff565b611965565b6104786107f9366004613893565b600460205260009081526040902080546001820154600290920154600f82810b93700100000000000000000000000000000000909304900b919084565b61039e610844366004613ae6565b611b09565b61039e6108573660046138ff565b611b4c565b61039e61086a366004613893565b60066020526000908152604090205481565b61039e61088a366004613893565b611b58565b61038061089d366004613b1b565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205460ff1690565b6104636108e63660046138ff565b611b80565b61039e6108f9366004613893565b6000908152600160208190526040909120015490565b61042b7f000000000000000000000000000000000000000000000000000000000000000081565b610463610944366004613893565b611cb0565b6000818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff168061097857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109b157600080fd5b6000828152600b602090815260408083205473ffffffffffffffffffffffffffffffffffffffff85811685526010845282852033808752945291909320549216149060ff1681806109ff5750805b610a0857600080fd5b6000848152600c602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691821790925591518793918716917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050505050565b600560205281600052604060002081633b9aca008110610aaa57600080fd5b6003020180546001820154600290920154600f82810b955070010000000000000000000000000000000090920490910b925084565b6000610aea42611085565b905090565b600082815260056020526040812082633b9aca008110610b1157610b11613b4e565b600302016001015490505b92915050565b610b2e83838333611cef565b505050565b60125460ff16600114610b4557600080fd5b6012805460ff19166002179055610b5c3382611dda565b610b6857610b68613b7d565b60008181526008602052604090205460ff1615610bcc5760405162461bcd60e51b815260206004820152600860248201527f617474616368656400000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60008181526001602081815260409283902083518085019094528054600f0b845290910154908201819052421015610c465760405162461bcd60e51b815260206004820152601660248201527f546865206c6f636b206469646e277420657870697265000000000000000000006044820152606401610bc3565b805160408051808201825260008082526020808301828152878352600191829052938220925183547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9091161783559251919092015554600f9190910b90610cc08282613bdb565b600081905550610cea848460405180604001604052806000600f0b81526020016000815250611e4d565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303816000875af1158015610d7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da19190613bf2565b610dad57610dad613b7d565b610db6846124fd565b60408051858152602081018490524281830152905133917f02f25270a4d87bea75db541cdfe559334a275b4a233520ed6c0a2429667cca94919081900360600190a27f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c81610e248482613bdb565b6040805192835260208301919091520160405180910390a150506012805460ff191660011790555050565b610b2e838383604051806020016040528060008152506116b3565b6000610e768383611dda565b9392505050565b6000818152600660209081526040808320546005909252822081633b9aca008110610eaa57610eaa613b4e565b60030201547001000000000000000000000000000000009004600f0b9392505050565b60095473ffffffffffffffffffffffffffffffffffffffff163314610ef157600080fd5b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60125460009060ff16600114610f4d57600080fd5b6012805460ff19166002179055610f658383336125d6565b90506012805460ff1916600117905592915050565b60008281526006602052604081205481610f9585858461273e565b60008681526005602052604081209192509082633b9aca008110610fbb57610fbb613b4e565b60408051608081018252600392909202929092018054600f81810b8452700100000000000000000000000000000000909104900b6020830152600181015492820183905260020154606082015291506110149086613bdb565b81602001516110239190613c0f565b81518290611032908390613cc5565b600f90810b90915282516000910b1215905061104d57600081525b51600f0b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600d6020526040812054610b1c565b600354600081815260046020908152604080832081516080810183528154600f81810b8352700100000000000000000000000000000000909104900b938101939093526001810154918301919091526002015460608201529091906110ea818561282d565b949350505050565b6000610e768383612938565b60004382111561111057611110613b7d565b600354600061111f8483612c40565b600081815260046020908152604080832081516080810183528154600f81810b8352700100000000000000000000000000000000909104900b938101939093526001810154918301919091526002015460608201529192508383101561124857600060048161118f866001613d36565b8152602080820192909252604090810160002081516080810183528154600f81810b8352700100000000000000000000000000000000909104900b938101939093526001810154918301919091526002015460608083018290528501519192501461124257826060015181606001516112089190613bdb565b8360400151826040015161121c9190613bdb565b606085015161122b908a613bdb565b6112359190613d4e565b61123f9190613dba565b91505b50611297565b438260600151146112975760608201516112629043613bdb565b60408301516112719042613bdb565b60608401516112809089613bdb565b61128a9190613d4e565b6112949190613dba565b90505b6112b0828284604001516112ab9190613d36565b61282d565b9695505050505050565b60125460ff166001146112cc57600080fd5b6012805460ff191660021790556112e33383611dda565b6112ef576112ef613b7d565b60008281526001602081815260409283902083518085019094528054600f0b845290910154908201528161132557611325613b7d565b60008160000151600f0b1361137c5760405162461bcd60e51b815260206004820152601660248201527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006044820152606401610bc3565b428160200151116113f45760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f742061646420746f2065787069726564206c6f636b2e205769746860448201527f64726177000000000000000000000000000000000000000000000000000000006064820152608401610bc3565b61140383836000846002612cca565b50506012805460ff1916600117905550565b73ffffffffffffffffffffffffffffffffffffffff821633141561143b5761143b613b7d565b33600081815260106020908152604080832073ffffffffffffffffffffffffffffffffffffffff871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60125460ff166001146114c657600080fd5b6012805460ff191660021790556114dd3383611dda565b6114e9576114e9613b7d565b600082815260016020818152604080842081518083019092528054600f0b825290920154908201529062093a80806115218542613d36565b61152b9190613dba565b6115359190613d4e565b90504282602001511161158a5760405162461bcd60e51b815260206004820152600c60248201527f4c6f636b206578706972656400000000000000000000000000000000000000006044820152606401610bc3565b60008260000151600f0b136115e15760405162461bcd60e51b815260206004820152601160248201527f4e6f7468696e67206973206c6f636b65640000000000000000000000000000006044820152606401610bc3565b816020015181116116345760405162461bcd60e51b815260206004820152601f60248201527f43616e206f6e6c7920696e637265617365206c6f636b206475726174696f6e006044820152606401610bc3565b611642630784ce0042613d36565b8111156116915760405162461bcd60e51b815260206004820152601e60248201527f566f74696e67206c6f636b2063616e2062652034207965617273206d617800006044820152606401610bc3565b6116a084600083856003612cca565b50506012805460ff191660011790555050565b6116bf84848433611cef565b823b15611829576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a029061171e903390889087908790600401613dce565b6020604051808303816000875af1925050508015611777575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261177491810190613e0d565b60015b611827573d8080156117a5576040519150601f19603f3d011682016040523d82523d6000602084013e6117aa565b606091505b50805161181f5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610bc3565b805181602001fd5b505b50505050565b60095473ffffffffffffffffffffffffffffffffffffffff16331461185357600080fd5b6000908152600860205260409020805460ff19169055565b6118a9600060405180604001604052806000600f0b8152602001600081525060405180604001604052806000600f0b81526020016000815250611e4d565b565b6000818152600b602052604090205460609073ffffffffffffffffffffffffffffffffffffffff1661191f5760405162461bcd60e51b815260206004820152601b60248201527f517565727920666f72206e6f6e6578697374656e7420746f6b656e00000000006044820152606401610bc3565b60008281526001602081815260409283902083518085019094528054600f0b84529091015490820152610e76836119568142612f23565b60208401518451600f0b613002565b60008281526008602052604090205460ff16156119c45760405162461bcd60e51b815260206004820152600860248201527f61747461636865640000000000000000000000000000000000000000000000006044820152606401610bc3565b808214156119d157600080fd5b6119db3383611dda565b6119e457600080fd5b6119ee3382611dda565b6119f757600080fd5b6000828152600160208181526040808420815180830183528154600f90810b82529185015481850190815287875285855283872084518086019095528054840b855290950154938301849052805194519095929490910b921115611a5f578260200151611a65565b83602001515b604080518082018252600080825260208083018281528b83526001808352858420945185547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9091161785559051930192909255825180840190935280835290820152909150611aea9087908690611e4d565b611af3866124fd565b611b01858383866004612cca565b505050505050565b60125460009060ff16600114611b1e57600080fd5b6012805460ff19166002179055611b368484846125d6565b90506012805460ff191660011790559392505050565b6000610e768383612f23565b600081815260026020526040812054431415611b7657506000919050565b610b1c8242612f23565b60125460ff16600114611b9257600080fd5b6012805460ff1916600217905560008281526001602081815260409283902083518085019094528054600f0b8452909101549082015281611bd257600080fd5b60008160000151600f0b13611c295760405162461bcd60e51b815260206004820152601660248201527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006044820152606401610bc3565b42816020015111611ca15760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f742061646420746f2065787069726564206c6f636b2e205769746860448201527f64726177000000000000000000000000000000000000000000000000000000006064820152608401610bc3565b61140383836000846000612cca565b60095473ffffffffffffffffffffffffffffffffffffffff163314611cd457600080fd5b6000908152600860205260409020805460ff19166001179055565b60008281526008602052604090205460ff1615611d4e5760405162461bcd60e51b815260206004820152600860248201527f61747461636865640000000000000000000000000000000000000000000000006044820152606401610bc3565b611d588183611dda565b611d6157600080fd5b611d6b8483613139565b611d7584836131d2565b611d7f8383613285565b60008281526002602052604080822043905551839173ffffffffffffffffffffffffffffffffffffffff80871692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a450505050565b6000818152600b6020908152604080832054600c83528184205473ffffffffffffffffffffffffffffffffffffffff9182168086526010855283862088841680885295529285205492938085149392909116149060ff168280611e3a5750815b80611e425750805b979650505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260408051608081018252600080825260208201819052918101829052606081019190915260035460009081908715611fb957428760200151118015611ebd575060008760000151600f0b135b15611f02578651611ed390630784ce0090613e2a565b600f0b602080870191909152870151611eed904290613bdb565b8560200151611efc9190613c0f565b600f0b85525b428660200151118015611f1c575060008660000151600f0b135b15611f61578551611f3290630784ce0090613e2a565b600f0b602080860191909152860151611f4c904290613bdb565b8460200151611f5b9190613c0f565b600f0b84525b602080880151600090815260078252604090205490870151600f9190910b935015611fb957866020015186602001511415611f9e57829150611fb9565b602080870151600090815260079091526040902054600f0b91505b60408051608081018252600080825260208201524291810191909152436060820152811561203b575060008181526004602090815260409182902082516080810184528154600f81810b8352700100000000000000000000000000000000909104900b9281019290925260018101549282019290925260029091015460608201525b60408101518160004283101561208857604084015161205a9042613bdb565b60608501516120699043613bdb565b61207b90670de0b6b3a7640000613d4e565b6120859190613dba565b90505b600062093a806120988186613dba565b6120a29190613d4e565b905060005b60ff811015612233576120bd62093a8083613d36565b91506000428311156120d1574292506120e5565b50600082815260076020526040902054600f0b5b6120ef8684613bdb565b87602001516120fe9190613c0f565b8751889061210d908390613cc5565b600f0b905250602087018051829190612127908390613e9e565b600f90810b90915288516000910b1215905061214257600087525b60008760200151600f0b121561215a57600060208801525b60408088018490528501519295508592670de0b6b3a76400009061217e9085613bdb565b6121889086613d4e565b6121929190613dba565b85606001516121a19190613d36565b60608801526121b1600189613d36565b9750428314156121c75750436060870152612233565b6000888152600460209081526040918290208951918a01516fffffffffffffffffffffffffffffffff90811670010000000000000000000000000000000002921691909117815590880151600182015560608801516002909101555061222c81613f0e565b90506120a7565b505060038590558b156122be57886020015188602001516122549190613cc5565b846020018181516122659190613e9e565b600f0b905250885188516122799190613cc5565b84518590612288908390613e9e565b600f90810b90915260208601516000910b121590506122a957600060208501525b60008460000151600f0b12156122be57600084525b6000858152600460209081526040918290208651918701516fffffffffffffffffffffffffffffffff90811670010000000000000000000000000000000002921691909117815590850151600182015560608501516002909101558b156124ef57428b6020015111156123ad57602089015161233a9088613e9e565b96508a602001518a60200151141561235e57602088015161235b9088613cc5565b96505b60208b810151600090815260079091526040902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff89161790555b428a602001511115612429578a602001518a6020015111156124295760208801516123d89087613cc5565b60208b810151600090815260079091526040902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff831617905595505b60008c815260066020526040812054612443906001613d36565b905080600660008f815260200190815260200160002081905550428960400181815250504389606001818152505088600560008f815260200190815260200160002082633b9aca00811061249957612499613b4e565b825160208401516fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029116176003919091029190910190815560408201516001820155606090910151600290910155505b505050505050505050505050565b6125073382611dda565b6125535760405162461bcd60e51b815260206004820181905260248201527f63616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665646044820152606401610bc3565b6000818152600b602052604081205473ffffffffffffffffffffffffffffffffffffffff16906125839083610949565b61258d33836131d2565b604051829060009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60008062093a80806125e88642613d36565b6125f29190613dba565b6125fc9190613d4e565b90506000851161260b57600080fd5b4281116126805760405162461bcd60e51b815260206004820152602660248201527f43616e206f6e6c79206c6f636b20756e74696c2074696d6520696e207468652060448201527f66757475726500000000000000000000000000000000000000000000000000006064820152608401610bc3565b61268e630784ce0042613d36565b8111156126dd5760405162461bcd60e51b815260206004820152601e60248201527f566f74696e67206c6f636b2063616e2062652034207965617273206d617800006044820152606401610bc3565b600a600081546126ec90613f0e565b90915550600a546126fd848261334d565b5060008181526001602081815260409283902083518085019094528054600f0b84528201549083015261273591839189918691612cca565b95945050505050565b60008082815b60808110156128225781831061275957612822565b600060026127678486613d36565b612772906002613d36565b61277c9190613dba565b60008981526005602052604081209192509082633b9aca0081106127a2576127a2613b4e565b60408051608081018252600392909202929092018054600f81810b8452700100000000000000000000000000000000909104900b60208301526001810154928201839052600201546060820152915088106127ff5781945061280d565b61280a600183613bdb565b93505b5050808061281a90613f0e565b915050612744565b509095945050505050565b600080839050600062093a808083604001516128499190613dba565b6128539190613d4e565b905060005b60ff8110156129075761286e62093a8083613d36565b915060008583111561288257859250612896565b50600082815260076020526040902054600f0b5b60408401516128a59084613bdb565b84602001516128b49190613c0f565b845185906128c3908390613cc5565b600f0b905250828614156128d75750612907565b80846020018181516128e99190613e9e565b600f0b905250506040830182905261290081613f0e565b9050612858565b5060008260000151600f0b121561291d57600082525b50516fffffffffffffffffffffffffffffffff169392505050565b60004382111561294a5761294a613b7d565b600083815260066020526040812054815b60808110156129ee57818310612970576129ee565b6000600261297e8486613d36565b612989906001613d36565b6129939190613dba565b6000888152600560205260409020909150869082633b9aca0081106129ba576129ba613b4e565b6003020160020154116129cf578093506129dd565b6129da600182613bdb565b92505b506129e781613f0e565b905061295b565b50600085815260056020526040812083633b9aca008110612a1157612a11613b4e565b604080516080810182526003928302939093018054600f81810b8652700100000000000000000000000000000000909104900b6020850152600181015491840191909152600201546060830152549091506000612a6e8783612c40565b600081815260046020908152604080832081516080810183528154600f81810b8352700100000000000000000000000000000000909104900b938101939093526001810154918301919091526002015460608201529192508084841015612b67576000600481612adf876001613d36565b8152602080820192909252604090810160002081516080810183528154600f81810b8352700100000000000000000000000000000000909104900b93810193909352600181015491830191909152600201546060808301829052860151919250612b499190613bdb565b925083604001518160400151612b5f9190613bdb565b915050612b8b565b6060830151612b769043613bdb565b9150826040015142612b889190613bdb565b90505b60408301518215612bc8578284606001518c612ba79190613bdb565b612bb19084613d4e565b612bbb9190613dba565b612bc59082613d36565b90505b6040870151612bd79082613bdb565b8760200151612be69190613c0f565b87518890612bf5908390613cc5565b600f90810b90915288516000910b129050612c2e57505093516fffffffffffffffffffffffffffffffff169650610b1c95505050505050565b60009950505050505050505050610b1c565b60008082815b6080811015612cc057818310612c5b57612cc0565b60006002612c698486613d36565b612c74906001613d36565b612c7e9190613dba565b6000818152600460205260409020600201549091508710612ca157809350612caf565b612cac600182613bdb565b92505b50612cb981613f0e565b9050612c46565b5090949350505050565b6000548290612cd98682613d36565b6000908155604080518082019091528181526020810191909152825160208085015190830152600f0b8152825187908490612d15908390613e9e565b600f0b9052508515612d2957602083018690525b6000888152600160208181526040909220855181547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff90911617815591850151910155612d89888285611e4d565b338715801590612dab57506004856004811115612da857612da8613f47565b14155b15612e7b576040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152306024830152604482018a90527f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906064016020604051808303816000875af1158015612e4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6f9190613bf2565b612e7b57612e7b613b7d565b83602001518173ffffffffffffffffffffffffffffffffffffffff167fff04ccafc360e16b67d682d17bd9503c4c6b9a131f6be6325762dc9ffc7de6248b8b8942604051612ecc9493929190613f76565b60405180910390a37f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c83612f008a82613d36565b6040805192835260208301919091520160405180910390a1505050505050505050565b60008281526006602052604081205480612f41576000915050610b1c565b600084815260056020526040812082633b9aca008110612f6357612f63613b4e565b60408051608081018252600392909202929092018054600f81810b8452700100000000000000000000000000000000909104900b602083015260018101549282018390526002015460608201529150612fbc9085613fcd565b8160200151612fcb9190613c0f565b81518290612fda908390613cc5565b600f90810b90915282516000910b12159050612ff557600081525b51600f0b9150610b1c9050565b606060405180610120016040528060fd815260200161445860fd913990508061302a866133ca565b60405160200161303b929190614041565b604051602081830303815290604052905080613056856133ca565b6040516020016130679291906140e9565b604051602081830303815290604052905080613082846133ca565b604051602001613093929190614191565b6040516020818303038152906040529050806130ae836133ca565b6040516020016130bf929190614239565b6040516020818303038152906040529050600061310c6130de876133ca565b6130e7846134fc565b6040516020016130f89291906142bb565b6040516020818303038152906040526134fc565b90508060405160200161311f91906143fe565b604051602081830303815290604052915050949350505050565b6000818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff83811691161461316f5761316f613b7d565b6000818152600c602052604090205473ffffffffffffffffffffffffffffffffffffffff16156131ce576000818152600c6020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b5050565b6000818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff83811691161461320857613208613b7d565b6000818152600b6020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905561324682826136d5565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600d6020526040812080546001929061327c908490613bdb565b90915550505050565b6000818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16156132b7576132b7613b7d565b6000818152600b6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8716908117909155808452600d8084528285208054600e86528487208188528652848720889055878752600f86529386209390935590845290915280546001929061327c908490613d36565b600073ffffffffffffffffffffffffffffffffffffffff831661337257613372613b7d565b61337c8383613285565b604051829073ffffffffffffffffffffffffffffffffffffffff8516906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450600192915050565b60608161340a57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115613434578061341e81613f0e565b915061342d9050600a83613dba565b915061340e565b60008167ffffffffffffffff81111561344f5761344f6139bd565b6040519080825280601f01601f191660200182016040528015613479576020820181803683370190505b5090505b84156110ea5761348e600183613bdb565b915061349b600a86614443565b6134a6906030613d36565b60f81b8183815181106134bb576134bb613b4e565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506134f5600a86613dba565b945061347d565b80516060908061351c575050604080516020810190915260008152919050565b6000600361352b836002613d36565b6135359190613dba565b613540906004613d4e565b9050600061354f826020613d36565b67ffffffffffffffff811115613567576135676139bd565b6040519080825280601f01601f191660200182016040528015613591576020820181803683370190505b5090506000604051806060016040528060408152602001614555604091399050600181016020830160005b8681101561361d576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b8352600490920191016135bc565b5060038606600181146136375760028114613681576136c7565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8301526136c7565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b505050918152949350505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600d602052604081205461370790600190613bdb565b6000838152600f6020526040902054909150808214156137645773ffffffffffffffffffffffffffffffffffffffff84166000908152600e602090815260408083208584528252808320839055858352600f909152812055611829565b73ffffffffffffffffffffffffffffffffffffffff939093166000908152600e6020908152604080832093835292815282822080548684528484208190558352600f9091528282209490945592839055908252812055565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146137ea57600080fd5b50565b6000602082840312156137ff57600080fd5b8135610e76816137bc565b60005b8381101561382557818101518382015260200161380d565b838111156118295750506000910152565b6000815180845261384e81602086016020860161380a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610e766020830184613836565b6000602082840312156138a557600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146138d057600080fd5b919050565b600080604083850312156138e857600080fd5b6138f1836138ac565b946020939093013593505050565b6000806040838503121561391257600080fd5b50508035926020909101359150565b60008060006060848603121561393657600080fd5b61393f846138ac565b925061394d602085016138ac565b9150604084013590509250925092565b60006020828403121561396f57600080fd5b610e76826138ac565b80151581146137ea57600080fd5b6000806040838503121561399957600080fd5b6139a2836138ac565b915060208301356139b281613978565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060008060808587031215613a0257600080fd5b613a0b856138ac565b9350613a19602086016138ac565b925060408501359150606085013567ffffffffffffffff80821115613a3d57600080fd5b818701915087601f830112613a5157600080fd5b813581811115613a6357613a636139bd565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715613aa957613aa96139bd565b816040528281528a6020848701011115613ac257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080600060608486031215613afb57600080fd5b8335925060208401359150613b12604085016138ac565b90509250925092565b60008060408385031215613b2e57600080fd5b613b37836138ac565b9150613b45602084016138ac565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015613bed57613bed613bac565b500390565b600060208284031215613c0457600080fd5b8151610e7681613978565b600081600f0b83600f0b6f7fffffffffffffffffffffffffffffff600082136000841383830485118282161615613c4857613c48613bac565b7fffffffffffffffffffffffffffffffff800000000000000000000000000000006000851286820586128184161615613c8357613c83613bac565b60008712925085820587128484161615613c9f57613c9f613bac565b85850587128184161615613cb557613cb5613bac565b5050509290910295945050505050565b600081600f0b83600f0b60008112817fffffffffffffffffffffffffffffffff8000000000000000000000000000000001831281151615613d0857613d08613bac565b816f7fffffffffffffffffffffffffffffff018313811615613d2c57613d2c613bac565b5090039392505050565b60008219821115613d4957613d49613bac565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d8657613d86613bac565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613dc957613dc9613d8b565b500490565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526112b06080830184613836565b600060208284031215613e1f57600080fd5b8151610e76816137bc565b600081600f0b83600f0b80613e4157613e41613d8b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffff8000000000000000000000000000000083141615613e9557613e95613bac565b90059392505050565b600081600f0b83600f0b60008212826f7fffffffffffffffffffffffffffffff03821381151615613ed157613ed1613bac565b827fffffffffffffffffffffffffffffffff80000000000000000000000000000000038212811615613f0557613f05613bac565b50019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613f4057613f40613bac565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b848152602081018490526080810160058410613fbb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60408201939093526060015292915050565b6000808312837f80000000000000000000000000000000000000000000000000000000000000000183128115161561400757614007613bac565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01831381161561403b5761403b613bac565b50500390565b6000835161405381846020880161380a565b7f746f6b656e200000000000000000000000000000000000000000000000000000908301908152835161408d81600684016020880161380a565b7f3c2f746578743e3c7465787420783d2231302220793d2234302220636c617373600692909101918201527f3d2262617365223e0000000000000000000000000000000000000000000000006026820152602e01949350505050565b600083516140fb81846020880161380a565b7f62616c616e63654f662000000000000000000000000000000000000000000000908301908152835161413581600a84016020880161380a565b7f3c2f746578743e3c7465787420783d2231302220793d2236302220636c617373600a92909101918201527f3d2262617365223e000000000000000000000000000000000000000000000000602a820152603201949350505050565b600083516141a381846020880161380a565b7f6c6f636b65645f656e642000000000000000000000000000000000000000000090830190815283516141dd81600b84016020880161380a565b7f3c2f746578743e3c7465787420783d2231302220793d2238302220636c617373600b92909101918201527f3d2262617365223e000000000000000000000000000000000000000000000000602b820152603301949350505050565b6000835161424b81846020880161380a565b7f76616c7565200000000000000000000000000000000000000000000000000000908301908152835161428581600684016020880161380a565b7f3c2f746578743e3c2f7376673e0000000000000000000000000000000000000060069290910191820152601301949350505050565b7f7b226e616d65223a20226c6f636b2023000000000000000000000000000000008152600083516142f381601085016020880161380a565b7f222c20226465736372697074696f6e223a2022536f6c69646c79206c6f636b736010918401918201527f2c2063616e206265207573656420746f20626f6f73742067617567652079696560308201527f6c64732c20766f7465206f6e20746f6b656e20656d697373696f6e2c20616e6460508201527f207265636569766520627269626573222c2022696d616765223a20226461746160708201527f3a696d6167652f7376672b786d6c3b6261736536342c00000000000000000000609082015283516143c88160a684016020880161380a565b7f227d00000000000000000000000000000000000000000000000000000000000060a6929091019182015260a801949350505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161443681601d85016020870161380a565b91909101601d0192915050565b60008261445257614452613d8b565b50069056fe3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722207072657365727665417370656374526174696f3d22784d696e594d696e206d656574222076696577426f783d223020302033353020333530223e3c7374796c653e2e62617365207b2066696c6c3a2077686974653b20666f6e742d66616d696c793a2073657269663b20666f6e742d73697a653a20313470783b207d3c2f7374796c653e3c726563742077696474683d223130302522206865696768743d2231303025222066696c6c3d22626c61636b22202f3e3c7465787420783d2231302220793d2232302220636c6173733d2262617365223e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300080b000addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103365760003560e01c806371197484116101b2578063c2c4c5c1116100f9578063e441135c116100a2578063ee99fe281161007c578063ee99fe28146108d8578063f8a05763146108eb578063fc0c546a1461090f578063fd4a77f11461093657600080fd5b8063e441135c1461085c578063e7e242d41461087c578063e985e9c51461088f57600080fd5b8063d1febfb9116100d3578063d1febfb9146107eb578063d4e54c3b14610836578063e0514aba1461084957600080fd5b8063c2c4c5c1146107bd578063c87b56dd146107c5578063d1c2babb146107d857600080fd5b8063a183af521161015b578063b45a3c0e11610135578063b45a3c0e1461074f578063b88d4fde14610797578063c1f0fb9f146107aa57600080fd5b8063a183af5214610716578063a22cb46514610729578063a4d855df1461073c57600080fd5b8063900cf0cf1161018c578063900cf0cf146106fa57806395d89b41146103ac578063981b24d01461070357600080fd5b806371197484146106a15780638c2c9baf146106c45780638fbb38ff146106d757600080fd5b8063313ce5671161028157806354fd4d501161022a578063688098891161020457806368809889146106485780636f5488371461065b57806370a082311461067b5780637116c60c1461068e57600080fd5b806354fd4d50146105c35780636352211e146105ff57806365fc38731461063557600080fd5b8063461f711c1161025b578063461f711c1461056a57806346c96aac146105905780634bc2a657146105b057600080fd5b8063313ce5671461052a57806342842e0e14610544578063430c20811461055757600080fd5b806318160ddd116102e357806325a58b56116102bd57806325a58b56146104ce5780632e1a7d4d146104d45780632f745c59146104e757600080fd5b806318160ddd146104a05780631c984bc3146104a857806323b872dd146104bb57600080fd5b8063081812fc11610314578063081812fc146103f5578063095ea7b3146104505780631376f3da1461046557600080fd5b806301ffc9a71461033b578063047fc9aa1461039557806306fdde03146103ac575b600080fd5b6103806103493660046137ed565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526011602052604090205460ff1690565b60405190151581526020015b60405180910390f35b61039e60005481565b60405190815260200161038c565b6103e86040518060400160405280600681526020017f7665424f4241000000000000000000000000000000000000000000000000000081525081565b60405161038c9190613880565b61042b610403366004613893565b6000908152600c602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161038c565b61046361045e3660046138d5565b610949565b005b6104786104733660046138ff565b610a8b565b60408051600f95860b81529390940b602084015292820152606081019190915260800161038c565b61039e610adf565b61039e6104b63660046138ff565b610aef565b6104636104c9366004613921565b610b22565b4361039e565b6104636104e2366004613893565b610b33565b61039e6104f53660046138d5565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600e60209081526040808320938352929052205490565b610532601281565b60405160ff909116815260200161038c565b610463610552366004613921565b610e4f565b6103806105653660046138d5565b610e6a565b61057d610578366004613893565b610e7d565b604051600f9190910b815260200161038c565b60095461042b9073ffffffffffffffffffffffffffffffffffffffff1681565b6104636105be36600461395d565b610ecd565b6103e86040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b61042b61060d366004613893565b6000908152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b61039e6106433660046138ff565b610f38565b61039e6106563660046138ff565b610f7a565b61039e610669366004613893565b60026020526000908152604090205481565b61039e61068936600461395d565b61105a565b61039e61069c366004613893565b611085565b61057d6106af366004613893565b600760205260009081526040902054600f0b81565b61039e6106d23660046138ff565b6110f2565b6103806106e5366004613893565b60086020526000908152604090205460ff1681565b61039e60035481565b61039e610711366004613893565b6110fe565b6104636107243660046138ff565b6112ba565b610463610737366004613986565b611415565b61046361074a3660046138ff565b6114b4565b61077d61075d366004613893565b60016020819052600091825260409091208054910154600f9190910b9082565b60408051600f9390930b835260208301919091520161038c565b6104636107a53660046139ec565b6116b3565b6104636107b8366004613893565b61182f565b61046361186b565b6103e86107d3366004613893565b6118ab565b6104636107e63660046138ff565b611965565b6104786107f9366004613893565b600460205260009081526040902080546001820154600290920154600f82810b93700100000000000000000000000000000000909304900b919084565b61039e610844366004613ae6565b611b09565b61039e6108573660046138ff565b611b4c565b61039e61086a366004613893565b60066020526000908152604090205481565b61039e61088a366004613893565b611b58565b61038061089d366004613b1b565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205460ff1690565b6104636108e63660046138ff565b611b80565b61039e6108f9366004613893565b6000908152600160208190526040909120015490565b61042b7f000000000000000000000000000000000000000000000000000000000000000081565b610463610944366004613893565b611cb0565b6000818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff168061097857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109b157600080fd5b6000828152600b602090815260408083205473ffffffffffffffffffffffffffffffffffffffff85811685526010845282852033808752945291909320549216149060ff1681806109ff5750805b610a0857600080fd5b6000848152600c602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691821790925591518793918716917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050505050565b600560205281600052604060002081633b9aca008110610aaa57600080fd5b6003020180546001820154600290920154600f82810b955070010000000000000000000000000000000090920490910b925084565b6000610aea42611085565b905090565b600082815260056020526040812082633b9aca008110610b1157610b11613b4e565b600302016001015490505b92915050565b610b2e83838333611cef565b505050565b60125460ff16600114610b4557600080fd5b6012805460ff19166002179055610b5c3382611dda565b610b6857610b68613b7d565b60008181526008602052604090205460ff1615610bcc5760405162461bcd60e51b815260206004820152600860248201527f617474616368656400000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60008181526001602081815260409283902083518085019094528054600f0b845290910154908201819052421015610c465760405162461bcd60e51b815260206004820152601660248201527f546865206c6f636b206469646e277420657870697265000000000000000000006044820152606401610bc3565b805160408051808201825260008082526020808301828152878352600191829052938220925183547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9091161783559251919092015554600f9190910b90610cc08282613bdb565b600081905550610cea848460405180604001604052806000600f0b81526020016000815250611e4d565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303816000875af1158015610d7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da19190613bf2565b610dad57610dad613b7d565b610db6846124fd565b60408051858152602081018490524281830152905133917f02f25270a4d87bea75db541cdfe559334a275b4a233520ed6c0a2429667cca94919081900360600190a27f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c81610e248482613bdb565b6040805192835260208301919091520160405180910390a150506012805460ff191660011790555050565b610b2e838383604051806020016040528060008152506116b3565b6000610e768383611dda565b9392505050565b6000818152600660209081526040808320546005909252822081633b9aca008110610eaa57610eaa613b4e565b60030201547001000000000000000000000000000000009004600f0b9392505050565b60095473ffffffffffffffffffffffffffffffffffffffff163314610ef157600080fd5b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60125460009060ff16600114610f4d57600080fd5b6012805460ff19166002179055610f658383336125d6565b90506012805460ff1916600117905592915050565b60008281526006602052604081205481610f9585858461273e565b60008681526005602052604081209192509082633b9aca008110610fbb57610fbb613b4e565b60408051608081018252600392909202929092018054600f81810b8452700100000000000000000000000000000000909104900b6020830152600181015492820183905260020154606082015291506110149086613bdb565b81602001516110239190613c0f565b81518290611032908390613cc5565b600f90810b90915282516000910b1215905061104d57600081525b51600f0b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600d6020526040812054610b1c565b600354600081815260046020908152604080832081516080810183528154600f81810b8352700100000000000000000000000000000000909104900b938101939093526001810154918301919091526002015460608201529091906110ea818561282d565b949350505050565b6000610e768383612938565b60004382111561111057611110613b7d565b600354600061111f8483612c40565b600081815260046020908152604080832081516080810183528154600f81810b8352700100000000000000000000000000000000909104900b938101939093526001810154918301919091526002015460608201529192508383101561124857600060048161118f866001613d36565b8152602080820192909252604090810160002081516080810183528154600f81810b8352700100000000000000000000000000000000909104900b938101939093526001810154918301919091526002015460608083018290528501519192501461124257826060015181606001516112089190613bdb565b8360400151826040015161121c9190613bdb565b606085015161122b908a613bdb565b6112359190613d4e565b61123f9190613dba565b91505b50611297565b438260600151146112975760608201516112629043613bdb565b60408301516112719042613bdb565b60608401516112809089613bdb565b61128a9190613d4e565b6112949190613dba565b90505b6112b0828284604001516112ab9190613d36565b61282d565b9695505050505050565b60125460ff166001146112cc57600080fd5b6012805460ff191660021790556112e33383611dda565b6112ef576112ef613b7d565b60008281526001602081815260409283902083518085019094528054600f0b845290910154908201528161132557611325613b7d565b60008160000151600f0b1361137c5760405162461bcd60e51b815260206004820152601660248201527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006044820152606401610bc3565b428160200151116113f45760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f742061646420746f2065787069726564206c6f636b2e205769746860448201527f64726177000000000000000000000000000000000000000000000000000000006064820152608401610bc3565b61140383836000846002612cca565b50506012805460ff1916600117905550565b73ffffffffffffffffffffffffffffffffffffffff821633141561143b5761143b613b7d565b33600081815260106020908152604080832073ffffffffffffffffffffffffffffffffffffffff871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60125460ff166001146114c657600080fd5b6012805460ff191660021790556114dd3383611dda565b6114e9576114e9613b7d565b600082815260016020818152604080842081518083019092528054600f0b825290920154908201529062093a80806115218542613d36565b61152b9190613dba565b6115359190613d4e565b90504282602001511161158a5760405162461bcd60e51b815260206004820152600c60248201527f4c6f636b206578706972656400000000000000000000000000000000000000006044820152606401610bc3565b60008260000151600f0b136115e15760405162461bcd60e51b815260206004820152601160248201527f4e6f7468696e67206973206c6f636b65640000000000000000000000000000006044820152606401610bc3565b816020015181116116345760405162461bcd60e51b815260206004820152601f60248201527f43616e206f6e6c7920696e637265617365206c6f636b206475726174696f6e006044820152606401610bc3565b611642630784ce0042613d36565b8111156116915760405162461bcd60e51b815260206004820152601e60248201527f566f74696e67206c6f636b2063616e2062652034207965617273206d617800006044820152606401610bc3565b6116a084600083856003612cca565b50506012805460ff191660011790555050565b6116bf84848433611cef565b823b15611829576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a029061171e903390889087908790600401613dce565b6020604051808303816000875af1925050508015611777575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261177491810190613e0d565b60015b611827573d8080156117a5576040519150601f19603f3d011682016040523d82523d6000602084013e6117aa565b606091505b50805161181f5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610bc3565b805181602001fd5b505b50505050565b60095473ffffffffffffffffffffffffffffffffffffffff16331461185357600080fd5b6000908152600860205260409020805460ff19169055565b6118a9600060405180604001604052806000600f0b8152602001600081525060405180604001604052806000600f0b81526020016000815250611e4d565b565b6000818152600b602052604090205460609073ffffffffffffffffffffffffffffffffffffffff1661191f5760405162461bcd60e51b815260206004820152601b60248201527f517565727920666f72206e6f6e6578697374656e7420746f6b656e00000000006044820152606401610bc3565b60008281526001602081815260409283902083518085019094528054600f0b84529091015490820152610e76836119568142612f23565b60208401518451600f0b613002565b60008281526008602052604090205460ff16156119c45760405162461bcd60e51b815260206004820152600860248201527f61747461636865640000000000000000000000000000000000000000000000006044820152606401610bc3565b808214156119d157600080fd5b6119db3383611dda565b6119e457600080fd5b6119ee3382611dda565b6119f757600080fd5b6000828152600160208181526040808420815180830183528154600f90810b82529185015481850190815287875285855283872084518086019095528054840b855290950154938301849052805194519095929490910b921115611a5f578260200151611a65565b83602001515b604080518082018252600080825260208083018281528b83526001808352858420945185547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9091161785559051930192909255825180840190935280835290820152909150611aea9087908690611e4d565b611af3866124fd565b611b01858383866004612cca565b505050505050565b60125460009060ff16600114611b1e57600080fd5b6012805460ff19166002179055611b368484846125d6565b90506012805460ff191660011790559392505050565b6000610e768383612f23565b600081815260026020526040812054431415611b7657506000919050565b610b1c8242612f23565b60125460ff16600114611b9257600080fd5b6012805460ff1916600217905560008281526001602081815260409283902083518085019094528054600f0b8452909101549082015281611bd257600080fd5b60008160000151600f0b13611c295760405162461bcd60e51b815260206004820152601660248201527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006044820152606401610bc3565b42816020015111611ca15760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f742061646420746f2065787069726564206c6f636b2e205769746860448201527f64726177000000000000000000000000000000000000000000000000000000006064820152608401610bc3565b61140383836000846000612cca565b60095473ffffffffffffffffffffffffffffffffffffffff163314611cd457600080fd5b6000908152600860205260409020805460ff19166001179055565b60008281526008602052604090205460ff1615611d4e5760405162461bcd60e51b815260206004820152600860248201527f61747461636865640000000000000000000000000000000000000000000000006044820152606401610bc3565b611d588183611dda565b611d6157600080fd5b611d6b8483613139565b611d7584836131d2565b611d7f8383613285565b60008281526002602052604080822043905551839173ffffffffffffffffffffffffffffffffffffffff80871692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a450505050565b6000818152600b6020908152604080832054600c83528184205473ffffffffffffffffffffffffffffffffffffffff9182168086526010855283862088841680885295529285205492938085149392909116149060ff168280611e3a5750815b80611e425750805b979650505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260408051608081018252600080825260208201819052918101829052606081019190915260035460009081908715611fb957428760200151118015611ebd575060008760000151600f0b135b15611f02578651611ed390630784ce0090613e2a565b600f0b602080870191909152870151611eed904290613bdb565b8560200151611efc9190613c0f565b600f0b85525b428660200151118015611f1c575060008660000151600f0b135b15611f61578551611f3290630784ce0090613e2a565b600f0b602080860191909152860151611f4c904290613bdb565b8460200151611f5b9190613c0f565b600f0b84525b602080880151600090815260078252604090205490870151600f9190910b935015611fb957866020015186602001511415611f9e57829150611fb9565b602080870151600090815260079091526040902054600f0b91505b60408051608081018252600080825260208201524291810191909152436060820152811561203b575060008181526004602090815260409182902082516080810184528154600f81810b8352700100000000000000000000000000000000909104900b9281019290925260018101549282019290925260029091015460608201525b60408101518160004283101561208857604084015161205a9042613bdb565b60608501516120699043613bdb565b61207b90670de0b6b3a7640000613d4e565b6120859190613dba565b90505b600062093a806120988186613dba565b6120a29190613d4e565b905060005b60ff811015612233576120bd62093a8083613d36565b91506000428311156120d1574292506120e5565b50600082815260076020526040902054600f0b5b6120ef8684613bdb565b87602001516120fe9190613c0f565b8751889061210d908390613cc5565b600f0b905250602087018051829190612127908390613e9e565b600f90810b90915288516000910b1215905061214257600087525b60008760200151600f0b121561215a57600060208801525b60408088018490528501519295508592670de0b6b3a76400009061217e9085613bdb565b6121889086613d4e565b6121929190613dba565b85606001516121a19190613d36565b60608801526121b1600189613d36565b9750428314156121c75750436060870152612233565b6000888152600460209081526040918290208951918a01516fffffffffffffffffffffffffffffffff90811670010000000000000000000000000000000002921691909117815590880151600182015560608801516002909101555061222c81613f0e565b90506120a7565b505060038590558b156122be57886020015188602001516122549190613cc5565b846020018181516122659190613e9e565b600f0b905250885188516122799190613cc5565b84518590612288908390613e9e565b600f90810b90915260208601516000910b121590506122a957600060208501525b60008460000151600f0b12156122be57600084525b6000858152600460209081526040918290208651918701516fffffffffffffffffffffffffffffffff90811670010000000000000000000000000000000002921691909117815590850151600182015560608501516002909101558b156124ef57428b6020015111156123ad57602089015161233a9088613e9e565b96508a602001518a60200151141561235e57602088015161235b9088613cc5565b96505b60208b810151600090815260079091526040902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff89161790555b428a602001511115612429578a602001518a6020015111156124295760208801516123d89087613cc5565b60208b810151600090815260079091526040902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff831617905595505b60008c815260066020526040812054612443906001613d36565b905080600660008f815260200190815260200160002081905550428960400181815250504389606001818152505088600560008f815260200190815260200160002082633b9aca00811061249957612499613b4e565b825160208401516fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029116176003919091029190910190815560408201516001820155606090910151600290910155505b505050505050505050505050565b6125073382611dda565b6125535760405162461bcd60e51b815260206004820181905260248201527f63616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665646044820152606401610bc3565b6000818152600b602052604081205473ffffffffffffffffffffffffffffffffffffffff16906125839083610949565b61258d33836131d2565b604051829060009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60008062093a80806125e88642613d36565b6125f29190613dba565b6125fc9190613d4e565b90506000851161260b57600080fd5b4281116126805760405162461bcd60e51b815260206004820152602660248201527f43616e206f6e6c79206c6f636b20756e74696c2074696d6520696e207468652060448201527f66757475726500000000000000000000000000000000000000000000000000006064820152608401610bc3565b61268e630784ce0042613d36565b8111156126dd5760405162461bcd60e51b815260206004820152601e60248201527f566f74696e67206c6f636b2063616e2062652034207965617273206d617800006044820152606401610bc3565b600a600081546126ec90613f0e565b90915550600a546126fd848261334d565b5060008181526001602081815260409283902083518085019094528054600f0b84528201549083015261273591839189918691612cca565b95945050505050565b60008082815b60808110156128225781831061275957612822565b600060026127678486613d36565b612772906002613d36565b61277c9190613dba565b60008981526005602052604081209192509082633b9aca0081106127a2576127a2613b4e565b60408051608081018252600392909202929092018054600f81810b8452700100000000000000000000000000000000909104900b60208301526001810154928201839052600201546060820152915088106127ff5781945061280d565b61280a600183613bdb565b93505b5050808061281a90613f0e565b915050612744565b509095945050505050565b600080839050600062093a808083604001516128499190613dba565b6128539190613d4e565b905060005b60ff8110156129075761286e62093a8083613d36565b915060008583111561288257859250612896565b50600082815260076020526040902054600f0b5b60408401516128a59084613bdb565b84602001516128b49190613c0f565b845185906128c3908390613cc5565b600f0b905250828614156128d75750612907565b80846020018181516128e99190613e9e565b600f0b905250506040830182905261290081613f0e565b9050612858565b5060008260000151600f0b121561291d57600082525b50516fffffffffffffffffffffffffffffffff169392505050565b60004382111561294a5761294a613b7d565b600083815260066020526040812054815b60808110156129ee57818310612970576129ee565b6000600261297e8486613d36565b612989906001613d36565b6129939190613dba565b6000888152600560205260409020909150869082633b9aca0081106129ba576129ba613b4e565b6003020160020154116129cf578093506129dd565b6129da600182613bdb565b92505b506129e781613f0e565b905061295b565b50600085815260056020526040812083633b9aca008110612a1157612a11613b4e565b604080516080810182526003928302939093018054600f81810b8652700100000000000000000000000000000000909104900b6020850152600181015491840191909152600201546060830152549091506000612a6e8783612c40565b600081815260046020908152604080832081516080810183528154600f81810b8352700100000000000000000000000000000000909104900b938101939093526001810154918301919091526002015460608201529192508084841015612b67576000600481612adf876001613d36565b8152602080820192909252604090810160002081516080810183528154600f81810b8352700100000000000000000000000000000000909104900b93810193909352600181015491830191909152600201546060808301829052860151919250612b499190613bdb565b925083604001518160400151612b5f9190613bdb565b915050612b8b565b6060830151612b769043613bdb565b9150826040015142612b889190613bdb565b90505b60408301518215612bc8578284606001518c612ba79190613bdb565b612bb19084613d4e565b612bbb9190613dba565b612bc59082613d36565b90505b6040870151612bd79082613bdb565b8760200151612be69190613c0f565b87518890612bf5908390613cc5565b600f90810b90915288516000910b129050612c2e57505093516fffffffffffffffffffffffffffffffff169650610b1c95505050505050565b60009950505050505050505050610b1c565b60008082815b6080811015612cc057818310612c5b57612cc0565b60006002612c698486613d36565b612c74906001613d36565b612c7e9190613dba565b6000818152600460205260409020600201549091508710612ca157809350612caf565b612cac600182613bdb565b92505b50612cb981613f0e565b9050612c46565b5090949350505050565b6000548290612cd98682613d36565b6000908155604080518082019091528181526020810191909152825160208085015190830152600f0b8152825187908490612d15908390613e9e565b600f0b9052508515612d2957602083018690525b6000888152600160208181526040909220855181547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff90911617815591850151910155612d89888285611e4d565b338715801590612dab57506004856004811115612da857612da8613f47565b14155b15612e7b576040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152306024830152604482018a90527f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906064016020604051808303816000875af1158015612e4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6f9190613bf2565b612e7b57612e7b613b7d565b83602001518173ffffffffffffffffffffffffffffffffffffffff167fff04ccafc360e16b67d682d17bd9503c4c6b9a131f6be6325762dc9ffc7de6248b8b8942604051612ecc9493929190613f76565b60405180910390a37f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c83612f008a82613d36565b6040805192835260208301919091520160405180910390a1505050505050505050565b60008281526006602052604081205480612f41576000915050610b1c565b600084815260056020526040812082633b9aca008110612f6357612f63613b4e565b60408051608081018252600392909202929092018054600f81810b8452700100000000000000000000000000000000909104900b602083015260018101549282018390526002015460608201529150612fbc9085613fcd565b8160200151612fcb9190613c0f565b81518290612fda908390613cc5565b600f90810b90915282516000910b12159050612ff557600081525b51600f0b9150610b1c9050565b606060405180610120016040528060fd815260200161445860fd913990508061302a866133ca565b60405160200161303b929190614041565b604051602081830303815290604052905080613056856133ca565b6040516020016130679291906140e9565b604051602081830303815290604052905080613082846133ca565b604051602001613093929190614191565b6040516020818303038152906040529050806130ae836133ca565b6040516020016130bf929190614239565b6040516020818303038152906040529050600061310c6130de876133ca565b6130e7846134fc565b6040516020016130f89291906142bb565b6040516020818303038152906040526134fc565b90508060405160200161311f91906143fe565b604051602081830303815290604052915050949350505050565b6000818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff83811691161461316f5761316f613b7d565b6000818152600c602052604090205473ffffffffffffffffffffffffffffffffffffffff16156131ce576000818152600c6020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b5050565b6000818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff83811691161461320857613208613b7d565b6000818152600b6020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905561324682826136d5565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600d6020526040812080546001929061327c908490613bdb565b90915550505050565b6000818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16156132b7576132b7613b7d565b6000818152600b6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8716908117909155808452600d8084528285208054600e86528487208188528652848720889055878752600f86529386209390935590845290915280546001929061327c908490613d36565b600073ffffffffffffffffffffffffffffffffffffffff831661337257613372613b7d565b61337c8383613285565b604051829073ffffffffffffffffffffffffffffffffffffffff8516906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450600192915050565b60608161340a57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115613434578061341e81613f0e565b915061342d9050600a83613dba565b915061340e565b60008167ffffffffffffffff81111561344f5761344f6139bd565b6040519080825280601f01601f191660200182016040528015613479576020820181803683370190505b5090505b84156110ea5761348e600183613bdb565b915061349b600a86614443565b6134a6906030613d36565b60f81b8183815181106134bb576134bb613b4e565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506134f5600a86613dba565b945061347d565b80516060908061351c575050604080516020810190915260008152919050565b6000600361352b836002613d36565b6135359190613dba565b613540906004613d4e565b9050600061354f826020613d36565b67ffffffffffffffff811115613567576135676139bd565b6040519080825280601f01601f191660200182016040528015613591576020820181803683370190505b5090506000604051806060016040528060408152602001614555604091399050600181016020830160005b8681101561361d576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b8352600490920191016135bc565b5060038606600181146136375760028114613681576136c7565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8301526136c7565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b505050918152949350505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600d602052604081205461370790600190613bdb565b6000838152600f6020526040902054909150808214156137645773ffffffffffffffffffffffffffffffffffffffff84166000908152600e602090815260408083208584528252808320839055858352600f909152812055611829565b73ffffffffffffffffffffffffffffffffffffffff939093166000908152600e6020908152604080832093835292815282822080548684528484208190558352600f9091528282209490945592839055908252812055565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146137ea57600080fd5b50565b6000602082840312156137ff57600080fd5b8135610e76816137bc565b60005b8381101561382557818101518382015260200161380d565b838111156118295750506000910152565b6000815180845261384e81602086016020860161380a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610e766020830184613836565b6000602082840312156138a557600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146138d057600080fd5b919050565b600080604083850312156138e857600080fd5b6138f1836138ac565b946020939093013593505050565b6000806040838503121561391257600080fd5b50508035926020909101359150565b60008060006060848603121561393657600080fd5b61393f846138ac565b925061394d602085016138ac565b9150604084013590509250925092565b60006020828403121561396f57600080fd5b610e76826138ac565b80151581146137ea57600080fd5b6000806040838503121561399957600080fd5b6139a2836138ac565b915060208301356139b281613978565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060008060808587031215613a0257600080fd5b613a0b856138ac565b9350613a19602086016138ac565b925060408501359150606085013567ffffffffffffffff80821115613a3d57600080fd5b818701915087601f830112613a5157600080fd5b813581811115613a6357613a636139bd565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715613aa957613aa96139bd565b816040528281528a6020848701011115613ac257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080600060608486031215613afb57600080fd5b8335925060208401359150613b12604085016138ac565b90509250925092565b60008060408385031215613b2e57600080fd5b613b37836138ac565b9150613b45602084016138ac565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015613bed57613bed613bac565b500390565b600060208284031215613c0457600080fd5b8151610e7681613978565b600081600f0b83600f0b6f7fffffffffffffffffffffffffffffff600082136000841383830485118282161615613c4857613c48613bac565b7fffffffffffffffffffffffffffffffff800000000000000000000000000000006000851286820586128184161615613c8357613c83613bac565b60008712925085820587128484161615613c9f57613c9f613bac565b85850587128184161615613cb557613cb5613bac565b5050509290910295945050505050565b600081600f0b83600f0b60008112817fffffffffffffffffffffffffffffffff8000000000000000000000000000000001831281151615613d0857613d08613bac565b816f7fffffffffffffffffffffffffffffff018313811615613d2c57613d2c613bac565b5090039392505050565b60008219821115613d4957613d49613bac565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d8657613d86613bac565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613dc957613dc9613d8b565b500490565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526112b06080830184613836565b600060208284031215613e1f57600080fd5b8151610e76816137bc565b600081600f0b83600f0b80613e4157613e41613d8b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffff8000000000000000000000000000000083141615613e9557613e95613bac565b90059392505050565b600081600f0b83600f0b60008212826f7fffffffffffffffffffffffffffffff03821381151615613ed157613ed1613bac565b827fffffffffffffffffffffffffffffffff80000000000000000000000000000000038212811615613f0557613f05613bac565b50019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613f4057613f40613bac565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b848152602081018490526080810160058410613fbb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60408201939093526060015292915050565b6000808312837f80000000000000000000000000000000000000000000000000000000000000000183128115161561400757614007613bac565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01831381161561403b5761403b613bac565b50500390565b6000835161405381846020880161380a565b7f746f6b656e200000000000000000000000000000000000000000000000000000908301908152835161408d81600684016020880161380a565b7f3c2f746578743e3c7465787420783d2231302220793d2234302220636c617373600692909101918201527f3d2262617365223e0000000000000000000000000000000000000000000000006026820152602e01949350505050565b600083516140fb81846020880161380a565b7f62616c616e63654f662000000000000000000000000000000000000000000000908301908152835161413581600a84016020880161380a565b7f3c2f746578743e3c7465787420783d2231302220793d2236302220636c617373600a92909101918201527f3d2262617365223e000000000000000000000000000000000000000000000000602a820152603201949350505050565b600083516141a381846020880161380a565b7f6c6f636b65645f656e642000000000000000000000000000000000000000000090830190815283516141dd81600b84016020880161380a565b7f3c2f746578743e3c7465787420783d2231302220793d2238302220636c617373600b92909101918201527f3d2262617365223e000000000000000000000000000000000000000000000000602b820152603301949350505050565b6000835161424b81846020880161380a565b7f76616c7565200000000000000000000000000000000000000000000000000000908301908152835161428581600684016020880161380a565b7f3c2f746578743e3c2f7376673e0000000000000000000000000000000000000060069290910191820152601301949350505050565b7f7b226e616d65223a20226c6f636b2023000000000000000000000000000000008152600083516142f381601085016020880161380a565b7f222c20226465736372697074696f6e223a2022536f6c69646c79206c6f636b736010918401918201527f2c2063616e206265207573656420746f20626f6f73742067617567652079696560308201527f6c64732c20766f7465206f6e20746f6b656e20656d697373696f6e2c20616e6460508201527f207265636569766520627269626573222c2022696d616765223a20226461746160708201527f3a696d6167652f7376672b786d6c3b6261736536342c00000000000000000000609082015283516143c88160a684016020880161380a565b7f227d00000000000000000000000000000000000000000000000000000000000060a6929091019182015260a801949350505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161443681601d85016020870161380a565b91909101601d0192915050565b60008261445257614452613d8b565b50069056fe3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722207072657365727665417370656374526174696f3d22784d696e594d696e206d656574222076696577426f783d223020302033353020333530223e3c7374796c653e2e62617365207b2066696c6c3a2077686974653b20666f6e742d66616d696c793a2073657269663b20666f6e742d73697a653a20313470783b207d3c2f7374796c653e3c726563742077696474683d223130302522206865696768743d2231303025222066696c6c3d22626c61636b22202f3e3c7465787420783d2231302220793d2232302220636c6173733d2262617365223e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300080b000a", - "linkReferences": {}, - "deployedLinkReferences": {} - } diff --git a/packages/boba/gateway/src/deployment/rinkeby/addresses.json b/packages/boba/gateway/src/deployment/rinkeby/addresses.json deleted file mode 100644 index 161f45d503..0000000000 --- a/packages/boba/gateway/src/deployment/rinkeby/addresses.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "L1CrossDomainMessenger":"0x04059a546419f54db4bfafFae9d4af3b081C2a8D", - "L1MultiMessageRelayer":"0x5C6263BCAa00C7f5988E148dB3CA178e1262E69f", - "AddressManager":"0x93A96D6A5beb1F661cf052722A1424CDDA3e9418", - "Proxy__L1CrossDomainMessenger":"0xF10EEfC14eB5b7885Ea9F7A631a21c7a82cf5D76", - "Proxy__L1StandardBridge":"0xDe085C82536A06b40D20654c2AbA342F2abD7077", - "TOKENS": { - "USDT": { - "L1": "0xD9BA894E0097f8cC2BBc9D24D308b98e36dc6D02", - "L2": "0x9d0364c866A73e34649869525CD7576080259A42" - }, - "DAI": { - "L1": "0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa", - "L2": "0x0630f97C8938051a44b0A64e9D4d484295393Fe4" - }, - "USDC": { - "L1": "0x4DBCdF9B62e891a7cec5A2568C3F4FAF9E8Abe2b", - "L2": "0xB24898De59C8E259F9742bCF2C16Fd613DCeA8F7" - }, - "WBTC": { - "L1": "0x577D296678535e4903D59A4C929B718e1D575e0A", - "L2": "0x3074A3d2570e06F74F06913965adDcd1161D7fDC" - }, - "REP": { - "L1": "0x6e894660985207feb7cf89Faf048998c71E8EE89", - "L2": "0x7896be8b69069bd39d71b3Fc987C6c0AFF7c3b95" - }, - "BAT": { - "L1": "0xbF7A7169562078c96f0eC1A8aFD6aE50f12e5A99", - "L2": "0x3C07C6627Aa879cD6988A5256E9A04D69DbD9530" - }, - "ZRX": { - "L1": "0xddea378A6dDC8AfeC82C36E9b0078826bf9e68B6", - "L2": "0x23b274b0856C2F55C392d4F051BD252dF6C202D7" - }, - "SUSHI": { - "L1": "0xA434947525699FfbbF74260947c2906831FafD98", - "L2": "0x799F1f4045AFd00DFaE47Ab01Fb94AdB2f120B2C" - }, - "LINK": { - "L1": "0x01BE23585060835E02B77ef475b0Cc51aA1e0709", - "L2": "0x1cC8d6d2f14ac432605558A30461ebF501EaE427" - }, - "UNI": { - "L1": "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984", - "L2": "0x803Ec6089Ab7CC320840EDBd4bB99399467E57E0" - }, - "OMG": { - "L1": "0x2B203de02AD6109521e09985b3aF9B8c62541Cd6", - "L2": "0xC5086AA4BB6F18B3D966381E18Bcc317CeD9507c" - }, - "FRAX": { - "L1": "0x54717398c107ab24ec82bca3f3c2d4dda34c5f1a", - "L2": "0xaB7e355455BE7256222Ea2EBeED77dF499c96DD4" - }, - "FXS": { - "L1": "0x8ca351669fcb3434fb7a174309db3ae252e96c8c", - "L2": "0xBe11B9665c502F8966999f4B2d0E883512f0D124" - }, - "BOBA": { - "L1": "0x6A6676813d3D4317442CF84667425C13553F4a76", - "L2": "0xF5B97a4860c1D81A1e915C40EcCB5E4a5E6b8309" - } - }, - "NFTs": {}, - "L1CrossDomainMessengerFast": "0x2f28C228C2d9C8dB957E3A842C34E1c3f03f38CB", - "Proxy__L1CrossDomainMessengerFast": "0xe2a82CE9671A283190DD5E3f077027979F2c039E", - "L2LiquidityPool": "0x58E48905AbFcBd6eDcb7D7b4fA07C66C5eE5Fe56", - "L1LiquidityPool": "0xBce090E95cc724f3A4dC9c770d46AFF10f9E49d6", - "Proxy__L1LiquidityPool": "0x12F8d1cD442cf1CF94417cE6309c6D2461Bd91a3", - "Proxy__L2LiquidityPool": "0x56851CB42F315D0B90496c86E849167B8Cf7108a", - "L2TokenPool": "0x0DC3084Fd6aabb0CA9EFD20BcC791D5e6820564d", - "L1Message": "0xDCeDc3dD78F11acDD53F4a56e085E99FF7CD970a", - "L2Message": "0x5D349Ca5F9C8E99a2E6d2DddC6b15736ad0A233a", - "AtomicSwap": "0x903cABDe08F7765d201B470178e19ED1b4f48006", - "L2ERC721": "0xEdf91A2fBB745e4651eb57659929813bC3C01f14", - "L2ERC721Reg": "0xf296469f3303760D20197C2a2c9Ab2aDe02bfDEB", - "L1NFTBridge": "0x48b66666E38c0C7b4b8F863D8caEf607262183Ac", - "L2NFTBridge": "0x9b175c83d6238cB4a48E6f3C025D43E35b04391f", - "Proxy__L1NFTBridge": "0x40394f7EAb5aeB995132ba3bd3e46035FB66143a", - "Proxy__L2NFTBridge": "0x92a5dfc88F58A01fB4dBfDccE13368f9a0D418c5", - "L1MultiMessageRelayerFast": "0xEe4A28080C7785A1F14Bc143A8083b2F02B94f88" -} \ No newline at end of file diff --git a/packages/boba/gateway/src/deployment/rinkeby/rinkeby_0x93A96D6A5beb1F661cf052722A1424CDDA3e9418.json b/packages/boba/gateway/src/deployment/rinkeby/rinkeby_0x93A96D6A5beb1F661cf052722A1424CDDA3e9418.json deleted file mode 100644 index 021010bb28..0000000000 --- a/packages/boba/gateway/src/deployment/rinkeby/rinkeby_0x93A96D6A5beb1F661cf052722A1424CDDA3e9418.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "L1CrossDomainMessenger":"0x04059a546419f54db4bfafFae9d4af3b081C2a8D", - "L1MultiMessageRelayer":"0x5C6263BCAa00C7f5988E148dB3CA178e1262E69f", - "Proxy__L1CrossDomainMessenger":"0xF10EEfC14eB5b7885Ea9F7A631a21c7a82cf5D76", - "Proxy__L1StandardBridge":"0xDe085C82536A06b40D20654c2AbA342F2abD7077", - "TK_L1USDT": "0xD9BA894E0097f8cC2BBc9D24D308b98e36dc6D02", - "TK_L2USDT": "0x9d0364c866A73e34649869525CD7576080259A42", - "TK_L1DAI": "0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa", - "TK_L2DAI": "0x0630f97C8938051a44b0A64e9D4d484295393Fe4", - "TK_L1USDC": "0x4DBCdF9B62e891a7cec5A2568C3F4FAF9E8Abe2b", - "TK_L2USDC": "0xB24898De59C8E259F9742bCF2C16Fd613DCeA8F7", - "TK_L1WBTC": "0x577D296678535e4903D59A4C929B718e1D575e0A", - "TK_L2WBTC": "0x3074A3d2570e06F74F06913965adDcd1161D7fDC", - "TK_L1REP": "0x6e894660985207feb7cf89Faf048998c71E8EE89", - "TK_L2REP": "0x7896be8b69069bd39d71b3Fc987C6c0AFF7c3b95", - "TK_L1BAT": "0xbF7A7169562078c96f0eC1A8aFD6aE50f12e5A99", - "TK_L2BAT": "0x3C07C6627Aa879cD6988A5256E9A04D69DbD9530", - "TK_L1ZRX": "0xddea378A6dDC8AfeC82C36E9b0078826bf9e68B6", - "TK_L2ZRX": "0x23b274b0856C2F55C392d4F051BD252dF6C202D7", - "TK_L1SUSHI": "0xA434947525699FfbbF74260947c2906831FafD98", - "TK_L2SUSHI": "0x799F1f4045AFd00DFaE47Ab01Fb94AdB2f120B2C", - "TK_L1LINK": "0x01BE23585060835E02B77ef475b0Cc51aA1e0709", - "TK_L2LINK": "0x1cC8d6d2f14ac432605558A30461ebF501EaE427", - "TK_L1UNI": "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984", - "TK_L2UNI": "0x803Ec6089Ab7CC320840EDBd4bB99399467E57E0", - "TK_L1OMG": "0x2B203de02AD6109521e09985b3aF9B8c62541Cd6", - "TK_L2OMG": "0xC5086AA4BB6F18B3D966381E18Bcc317CeD9507c", - "TK_L1FRAX": "0xa23A5D188C8E2f4b3E029815a793972C58D89890", - "TK_L2FRAX": "0x6FF9c8FF8F0B6a0763a3030540c21aFC721A9148", - "TK_L1FXS": "0xb1efaEC30db0da6CD2ADbDE71D82A73DcA6aF182", - "TK_L2FXS": "0x991AaC49780774D1e358ceA459070f9351022139", - "TK_L1BOBA": "0x6A6676813d3D4317442CF84667425C13553F4a76", - "TK_L2BOBA": "0xF5B97a4860c1D81A1e915C40EcCB5E4a5E6b8309", - "TK_L1UST": "0x012e4C202b1153183F7B0e7A90348C4cCE15d2c9", - "TK_L2UST": "0x429582bDe1B0E011C48d883354050938f194743F", - "TK_L1BUSD": "0x697Eda570FE014832456b4B3d2Dff8591eA3f4fc", - "TK_L2BUSD": "0x01c9DC8B9c66D61a56Db7bF3F5303Cd9E9c85B1F", - "TK_L1BNB": "0xeB72FaBBEF4D4F59bCA384123977eD9529c9bd2e", - "TK_L2BNB": "0x42356f071B65FD0FBA2b74566EB1D3634F008CDa", - "TK_L1FTM": "0x72fe8933fca2c14a8e2b3bf050e3d81e90efeb60", - "TK_L2FTM": "0xc346Ab3D382521296dB7b52d71b062dDEC54e9Db", - "TK_L1MATIC": "0x3ac6affed629a16ffccd1c865ad6e10dc0a1076a", - "TK_L2MATIC": "0xbcA151440F29c10BeBA5a410c52914e236Fc9845", - "TK_L2xBOBA": "0xebE42F5cEA2184F6b416bFFAB0744b11281AE95b", - "NFT_L1BOBA": "0xa0b66988270154d7e2b5f4707682bbb7c7a8671f", - "NFT_L2BOBA": "0x21Cb36a422b75388aFe3b7291b34c7b3c976A05A", - "NFT_L1BOBO": "0x151325621966039835F1Ce7a1E3c5bA88A4F05d6", - "NFT_L2BOBO": "0x66C893019bC366eB497f49c8Df79e63AF73124eA", - "L1CrossDomainMessengerFast": "0x2f28C228C2d9C8dB957E3A842C34E1c3f03f38CB", - "Proxy__L1CrossDomainMessengerFast": "0xe2a82CE9671A283190DD5E3f077027979F2c039E", - "L2LiquidityPool": "0x270216Baf279Ec201D490A26911dfa4F555B26F2", - "L1LiquidityPool": "0xfF7CBEA9a9EC58B02D14906f7C98314686829645", - "Proxy__L1LiquidityPool": "0x12F8d1cD442cf1CF94417cE6309c6D2461Bd91a3", - "Proxy__L2LiquidityPool": "0x56851CB42F315D0B90496c86E849167B8Cf7108a", - "L2TokenPool": "0x0DC3084Fd6aabb0CA9EFD20BcC791D5e6820564d", - "L1Message": "0xDCeDc3dD78F11acDD53F4a56e085E99FF7CD970a", - "L2Message": "0x5D349Ca5F9C8E99a2E6d2DddC6b15736ad0A233a", - "AtomicSwap": "0x903cABDe08F7765d201B470178e19ED1b4f48006", - "L2ERC721": "0xEdf91A2fBB745e4651eb57659929813bC3C01f14", - "L2ERC721Reg": "0xf296469f3303760D20197C2a2c9Ab2aDe02bfDEB", - "L1NFTBridge": "0x054DB39B7C859d1bCBfc156d3f7a5a2d00252115", - "L2NFTBridge": "0xB94bD836eBB6f3733e1a48534938224281fC3A9E", - "Proxy__L1NFTBridge": "0x01F5d5D6de3a8c7A157B22FD331A1F177b7bE043", - "Proxy__L2NFTBridge": "0x5E368E9dce71B624D7DdB155f360E7A4969eB7aA", - "L1MultiMessageRelayerFast": "0xEe4A28080C7785A1F14Bc143A8083b2F02B94f88", - "Timelock": "0xa21B916bC0E7787aAB6b7ba3402cfafF546FEF34", - "GovernorBravoDelegate": "0xBdD8Cb5D75F7375A9A45F40779e055596af7F581", - "GovernorBravoDelegator": "0x472e5C097C790c6a44366a89a987Ec996A4d83e0", - "DiscretionaryExitBurn": "0xF121Fd008A17c8C76DF1f003f19523130060B5BA", - "BobaFixedSavings": "0x87668fD78F3a56Fe0bE323e03A09A120559942c4", - "Proxy__BobaFixedSavings": "0x1fd7e7D032dBB3739791F8AaC2cA59073705F2aE", - "BobaAirdropL1": "0x3067398621D1C1bfe10Fb4C321bF1005fa5BFc3E" -} diff --git a/packages/boba/gateway/src/fonts/MessinaSans-Regular.otf b/packages/boba/gateway/src/fonts/MessinaSans-Regular.otf deleted file mode 100644 index 3a61e64df4..0000000000 Binary files a/packages/boba/gateway/src/fonts/MessinaSans-Regular.otf and /dev/null differ diff --git a/packages/boba/gateway/src/fonts/MessinaSansMono-Bold.ttf b/packages/boba/gateway/src/fonts/MessinaSansMono-Bold.ttf deleted file mode 100644 index 2586259725..0000000000 Binary files a/packages/boba/gateway/src/fonts/MessinaSansMono-Bold.ttf and /dev/null differ diff --git a/packages/boba/gateway/src/fonts/MessinaSansMono-Bold.woff b/packages/boba/gateway/src/fonts/MessinaSansMono-Bold.woff deleted file mode 100644 index 65f72c0761..0000000000 Binary files a/packages/boba/gateway/src/fonts/MessinaSansMono-Bold.woff and /dev/null differ diff --git a/packages/boba/gateway/src/fonts/MessinaSansMono-Bold.woff2 b/packages/boba/gateway/src/fonts/MessinaSansMono-Bold.woff2 deleted file mode 100644 index e3cfa6be75..0000000000 Binary files a/packages/boba/gateway/src/fonts/MessinaSansMono-Bold.woff2 and /dev/null differ diff --git a/packages/boba/gateway/src/fonts/MessinaSansMono-Regular.otf b/packages/boba/gateway/src/fonts/MessinaSansMono-Regular.otf deleted file mode 100644 index 3de6c1c0c5..0000000000 Binary files a/packages/boba/gateway/src/fonts/MessinaSansMono-Regular.otf and /dev/null differ diff --git a/packages/boba/gateway/src/fonts/MessinaSansMono-SemiBold.ttf b/packages/boba/gateway/src/fonts/MessinaSansMono-SemiBold.ttf deleted file mode 100644 index 1fe81701f7..0000000000 Binary files a/packages/boba/gateway/src/fonts/MessinaSansMono-SemiBold.ttf and /dev/null differ diff --git a/packages/boba/gateway/src/fonts/MessinaSansMono-SemiBold.woff b/packages/boba/gateway/src/fonts/MessinaSansMono-SemiBold.woff deleted file mode 100644 index c909f3cd6d..0000000000 Binary files a/packages/boba/gateway/src/fonts/MessinaSansMono-SemiBold.woff and /dev/null differ diff --git a/packages/boba/gateway/src/fonts/MrEavesXLModOT-Bold.ttf b/packages/boba/gateway/src/fonts/MrEavesXLModOT-Bold.ttf deleted file mode 100644 index b9ea4857f9..0000000000 Binary files a/packages/boba/gateway/src/fonts/MrEavesXLModOT-Bold.ttf and /dev/null differ diff --git a/packages/boba/gateway/src/fonts/MrEavesXLModOT-Reg.ttf b/packages/boba/gateway/src/fonts/MrEavesXLModOT-Reg.ttf deleted file mode 100644 index 8087b55dfa..0000000000 Binary files a/packages/boba/gateway/src/fonts/MrEavesXLModOT-Reg.ttf and /dev/null differ diff --git a/packages/boba/gateway/src/fonts/MrEavesXLModOT-Thin.ttf b/packages/boba/gateway/src/fonts/MrEavesXLModOT-Thin.ttf deleted file mode 100644 index a9b31179a4..0000000000 Binary files a/packages/boba/gateway/src/fonts/MrEavesXLModOT-Thin.ttf and /dev/null differ diff --git a/packages/boba/gateway/src/hooks/useAmountToReceive.ts b/packages/boba/gateway/src/hooks/useAmountToReceive.ts deleted file mode 100644 index d32bdf0efa..0000000000 --- a/packages/boba/gateway/src/hooks/useAmountToReceive.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { useEffect, useState } from 'react' -import { useDispatch, useSelector } from 'react-redux' -import { - selectAmountToBridge, - selectBridgeType, - selectL1FeeRateN, - selectL2FeeRateN, - selectLayer, - selectTokenToBridge, -} from 'selectors' -import { toWei_String } from 'util/amountConvert' -import { formatTokenAmount } from 'util/common' -import { LAYER } from 'util/constant' -import { BRIDGE_TYPE } from 'containers/Bridging/BridgeTypeSelector' - -/** - * This hook is used for getting receivable amount. - * - * @returns receivableAmount - */ - -export const useAmountToReceive = () => { - const dispatch = useDispatch() - - const bridgeType = useSelector(selectBridgeType()) - const amount = useSelector(selectAmountToBridge()) - const token = useSelector(selectTokenToBridge()) - const layer = useSelector(selectLayer()) - const l2FeeRateN = useSelector(selectL2FeeRateN) - const l1FeeRateN = useSelector(selectL1FeeRateN) - - const [amountToReceive, setAmountToReceive] = useState< - string | null | number - >(0) - - useEffect(() => { - if (!token) { - return - } - - const formatedAmount = () => { - return formatTokenAmount({ - ...token, - balance: toWei_String(Number(amount), token.decimals), - }) - } - - if (layer === LAYER.L1) { - if (bridgeType === BRIDGE_TYPE.CLASSIC) { - setAmountToReceive(formatedAmount()) - } else if (bridgeType === BRIDGE_TYPE.FAST) { - const value = Number(amount) * ((100 - Number(l2FeeRateN)) / 100) - setAmountToReceive(value.toFixed(3)) - } else { - // Teleportation, no fees as of now - setAmountToReceive(amount) - } - } else { - if (bridgeType === BRIDGE_TYPE.CLASSIC) { - setAmountToReceive(formatedAmount()) - } else if (bridgeType === BRIDGE_TYPE.FAST) { - const value = Number(amount) * ((100 - Number(l1FeeRateN)) / 100) - setAmountToReceive(value.toFixed(3)) - } else { - // Teleportation, no fees as of now - setAmountToReceive(amount) - } - } - }, [dispatch, layer, token, amount, bridgeType, l2FeeRateN, l1FeeRateN]) - - return { - amount: `${amountToReceive} ${token?.symbol}`, - } -} - -export default useAmountToReceive diff --git a/packages/boba/gateway/src/hooks/useBridge.ts b/packages/boba/gateway/src/hooks/useBridge.ts deleted file mode 100644 index a918379180..0000000000 --- a/packages/boba/gateway/src/hooks/useBridge.ts +++ /dev/null @@ -1,175 +0,0 @@ -import { - approveERC20, - depositErc20, - depositETHL2, - depositL1LP, - depositL2LP, - depositWithTeleporter, - exitBOBA, -} from 'actions/networkAction' -import { closeModal, openError, openModal } from 'actions/uiAction' -import { BRIDGE_TYPE } from 'containers/Bridging/BridgeTypeSelector' -import { BigNumberish, ethers } from 'ethers' -import { useDispatch, useSelector } from 'react-redux' -import { - selectActiveNetwork, - selectActiveNetworkType, - selectAmountToBridge, - selectBridgeToAddressState, - selectBridgeType, - selectLayer, - selectTokenToBridge, -} from 'selectors' -import networkService from 'services/networkService' -import { toWei_String } from 'util/amountConvert' -import { Layer, LAYER } from 'util/constant' -import { - purgeBridgeAlert, - resetBridgeAmount, - resetToken, -} from 'actions/bridgeAction' -import { INetwork, NetworkList } from '../util/network/network.util' - -export const useBridge = () => { - const dispatch = useDispatch() - const bridgeType = useSelector(selectBridgeType()) - const layer = useSelector(selectLayer()) - const toL2Account = useSelector(selectBridgeToAddressState()) - const token = useSelector(selectTokenToBridge()) - const amountToBridge = useSelector(selectAmountToBridge()) - - const activeNetworkType = useSelector(selectActiveNetworkType()) - const activeNetwork = useSelector(selectActiveNetwork()) - - const destLayer = layer === Layer.L1 ? Layer.L2 : Layer.L1 - const destChainIdBridge = ( - NetworkList[activeNetworkType] as INetwork[] - )?.find((n) => n.chain === activeNetwork)?.chainId[destLayer] - if (!destChainIdBridge) { - dispatch(openError('Failed to get destination chain id')) - console.error( - 'Destination chainId is undefined, this should never happen: ', - NetworkList, - activeNetworkType, - activeNetwork, - destLayer - ) - } - - const triggerDeposit = async (amountWei: any) => { - let receipt - if (token.address === ethers.constants.AddressZero) { - receipt = await dispatch( - depositETHL2({ - recipient: toL2Account || '', - value_Wei_String: amountWei, - }) - ) - } else { - receipt = await dispatch( - depositErc20({ - recipient: toL2Account || '', - value_Wei_String: amountWei, - currency: token.address, - currencyL2: token.addressL2, - }) - ) - } - - return receipt - } - - const triggerFastDeposit = async (amountWei: any) => { - if (token.symbol !== networkService.L1NativeTokenSymbol) { - // ERC20 token fast bridging. - // step -1 approve token - // step -2 deposit to L1LP. - const allAddresses = networkService.getAllAddresses() - const approvalReciept = await dispatch( - approveERC20( - amountWei, - token.address, - (allAddresses as any)['L1LPAddress'] - ) - ) - - if (approvalReciept === false) { - dispatch( - openError('Failed to approve amount or user rejected signature') - ) - return - } - } - return dispatch(depositL1LP(token.address, amountWei)) - } - - const triggerTeleportAsset = async ( - amountWei: BigNumberish, - destChainId: BigNumberish - ) => { - if (token.address !== ethers.constants.AddressZero) { - // ERC20 token fast bridging. - // step -1 approve token - // step -2 deposit to Teleportation. - - const { teleportationAddr } = networkService.getTeleportationAddress() - const approvalReceipt = await dispatch( - approveERC20(amountWei, token.address, teleportationAddr) - ) - - if (approvalReceipt === false) { - dispatch( - openError('Failed to approve amount or user rejected signature') - ) - return - } - } - return dispatch( - depositWithTeleporter(layer, token.address, amountWei, destChainId) - ) - } - - const triggerExit = async (amountWei: any) => { - return dispatch(exitBOBA(token.address, amountWei)) - } - - const triggerFastExit = async (amountWei: any) => { - return dispatch(depositL2LP(token.address, amountWei)) - } - - const triggerSubmit = async () => { - const amountWei = toWei_String(amountToBridge, token.decimals) - let receipt - dispatch(openModal('bridgeInProgress')) - if (layer === LAYER.L1) { - if (bridgeType === BRIDGE_TYPE.CLASSIC) { - receipt = await triggerDeposit(amountWei) - } else if (bridgeType === BRIDGE_TYPE.FAST) { - receipt = await triggerFastDeposit(amountWei) - } else if (bridgeType === BRIDGE_TYPE.TELEPORTATION) { - receipt = await triggerTeleportAsset(amountWei, destChainIdBridge!) - } - } else { - if (bridgeType === BRIDGE_TYPE.CLASSIC) { - receipt = await triggerExit(amountWei) - } else if (bridgeType === BRIDGE_TYPE.FAST) { - receipt = await triggerFastExit(amountWei) - } else if (bridgeType === BRIDGE_TYPE.TELEPORTATION) { - receipt = await triggerTeleportAsset(amountWei, destChainIdBridge!) - } - } - dispatch(closeModal('bridgeInProgress')) - if (receipt) { - dispatch(openModal('transactionSuccess')) - dispatch(resetToken()) - dispatch(purgeBridgeAlert()) - dispatch(resetBridgeAmount()) - } - } - - return { - triggerSubmit, - } -} - -export default useBridge diff --git a/packages/boba/gateway/src/hooks/useBridgeAlerts.ts b/packages/boba/gateway/src/hooks/useBridgeAlerts.ts deleted file mode 100644 index a276f226bd..0000000000 --- a/packages/boba/gateway/src/hooks/useBridgeAlerts.ts +++ /dev/null @@ -1,471 +0,0 @@ -import { - clearBridgeAlert, - purgeBridgeAlert, - setBridgeAlert, -} from 'actions/bridgeAction' -import { useEffect } from 'react' -import { useDispatch, useSelector } from 'react-redux' -import { - selectActiveNetwork, - selectActiveNetworkType, - selectAmountToBridge, - selectBobaFeeChoice, - selectBobaPriceRatio, - selectBridgeType, - selectExitFee, - selectFastDepositCost, - selectFastExitCost, - selectIsTeleportationOfAssetSupported, - selectL1FeeBalance, - selectL1LPBalanceString, - selectL1LPLiquidity, - selectL1LPPendingString, - selectL2BalanceBOBA, - selectL2BalanceETH, - selectL2LPBalanceString, - selectL2LPLiquidity, - selectL2LPPendingString, - selectLayer, - selectTokenToBridge, -} from 'selectors' -import { logAmount } from 'util/amountConvert' -import { LAYER } from 'util/constant' -import BN from 'bignumber.js' -import { BRIDGE_TYPE } from 'containers/Bridging/BridgeTypeSelector' -import { NETWORK } from 'util/network/network.util' -import { BigNumberish, ethers } from 'ethers' - -enum ALERT_KEYS { - OMG_INFO = 'OMG_INFO', - VALUE_TOO_SMALL = 'VALUE_TOO_SMALL', - VALUE_TOO_LARGE = 'VALUE_TOO_LARGE', - FAST_EXIT_ERROR = 'FAST_EXIT_ERROR', - FAST_DEPOSIT_ERROR = 'FAST_DEPOSIT_ERROR', - DEPRECATION_WARNING = 'DEPRECATION_WARNING', - TELEPORTATION_ASSET_NOT_SUPPORTED = 'TELEPORTER_ASSET_NOT_SUPPORTED', - TELEPORTATION_NO_UNCONVENTIONAL_WALLETS = 'TELEPORTATION_NO_UNCONVENTIONAL_WALLETS', -} - -interface ITeleportationTokenSupport { - supported: boolean - minDepositAmount: BigNumberish - maxDepositAmount: BigNumberish - maxTransferAmountPerDay: BigNumberish - transferTimestampCheckPoint: BigNumberish - transferredAmount: BigNumberish -} - -const useBridgeAlerts = () => { - const dispatch = useDispatch() - const layer = useSelector(selectLayer()) - const bridgeType = useSelector(selectBridgeType()) - const token = useSelector(selectTokenToBridge()) - const amountToBridge = useSelector(selectAmountToBridge()) - - // network - const activeNetwork = useSelector(selectActiveNetwork()) - const tokenForTeleportationSupported: ITeleportationTokenSupport = - useSelector(selectIsTeleportationOfAssetSupported()) - - // fast input layer 1 - const L1LPBalance = useSelector(selectL2LPBalanceString) - const L1LPPending = useSelector(selectL2LPPendingString) - const L1LPLiquidity = useSelector(selectL2LPLiquidity) - const L1feeBalance = useSelector(selectL1FeeBalance) - const fastDepositCost = useSelector(selectFastDepositCost) - - // imports needed for layer= 2; - const feeBalanceETH = useSelector(selectL2BalanceETH) - const feeBalanceBOBA = useSelector(selectL2BalanceBOBA) - const feeUseBoba = useSelector(selectBobaFeeChoice()) - const feePriceRatio = useSelector(selectBobaPriceRatio()) - const exitFee = useSelector(selectExitFee) - const fastExitCost = useSelector(selectFastExitCost) - const LPBalance = useSelector(selectL1LPBalanceString) - const LPPending = useSelector(selectL1LPPendingString) - const LPLiquidity = useSelector(selectL1LPLiquidity) - - useEffect(() => { - if (bridgeType === BRIDGE_TYPE.TELEPORTATION) { - if (!tokenForTeleportationSupported.supported) { - dispatch( - clearBridgeAlert({ - keys: [ALERT_KEYS.VALUE_TOO_LARGE, ALERT_KEYS.VALUE_TOO_SMALL], - }) - ) - dispatch( - setBridgeAlert({ - meta: ALERT_KEYS.TELEPORTATION_ASSET_NOT_SUPPORTED, - type: 'error', - text: `Asset not supported, please choose different asset or one of our other bridge modes.`, - }) - ) - } else { - dispatch( - clearBridgeAlert({ - keys: [ALERT_KEYS.TELEPORTATION_ASSET_NOT_SUPPORTED], - }) - ) - dispatch( - setBridgeAlert({ - meta: ALERT_KEYS.TELEPORTATION_NO_UNCONVENTIONAL_WALLETS, - type: 'info', - text: `This bridge doesn't support smart-contract wallets that use a costly fallback method.`, - }) - ) - - if ( - amountToBridge && - amountToBridge < tokenForTeleportationSupported.minDepositAmount - ) { - dispatch( - setBridgeAlert({ - meta: ALERT_KEYS.VALUE_TOO_SMALL, - type: 'error', - text: `For this asset you need to bridge at least ${ethers.utils.formatEther( - tokenForTeleportationSupported.minDepositAmount - )}.`, - }) - ) - } else if ( - amountToBridge > tokenForTeleportationSupported.maxDepositAmount - ) { - dispatch( - setBridgeAlert({ - meta: ALERT_KEYS.VALUE_TOO_LARGE, - type: 'error', - text: `For this asset you are allowed to bridge at maximum ${ethers.utils.formatEther( - tokenForTeleportationSupported.maxDepositAmount - )} per transaction.`, - }) - ) - } - } - } - }, [tokenForTeleportationSupported, bridgeType]) - - // show infor to user about to OMG token when - // connected to layer 1 ETH as token is specific to ethereum only. - useEffect(() => { - if (layer === LAYER.L1) { - if (token && token.symbol === 'OMG') { - dispatch( - setBridgeAlert({ - meta: ALERT_KEYS.OMG_INFO, - type: 'info', - text: `The OMG Token was minted in 2017 and it does not conform to the ERC20 token standard. - In some cases, three interactions with MetaMask are needed. If you are bridging out of a - new wallet, it starts out with a 0 approval, and therefore, only two interactions with - MetaMask will be needed.`, - }) - ) - } else { - dispatch( - clearBridgeAlert({ - keys: [ALERT_KEYS.OMG_INFO], - }) - ) - } - } - }, [dispatch, layer, token, bridgeType]) - - useEffect(() => { - if (!token) { - return - } - const maxValue = logAmount(token.balance, token.decimals) - const underZero = new BN(amountToBridge).lt(new BN(0.0)) - const overMax = new BN(amountToBridge).gt(new BN(maxValue)) - - dispatch( - clearBridgeAlert({ - keys: [ALERT_KEYS.VALUE_TOO_LARGE, ALERT_KEYS.VALUE_TOO_SMALL], - }) - ) - - if ((underZero || amountToBridge <= 0) && amountToBridge) { - dispatch( - setBridgeAlert({ - meta: ALERT_KEYS.VALUE_TOO_SMALL, - type: 'error', - text: `Value too small: the value must be greater than 0`, - }) - ) - } else if (overMax) { - dispatch( - setBridgeAlert({ - meta: ALERT_KEYS.VALUE_TOO_LARGE, - type: 'error', - text: `Value too large: the value must be smaller than ${Number( - maxValue - ).toFixed(5)}`, - }) - ) - } - }, [dispatch, token, amountToBridge]) - - /** - * Checks to run specific to L2 chains. - * 1. check exitFee > balanceBoba. - * 2. check feeETH > feeETHbalance - * a. symbol=ETH then (value + feeETH) > feeETHBalance. - * b. symbol=NA then (feeETH) > feeETHBalance. - * 3. feeUseBoba : - * a. symbol=boba then (value + feeBoba + exitFee) > feeBobaBalance - * b. symbol=NA (feeBoba + exitFee) > feeBobaBalance - * 4. LPRatio < 0.1 // we always wants user to have some balance for unstaking. - * a. && value > BSP * 0.9 - * b. && value <= BSP * 0.9 - * 5. value > balanceSubPending * 0.9 : error. - * - */ - - useEffect(() => { - if (!token) { - return - } - dispatch( - clearBridgeAlert({ - keys: [ALERT_KEYS.FAST_EXIT_ERROR], - }) - ) - if (layer === LAYER.L2 && bridgeType !== BRIDGE_TYPE.TELEPORTATION) { - // trigger only when withdrawing funds. - let warning = '' - const balance = Number(logAmount(token.balance, token.decimals)) - const ethCost = Number(fastExitCost) * 1.04 // 1.04 == safety margin on the cost. - const bobaCost = ethCost * feePriceRatio - - if (exitFee > feeBalanceBOBA) { - warning = `Insufficient BOBA balance to cover xChain message relay. You need at least ${exitFee} BOBA` - } else if (ethCost > feeBalanceETH) { - if (feeUseBoba) { - warning = `ETH balance too low. Even if you pay in BOBA, you still need to maintain a minimum ETH balance in your wallet` - } else { - warning = `ETH balance too low to cover gas` - } - } else if (feeUseBoba) { - if ( - token.symbol === 'BOBA' && - Number(amountToBridge) + bobaCost + exitFee > balance - ) { - warning = `Insufficient BOBA balance to conver Boba Amount, Exit Fee and Relay fee.` - } else if (bobaCost + exitFee > feeBalanceBOBA) { - warning = `Insufficient BOBA balance to conver Exit Fee and Relay fee.` - } - } else if ( - token.symbol === 'ETH' && - Number(amountToBridge) + ethCost > balance - ) { - if (feeUseBoba) { - warning = `Insufficient ETH Balance to cover ETH amount and fees. Even if you pay in BOBA, you still need to maintain a minimum ETH balance in your wallet` - } - warning = `Insufficient ETH balance to cover ETH Amount and Exit fee.` - } - - if (bridgeType === BRIDGE_TYPE.FAST && balance > 0) { - // as in case of fast withdrwal we are using liquidity pools so below checks are required. - let LpRatio = 0 - const lbl = Number(logAmount(LPLiquidity, token.decimals)) - if (lbl > 0) { - const lpb = Number(logAmount(LPBalance, token.decimals)) - const LPR = lpb / lbl - LpRatio = Number(LPR) - } - - const lpUnits: any = logAmount(LPBalance, token.decimals) - const pendingUnits: any = logAmount(LPPending, token.decimals) - const pendingExitsBalance = Number(lpUnits) - Number(pendingUnits) // inflight exits (pending exits) - - if (LpRatio < 0.1) { - if (Number(amountToBridge) > Number(pendingExitsBalance) * 0.9) { - //not enough absolute balance - //we don't want one large bridge to wipe out all the balance - //NOTE - this logic still allows bridgers to drain the entire pool, but just more slowly than before - //this is because the every time someone exits, the limit is recalculated - //via Number(LPBalance) * 0.9, and LPBalance changes over time - warning = `Insufficient balance in pool and balance / liquidity ratio too low, please reduce amount or use classical exit` - } else if ( - Number(amountToBridge) <= - Number(pendingExitsBalance) * 0.9 - ) { - warning = `The pool's balance/liquidity ratio (of ${Number( - LpRatio - ).toFixed(2)}) is too low. - Please use the classic bridge.` - } else { - warning = `There is not enough liquidity in the fast bridge pool - please reduce amount or use classical bridge` - } - } - - if ( - LpRatio >= 0.1 && - Number(amountToBridge) > Number(pendingExitsBalance) * 0.9 - ) { - warning = `The pool's balance of ${Number( - pendingExitsBalance - ).toFixed(2)} (including inflight bridges) is too low. - Please use the classic bridge or reduce the amount.` - } - } - - if (warning) { - dispatch( - setBridgeAlert({ - meta: ALERT_KEYS.FAST_EXIT_ERROR, - type: 'error', - text: warning, - }) - ) - } - } - }, [ - dispatch, - layer, - bridgeType, - amountToBridge, - token, - feeBalanceBOBA, - feeBalanceETH, - feePriceRatio, - feeUseBoba, - exitFee, - fastExitCost, - LPLiquidity, - LPBalance, - LPPending, - ]) - - // alerts for fast deposit L1. - - useEffect(() => { - if (!token) { - return - } - - dispatch( - clearBridgeAlert({ - keys: [ALERT_KEYS.FAST_DEPOSIT_ERROR], - }) - ) - - if (layer === LAYER.L1 && bridgeType === BRIDGE_TYPE.FAST) { - let warning = '' - let type = 'error' - const balance = Number(logAmount(token.balance, token.decimals)) - - if (fastDepositCost > L1feeBalance) { - warning = `Insufficient L1 ETH balance to cover Gas fee` - } - if (token.symbol === 'ETH') { - if (Number(amountToBridge) + fastDepositCost > L1feeBalance) { - warning = `Insufficient L1 ETH balance to cover Amount and Gas fee` - } - if (Number(amountToBridge) + fastDepositCost > L1feeBalance * 0.96) { - warning = `Your L1 ETH balance ${L1feeBalance.toFixed(4)} - is very close to the estimated total (gas fee + amount). - Transaction might fail` - type = 'warning' - } - } else { - if (fastDepositCost > L1feeBalance) { - warning = `Insufficient L1 ETH balance to cover Gas fee` - } - if (fastDepositCost > L1feeBalance * 0.96) { - warning = `Your L1 ETH balance ${L1feeBalance.toFixed(4)} - is very close to the gas fee + amount. - Transaction might fail, it would be safe to have slightly more ETH in your L1 wallet to cover gas fee` - type = 'warning' - } - } - - if (balance > 0) { - let LpRatio = 0 - - const lbl = Number(logAmount(L1LPLiquidity, token.decimals)) - if (lbl > 0) { - const lbp = Number(logAmount(L1LPBalance, token.decimals)) - const LPR = lbp / lbl - LpRatio = Number(LPR) - } - const L1lpUnits = logAmount(L1LPBalance, token.decimals) - const pendingUnits = logAmount(L1LPPending, token.decimals) - const pendingDepositBalance = Number(L1lpUnits) - Number(pendingUnits) ////subtract the in flight exits - - if (LpRatio < 0.1) { - //not enough balance/liquidity ratio - //we always want some balance for unstaking - - if (Number(amountToBridge) > pendingDepositBalance * 0.9) { - //not enough absolute balance - //we don't want one large bridge to wipe out the entire balance - //NOTE - this logic still allows bridgers to drain the entire pool, but just more slowly than before - //this is because the every time someone exits, the limit is recalculated - //via Number(LPBalance) * 0.9, and LPBalance changes over time - - warning = `The ${token.symbol} pool's balance and balance/liquidity ratio is - low. Please use the classic bridge.` - } else if (Number(amountToBridge) <= pendingDepositBalance * 0.9) { - warning = `The ${token.symbol} pool's balance/liquidity ratio (of - ${Number(LpRatio).toFixed(2)}) is too low. Please use the classic - bridge.` - } else { - warning = `There is not enough liquidity in the fast bridge pool - reduce your amount or use the Classic Bridge` - } - } - - if ( - LpRatio >= 0.1 && - Number(amountToBridge) > Number(pendingDepositBalance) * 0.9 - ) { - warning = `The ${token.symbol} pool's balance of - ${Number(pendingDepositBalance).toFixed(2)} - (including inflight bridges) is too low. - Please use the classic bridge or reduce the amount.` - } - } - - if (warning) { - dispatch( - setBridgeAlert({ - meta: ALERT_KEYS.FAST_EXIT_ERROR, - text: warning, - type, - }) - ) - } - } - }, [ - dispatch, - layer, - bridgeType, - amountToBridge, - token, - L1LPBalance, - L1LPPending, - L1LPLiquidity, - L1feeBalance, - fastDepositCost, - ]) - - useEffect(() => { - if (activeNetwork === NETWORK.AVAX && layer === LAYER.L1) { - dispatch( - setBridgeAlert({ - meta: ALERT_KEYS.DEPRECATION_WARNING, - text: `For users of BobaAvax (Fuji) or BobaAvax (Fuji) applications - you will need to transfer all your funds to Avalanche mainnet before October 31st - or risk permanently losing access to any assets on BobaAvax (Fuji)`, - type: 'warning', - }) - ) - } - }, [activeNetwork, layer]) - - // on changing bridgeType only cleanup alerts - useEffect(() => { - dispatch(purgeBridgeAlert()) - }, [dispatch, bridgeType]) -} - -export default useBridgeAlerts diff --git a/packages/boba/gateway/src/hooks/useBridgeCleanup.ts b/packages/boba/gateway/src/hooks/useBridgeCleanup.ts deleted file mode 100644 index db5144a7b8..0000000000 --- a/packages/boba/gateway/src/hooks/useBridgeCleanup.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { - purgeBridgeAlert, - resetBridgeAmount, - resetToken, -} from 'actions/bridgeAction' -import { useEffect } from 'react' -import { useDispatch, useSelector } from 'react-redux' -import { - selectActiveNetwork, - selectActiveNetworkType, - selectBaseEnabled, - selectBridgeType, - selectLayer, -} from 'selectors' - -export const useBridgeCleanup = () => { - const dispatch = useDispatch() - - const activeNetwork = useSelector(selectActiveNetwork()) - const activeNetworkType = useSelector(selectActiveNetworkType()) - const baseEnabled = useSelector(selectBaseEnabled()) - const layer = useSelector(selectLayer()) - const bridgeType = useSelector(selectBridgeType()) - - useEffect(() => { - // listen to all change and cleanup bridge token & bridge alert - dispatch(resetToken()) - dispatch(purgeBridgeAlert()) - dispatch(resetBridgeAmount()) - }, [ - dispatch, - activeNetwork, - activeNetworkType, - baseEnabled, - layer, - bridgeType, - ]) -} - -export default useBridgeCleanup diff --git a/packages/boba/gateway/src/hooks/useBridgeSetup.ts b/packages/boba/gateway/src/hooks/useBridgeSetup.ts deleted file mode 100644 index 8c147cb0ba..0000000000 --- a/packages/boba/gateway/src/hooks/useBridgeSetup.ts +++ /dev/null @@ -1,134 +0,0 @@ -import { - fetchL2LPBalance, - fetchL2LPLiquidity, - fetchL2LPPending, - fetchL2TotalFeeRate, - fetchL2FeeRateN, - fetchFastDepositCost, - fetchL1FeeBalance, - fetchClassicExitCost, - fetchExitFee, - fetchL2BalanceBOBA, - fetchL2BalanceETH, - fetchFastExitCost, - fetchL1FeeRateN, - fetchL1LPBalance, - fetchL1LPLiquidity, - fetchL1LPPending, - fetchL1TotalFeeRate, -} from 'actions/balanceAction' -import { clearLookupPrice, fetchLookUpPrice } from 'actions/networkAction' -import { BRIDGE_TYPE } from 'containers/Bridging/BridgeTypeSelector' -import { useCallback, useEffect } from 'react' -import { useDispatch, useSelector } from 'react-redux' -import { - selectAccountEnabled, - selectBridgeType, - selectLayer, - selectTokenToBridge, - selectTokens, -} from 'selectors' -import networkService from 'services/networkService' -import { LAYER } from 'util/constant' - -const useBridgeSetup = () => { - const dispatch = useDispatch() - const isAccountEnabled = useSelector(selectAccountEnabled()) - const tokenList = useSelector(selectTokens) - const layer = useSelector(selectLayer()) - const bridgeType = useSelector(selectBridgeType()) - const token = useSelector(selectTokenToBridge()) - - useEffect(() => { - if (bridgeType === BRIDGE_TYPE.TELEPORTATION) { - // Teleportation - // TODO: Load required info - } - - if (layer === LAYER.L1) { - if (token && bridgeType === BRIDGE_TYPE.FAST) { - /** - * when we are on l1, but the funds will be paid out to L2. - * Goal now is to find out the as much we can about the state of L2 pools - * - * fetching: required info for fast briding - * 1. L2LP Balance - * 2. L2Lp Liquidity - * 3. L2Lp pending - * 4. L2 TotalFeeRate - * 5. L2 TotalFeeRateN // use to calculate the receivable amount. - * 6. fetch fast deposit cost // cost of fast deposit. - * 7. fetch L1 fee balance // eth balance which user has to pay gas fee. - */ - dispatch(fetchL2LPBalance(token.addressL2)) - dispatch(fetchL2LPLiquidity(token.addressL2)) - dispatch(fetchL2LPPending(token.addressL1)) //lookup is, confusingly, via L1 token address - dispatch(fetchL2TotalFeeRate()) - dispatch(fetchL2FeeRateN(token.addressL2)) - dispatch(fetchFastDepositCost(token.address)) - dispatch(fetchL1FeeBalance()) //ETH balance for paying gas - return () => { - dispatch({ type: 'BALANCE/L2/RESET' }) - } - } - } else if (layer === LAYER.L2 && token) { - dispatch(fetchL2BalanceETH()) - dispatch(fetchL2BalanceBOBA()) - dispatch(fetchExitFee()) - - if (bridgeType === BRIDGE_TYPE.CLASSIC) { - // fetching details for classic Exits - dispatch(fetchClassicExitCost(token.address)) - } else if (bridgeType === BRIDGE_TYPE.FAST) { - dispatch(fetchL1LPBalance(token.addressL1)) - dispatch(fetchL1LPLiquidity(token.addressL1)) - dispatch(fetchL1LPPending(token.addressL2)) //lookup is, confusingly, via L2 token address - dispatch(fetchL1TotalFeeRate()) - dispatch(fetchL1FeeRateN(token.addressL1)) - dispatch(fetchFastExitCost(token.address)) - } - - return () => { - dispatch({ type: 'BALANCE/L1/RESET' }) - } - } - }, [layer, token, bridgeType, dispatch]) - - const getLookupPrice = useCallback(() => { - if (!isAccountEnabled) { - return - } - // TODO: refactor and make sure to triggered this once all the tokens are - // // only run once all the tokens have been added to the tokenList - if (Object.keys(tokenList).length < networkService.supportedTokens.length) { - return - } - const symbolList = Object.values(tokenList).map((i: any) => { - if (i.symbolL1 === 'ETH') { - return 'ethereum' - } else if (i.symbolL1 === 'OMG') { - return 'omg' - } else if (i.symbolL1 === 'BOBA') { - return 'boba-network' - } else if (i.symbolL1 === 'OLO') { - return 'oolongswap' - } else { - return i.symbolL1.toLowerCase() - } - }) - - dispatch(fetchLookUpPrice(symbolList)) - }, [tokenList, dispatch, isAccountEnabled]) - - useEffect(() => { - if (isAccountEnabled) { - getLookupPrice() - } - - return () => { - dispatch(clearLookupPrice()) - } - }, [getLookupPrice, isAccountEnabled]) -} - -export default useBridgeSetup diff --git a/packages/boba/gateway/src/hooks/useDisconnect.js b/packages/boba/gateway/src/hooks/useDisconnect.js deleted file mode 100644 index 62dc1a5659..0000000000 --- a/packages/boba/gateway/src/hooks/useDisconnect.js +++ /dev/null @@ -1,29 +0,0 @@ -import { useDispatch } from 'react-redux'; -import { - setLayer, - setConnect, - setConnectBOBA, - setConnectETH, - setEnableAccount, - setWalletConnected -} from 'actions/setupAction'; - -import networkService from 'services/networkService'; - -const useDisconnect = () => { - const dispatch = useDispatch(); - - const disconnect = async () => { - await networkService.walletService.disconnectWallet() - dispatch(setLayer(null)) - dispatch(setConnect(false)) - dispatch(setConnectBOBA(false)) - dispatch(setConnectETH(false)) - dispatch(setWalletConnected(false)) - dispatch(setEnableAccount(false)) - } - - return { disconnect } -} - -export default useDisconnect diff --git a/packages/boba/gateway/src/hooks/useFeeSwitcher.ts b/packages/boba/gateway/src/hooks/useFeeSwitcher.ts deleted file mode 100644 index 37eda27989..0000000000 --- a/packages/boba/gateway/src/hooks/useFeeSwitcher.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { switchFee } from 'actions/setupAction' -import { openAlert, openError } from 'actions/uiAction' -import BN from 'bignumber.js' -import { isEqual } from 'lodash' -import { useCallback } from 'react' -import { useDispatch, useSelector } from 'react-redux' -import { selectBobaFeeChoice, selectlayer2Balance } from 'selectors' -import networkService from 'services/networkService' -import { logAmount } from 'util/amountConvert' - -/** - * useFeeSwitcher. - * - * Hook to switch the fee when in case of L2 - */ - -const useFeeSwitcher = () => { - const dispatch = useDispatch() - const feeUseBoba = useSelector(selectBobaFeeChoice()) - const l2Balances = useSelector(selectlayer2Balance, isEqual) - const l2BalanceNativeToken = l2Balances.filter( - (i: any) => i.symbol === networkService.L1NativeTokenSymbol - ) - const balanceETH = l2BalanceNativeToken[0] - const l2BalanceBOBA = l2Balances.filter((i: any) => i.symbol === 'BOBA') - const balanceBOBA = l2BalanceBOBA[0] - - const switchFeeUse = useCallback( - async (targetFee) => { - let tooSmallL1NativeToken = false - // mini balance required for token to use as bridge fee - const minL1NativeBalance = - await networkService.estimateMinL1NativeTokenForFee() //0.002 - let tooSmallBOBA = false - - if (typeof balanceBOBA === 'undefined') { - tooSmallBOBA = true - } else { - //check actual balance - tooSmallBOBA = new BN(logAmount(balanceBOBA.balance, 18)).lt(new BN(1)) - } - - if (typeof balanceETH === 'undefined') { - tooSmallL1NativeToken = true - } else { - //check actual balance - tooSmallL1NativeToken = new BN(logAmount(balanceETH.balance, 18)).lt( - new BN(minL1NativeBalance) - ) - } - - if (!balanceBOBA && !balanceETH) { - dispatch( - openError('Wallet empty - please bridge in ETH or BOBA from L1') - ) - return - } - - let res - - if (feeUseBoba && targetFee === 'BOBA') { - // do nothing - already set to BOBA - } else if ( - !feeUseBoba && - targetFee === networkService.L1NativeTokenSymbol - ) { - // do nothing - already set to ETH - } else if (!feeUseBoba && targetFee === 'BOBA') { - // change to BOBA - if (tooSmallBOBA) { - dispatch( - openError(`You cannot change the fee token to BOBA since your BOBA balance is below 1 BOBA. - If you change fee token now, you might get stuck. Please swap some ETH for BOBA first.`) - ) - } else { - res = await dispatch(switchFee(targetFee)) - } - } else if ( - feeUseBoba && - targetFee === networkService.L1NativeTokenSymbol - ) { - // change to L1Native Token - if (tooSmallL1NativeToken) { - dispatch( - openError(`You cannot change the fee token to ${networkService.L1NativeTokenSymbol} since your ${networkService.L1NativeTokenSymbol} balance is below ${minL1NativeBalance}. - If you change fee token now, you might get stuck. Please obtain some ${networkService.L1NativeTokenSymbol} first.`) - ) - } else { - res = await dispatch(switchFee(targetFee)) - } - } - - if (res) { - dispatch(openAlert(`Successfully changed fee to ${targetFee}`)) - } - }, - [dispatch, feeUseBoba, balanceETH, balanceBOBA] - ) - - return { switchFeeUse } -} - -export default useFeeSwitcher diff --git a/packages/boba/gateway/src/hooks/useGasWatcher.ts b/packages/boba/gateway/src/hooks/useGasWatcher.ts deleted file mode 100644 index 92158b00f7..0000000000 --- a/packages/boba/gateway/src/hooks/useGasWatcher.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { fetchVerifierStatus } from 'actions/verifierAction' -import { useCallback, useEffect, useState } from 'react' -import { useDispatch, useSelector } from 'react-redux' -import { - selectBaseEnabled, - selectActiveNetworkName, - selectActiveNetwork, - selectActiveNetworkType, - selectVerifierStatus, -} from 'selectors' -import networkService from 'services/networkService' -import { NETWORK, NETWORK_TYPE } from 'util/network/network.util' -import gasService from 'services/gas.service' -import useInterval from './useInterval' -import { GAS_POLL_INTERVAL } from 'util/constant' - -/** - * - * useGasWatcher. - * - * Gas Calculation - * - Fetch gas savings & gas details. - The l1 security fee is moved to the l2 fee - const gasSavings = (Number(gas.gasL1) * (l2Fee - l1SecurityFee) / Number(gas.gasL2)) / l2Fee; - The l1 security fee is directly deducted from the user's account - * - * NOTE:TODO: https://github.com/bobanetwork/boba/pull/982#discussion_r1253868688 - */ - -const useGasWatcher = () => { - const dispatch = useDispatch() - - const verifierStatus = useSelector(selectVerifierStatus) - const baseEnabled = useSelector(selectBaseEnabled()) - const [gas, setGas] = useState() - const networkName = useSelector(selectActiveNetworkName()) - const activeNetwork = useSelector(selectActiveNetwork()) - const activeNetworkType = useSelector(selectActiveNetworkType()) - - const [savings, setSavings] = useState(1) - - const fetchGasDetail = useCallback(() => { - if (baseEnabled) { - const fetchGas = async () => { - const gasDetail = await gasService.getGas() - setGas(gasDetail) - } - - fetchGas() - - if (activeNetwork === NETWORK.ETHEREUM) { - dispatch(fetchVerifierStatus()) - } - } - }, [networkName, baseEnabled, dispatch]) - - useEffect(() => { - const getGasSavings = async () => { - const l1SecurityFee = await networkService.estimateL1SecurityFee() - const l2Fee = await networkService.estimateL2Fee() - - const gasSavings = - (Number(gas.gasL1) * l2Fee) / - Number(gas.gasL2) / - (l2Fee + l1SecurityFee) - setSavings(gasSavings ? gasSavings : 0) - } - // fetch savings only if network is ethereum and mainnet. - if ( - activeNetwork === NETWORK.ETHEREUM && - activeNetworkType === NETWORK_TYPE.MAINNET && - gas - ) { - getGasSavings() - } - - fetchGasDetail() - }, [fetchGasDetail, activeNetwork]) - - useInterval(() => { - fetchGasDetail() - }, GAS_POLL_INTERVAL) - - return { savings, gas, verifierStatus } -} - -export default useGasWatcher diff --git a/packages/boba/gateway/src/hooks/useGoogleAnalytics.js b/packages/boba/gateway/src/hooks/useGoogleAnalytics.js deleted file mode 100644 index a5c7963f91..0000000000 --- a/packages/boba/gateway/src/hooks/useGoogleAnalytics.js +++ /dev/null @@ -1,35 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import { useEffect } from 'react'; -import { useLocation } from 'react-router-dom'; -import analytics from 'util/analytics'; - -const useGoogleAnalytics = () => { - const location = useLocation(); - - useEffect(() => { - analytics.init() - }, []); - - - useEffect(() => { - analytics.sendPageView(location.pathname) - }, [ location ]); - -} - - -export default useGoogleAnalytics; diff --git a/packages/boba/gateway/src/hooks/useInterval.js b/packages/boba/gateway/src/hooks/useInterval.js deleted file mode 100644 index f67f0bed13..0000000000 --- a/packages/boba/gateway/src/hooks/useInterval.js +++ /dev/null @@ -1,35 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import { useEffect, useRef } from 'react'; - -export default function useInterval (callback, delay) { - const savedCallback = useRef(); - - useEffect(() => { - savedCallback.current = callback; - }, [ callback ]); - - useEffect(() => { - function tick () { - savedCallback.current(); - } - if (delay !== null) { - tick(); - let id = setInterval(tick, delay); - return () => clearInterval(id); - } - }, [ delay ]); -} diff --git a/packages/boba/gateway/src/hooks/useNetwork.ts b/packages/boba/gateway/src/hooks/useNetwork.ts deleted file mode 100644 index 26c3cdd484..0000000000 --- a/packages/boba/gateway/src/hooks/useNetwork.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import { setNetwork } from 'actions/networkAction' -import { useEffect } from 'react' -import { useDispatch, useSelector } from 'react-redux' -import { selectActiveNetwork, selectActiveNetworkType } from 'selectors' -import { NetworkList } from 'util/network/network.util' - -const useNetwork = () => { - const dispatch = useDispatch() - const activeNetworkType = useSelector(selectActiveNetworkType()) - const activeNetwork = useSelector(selectActiveNetwork()) - - useEffect(() => { - const { name, icon, chainId } = (NetworkList as any)[ - activeNetworkType as any - ].filter((n: any) => n.chain === activeNetwork)[0] - - dispatch( - setNetwork({ - name, - network: activeNetwork, - networkIcon: icon, - chainIds: chainId, - }) - ) - }, [dispatch, activeNetworkType, activeNetwork]) -} - -export default useNetwork diff --git a/packages/boba/gateway/src/hooks/useOnboard.ts b/packages/boba/gateway/src/hooks/useOnboard.ts deleted file mode 100644 index 01d02741d5..0000000000 --- a/packages/boba/gateway/src/hooks/useOnboard.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { setBaseState } from 'actions/setupAction' -import { useEffect } from 'react' -import { useDispatch, useSelector } from 'react-redux' -import { - selectActiveNetwork, - selectActiveNetworkType, - selectBaseEnabled, -} from 'selectors' -import networkService from 'services/networkService' - -export const useOnboard = () => { - const dispatch = useDispatch() - - const activeNetwork = useSelector(selectActiveNetwork()) - const activeNetworkType = useSelector(selectActiveNetworkType()) - const baseEnabled = useSelector(selectBaseEnabled()) - - useEffect(() => { - window.scrollTo(0, 0) - - const initBase = async () => { - const initialized = await networkService.initializeBase({ - networkGateway: activeNetwork, - networkType: activeNetworkType, - }) - - if (!initialized) { - dispatch(setBaseState(false)) - } - - if (initialized === 'enabled') { - dispatch(setBaseState(true)) - } - } - - if (!baseEnabled) { - initBase() - } - }, [dispatch, activeNetwork, activeNetworkType, baseEnabled]) -} diff --git a/packages/boba/gateway/src/hooks/useSwitchChain.ts b/packages/boba/gateway/src/hooks/useSwitchChain.ts deleted file mode 100644 index 47e406a4ab..0000000000 --- a/packages/boba/gateway/src/hooks/useSwitchChain.ts +++ /dev/null @@ -1,32 +0,0 @@ -/** - * useSwitchChain: - * - this hooks is only responsible to switch between the chains. - */ - -import { setConnectBOBA, setConnectETH } from 'actions/setupAction' -import { openModal } from 'actions/uiAction' -import { useDispatch, useSelector } from 'react-redux' -import { selectAccountEnabled, selectLayer } from 'selectors' -import { LAYER } from 'util/constant' - -const useSwitchChain = () => { - const dispatch = useDispatch() - const accountEnabled = useSelector(selectAccountEnabled()) - const layer = useSelector(selectLayer()) - - const switchChain = () => { - if (accountEnabled) { - if (!layer || layer === LAYER.L2) { - dispatch(setConnectETH(true)) - } else { - dispatch(setConnectBOBA(true)) - } - } else { - dispatch(openModal('walletSelectorModal')) - } - } - - return { switchChain } -} - -export default useSwitchChain diff --git a/packages/boba/gateway/src/hooks/useThemeSwitcher.ts b/packages/boba/gateway/src/hooks/useThemeSwitcher.ts deleted file mode 100644 index a7fe933bd2..0000000000 --- a/packages/boba/gateway/src/hooks/useThemeSwitcher.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { setTheme } from 'actions/uiAction' -import { THEME_NAME } from 'components/layout/Header/types' -import { useDispatch, useSelector } from 'react-redux' -import { selectModalState } from 'selectors' - -const useThemeSwitcher = () => { - const currentTheme = useSelector(selectModalState('theme')) - const dispatch = useDispatch() - - const setThemeLight = () => { - localStorage.setItem('theme', THEME_NAME.LIGHT) - dispatch(setTheme(THEME_NAME.LIGHT)) - } - const setThemeDark = () => { - localStorage.setItem('theme', THEME_NAME.DARK) - dispatch(setTheme(THEME_NAME.DARK)) - } - - return { - setThemeLight, - setThemeDark, - currentTheme, - } -} - -export default useThemeSwitcher diff --git a/packages/boba/gateway/src/hooks/useWalletConnect.ts b/packages/boba/gateway/src/hooks/useWalletConnect.ts deleted file mode 100644 index 898ee8e0b3..0000000000 --- a/packages/boba/gateway/src/hooks/useWalletConnect.ts +++ /dev/null @@ -1,164 +0,0 @@ -import { fetchTransactions, addTokenList } from 'actions/networkAction' -import { - setConnect, - setConnectBOBA, - setConnectETH, - setEnableAccount, - setLayer, - setWalletAddress, -} from 'actions/setupAction' -import { openModal, closeModal } from 'actions/uiAction' -import { useCallback, useEffect } from 'react' -import { useDispatch, useSelector } from 'react-redux' -import { - selectAccountEnabled, - selectBaseEnabled, - selectLayer, - selectActiveNetwork, - selectActiveNetworkType, - selectConnectETH, - selectConnectBOBA, - selectConnect, - selectChainIdChanged, -} from 'selectors' -import networkService from 'services/networkService' -import { DISABLE_WALLETCONNECT, LAYER } from 'util/constant' - -export const useWalletConnect = () => { - const dispatch = useDispatch() - const accountEnabled = useSelector(selectAccountEnabled()) - const baseEnabled = useSelector(selectBaseEnabled()) - - const layer = useSelector(selectLayer()) - const network = useSelector(selectActiveNetwork()) - const networkType = useSelector(selectActiveNetworkType()) - - const connectETHRequest = useSelector(selectConnectETH()) - const connectBOBARequest = useSelector(selectConnectBOBA()) - const connectRequest = useSelector(selectConnect()) - const chainIdChanged = useSelector(selectChainIdChanged()) - - /** - * @triggerInit - * triggers the initializations and setup the state accordingly base on the response. - */ - - const triggerInit = useCallback(() => { - const initAccount = async () => { - const initialized = await networkService.initializeAccount({ - chainIdChanged, - }) - - if (initialized === 'nometamask') { - dispatch(openModal('noMetaMaskModal')) - return false - } else if (initialized === 'wrongnetwork') { - dispatch(openModal('wrongNetworkModal')) - return false - } else if (initialized === false) { - dispatch(setEnableAccount(false)) - return false - } else if (initialized === LAYER.L1 || initialized === LAYER.L2) { - dispatch(closeModal('wrongNetworkModal')) - dispatch(setLayer(initialized)) - dispatch(setEnableAccount(true)) - dispatch(setWalletAddress(networkService.account)) - dispatch(fetchTransactions()) - dispatch(addTokenList()) - return true - } else { - return false - } - } - - if ((!accountEnabled && baseEnabled) || chainIdChanged) { - initAccount() - } - }, [ - dispatch, - accountEnabled, - network, - networkType, - baseEnabled, - chainIdChanged, - ]) - - // do connect layer. - const doConnectToLayer = useCallback( - (targetLayer) => { - const resetConnectChain = () => { - dispatch(setConnect(false)) - dispatch(setConnectETH(false)) - } - - const doConnect = async () => { - try { - if (networkService.walletService.provider) { - if (await networkService.switchChain(targetLayer)) { - if (targetLayer === 'L2') { - dispatch(setConnectBOBA(false)) - } else { - dispatch(setConnectETH(false)) - } - triggerInit() - } else { - resetConnectChain() - } - } else { - // bypass walletSelectorModal - if (DISABLE_WALLETCONNECT) { - if ( - await networkService.walletService.connectWallet('metamask') - ) { - triggerInit() - } else { - resetConnectChain() - } - } else { - resetConnectChain() - dispatch(openModal('walletSelectorModal')) - } - } - } catch (err) { - resetConnectChain() - } - } - doConnect() - }, - [dispatch, triggerInit] - ) - - useEffect(() => { - // detect mismatch and correct the mismatch - if (layer === 'L1' || layer === 'L2') { - triggerInit() - } - }, [layer, triggerInit]) - - // listening for l1 connection request - useEffect(() => { - if (connectETHRequest) { - doConnectToLayer('L1') - } - }, [connectETHRequest, doConnectToLayer]) - - // listening for l2 connection request - useEffect(() => { - if (connectBOBARequest) { - doConnectToLayer('L2') - } - }, [connectBOBARequest, doConnectToLayer]) - - useEffect(() => { - if (connectRequest && !networkService.walletService.provider) { - // bypass walletSelectorModal - if (DISABLE_WALLETCONNECT) { - triggerInit() - } else { - dispatch(openModal('walletSelectorModal')) - } - } - }, [dispatch, connectRequest, triggerInit]) - - return { triggerInit } -} diff --git a/packages/boba/gateway/src/hooks/useWalletSwitch.ts b/packages/boba/gateway/src/hooks/useWalletSwitch.ts deleted file mode 100644 index 5f12e6513c..0000000000 --- a/packages/boba/gateway/src/hooks/useWalletSwitch.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { useEffect, useState } from 'react' -import { useDispatch, useSelector } from 'react-redux' - -import { openModal } from 'actions/uiAction' -import { setConnect, setConnectBOBA, setConnectETH } from 'actions/setupAction' -import { - selectActiveNetwork, - selectActiveNetworkType, - selectNetwork, - selectNetworkType, - selectBaseEnabled, - selectLayer, - selectAccountEnabled, - selectSetup, -} from 'selectors' - -import { LAYER } from 'util/constant' - -const useWalletSwitch = () => { - const dispatch = useDispatch() - const walletInfo = useSelector(selectSetup()) - const accountEnabled = useSelector(selectAccountEnabled()) - const network = useSelector(selectNetwork()) - const activeNetwork = useSelector(selectActiveNetwork()) - const networkType = useSelector(selectNetworkType()) - const activeNetworkType = useSelector(selectActiveNetworkType()) - const layer = useSelector(selectLayer()) - const baseEnabled = useSelector(selectBaseEnabled()) - - const [reconnect, setReconnect] = useState(false) - - useEffect(() => { - if (!!reconnect && !!baseEnabled) { - if (layer === LAYER.L1) { - dispatch(setConnectETH(true)) - } else if (layer === LAYER.L2) { - dispatch(setConnectBOBA(true)) - } else { - dispatch(setConnect(true)) - } - // set reconnect to false to avoid retrigger! - setReconnect(false) - } - }, [layer, reconnect, baseEnabled, dispatch]) - - useEffect(() => { - if (accountEnabled) { - if (activeNetwork !== network || activeNetworkType !== networkType) { - dispatch(openModal('switchNetworkModal')) - } - } - }, [activeNetwork, activeNetworkType, network, networkType, dispatch]) -} - -export default useWalletSwitch diff --git a/packages/boba/gateway/src/index.js b/packages/boba/gateway/src/index.js deleted file mode 100644 index 81d7980801..0000000000 --- a/packages/boba/gateway/src/index.js +++ /dev/null @@ -1,36 +0,0 @@ -/* -Copyright 2021-present Boba Network. -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React from 'react' -import ReactDOM from 'react-dom' -import { Provider } from 'react-redux' -import { store, persistor } from 'store' -import { PersistGate } from 'redux-persist/integration/react' -import App from 'layout' -import './index.scss' -import SentryWrapper from 'components/SentryWrapper/SentryWrapper' - -// https://docs.metamask.io/guide/ethereum-provider.html#ethereum-autorefreshonnetworkchange -if (window.ethereum) { - window.ethereum.autoRefreshOnNetworkChange = false -} - -ReactDOM.render( - - - - - - - , - document.getElementById('root') -) diff --git a/packages/boba/gateway/src/index.scss b/packages/boba/gateway/src/index.scss deleted file mode 100644 index 2b4365c013..0000000000 --- a/packages/boba/gateway/src/index.scss +++ /dev/null @@ -1,129 +0,0 @@ -$red: #ff6868; -$yellow: #f0ba31; -$green: #0ebf9a; -$blue: #506DFA; -$maxWidth: 450px; -$red1: #ff8080; - -$gray1: #101010; -$gray2: #323232; -$gray3: #565656; -$gray4: #7d7d7d; -$gray5: #f8e5e5; -$gray6: #d2d2d2; -$gray7: #f8f8f8; - -$bunnyRed: #c83950; - -$background: linear-gradient(180deg, #061122 0%, #08162C 100%); -$background400: rgba(255, 255, 255, 0.14); - -$backgroundLight400: rgba(0, 0, 0, 0.06); - -$white: #ffffff; -$white700: rgba(255, 255, 255, 0.7); -$white500: rgba(255, 255, 255, 0.5); - -:export { - red: $red; - red1: $red1; - yellow: $yellow; - green: $green; - blue: $blue; - gray1: $gray1; - gray2: $gray2; - gray3: $gray3; - gray4: $gray4; - gray5: $gray5; - gray6: $gray6; - gray7: $gray7; - bunnyRed: $bunnyRed; - maxWidth: $maxWidth; - background: $background; - background400: $background400; - backgroundLight400: $backgroundLight400; - white: $white; - white700: $white700; - white500: $white500; -} - -@mixin tablet { - @media screen and (max-width: 1360px) { - @content; - } -} - -@mixin mobile { - @media screen and (max-width: 800px) { - @content; - } -} - -@mixin miniphone { - @media screen and (max-width: 450px) { - @content; - } -} - -.react-datepicker.dark { - background: #09162B; - box-shadow: -13px 15px 19px rgb(0 0 0 / 15%), inset 53px 36px 120px rgb(255 255 255 / 6%); - border-radius: 12px; - border: none; - .react-datepicker__header { - background: transparent; - border: none; - } - - .react-datepicker__triangle { - &::after { - border-bottom-color: #09162B !important; - } - - &::before { - border-bottom-color: #09162B !important; - } - } - .react-datepicker__month { - padding: 5px; - } - - .react-datepicker__day-name, .react-datepicker__day, .react-datepicker__time-name { - color: #FFFFFF !important; - } - - .react-datepicker__current-month { - color: #FFFFFF !important; - } - - .react-datepicker__day--disabled { - opacity: 0.4 - } - .react-datepicker__day { - &:hover { - background-color: transparent; - color: #fff; - border-radius: 50%; - border: 0.2px solid #CCFF00; - } - } - .react-datepicker__day--keyboard-selected, - .react-datepicker__month-text--keyboard-selected, - .react-datepicker__quarter-text--keyboard-selected, - .react-datepicker__year-text--keyboard-selected { - border-radius: 50%; - background-color: #3C5DFC; - color: #fff; - } -} - - -input::-webkit-outer-spin-button, -input::-webkit-inner-spin-button { - -webkit-appearance: none; - margin: 0; -} - -input[type='number'] { - -moz-appearance: textfield; -} diff --git a/packages/boba/gateway/src/layout/index.js b/packages/boba/gateway/src/layout/index.js deleted file mode 100644 index 3e6ecb0d74..0000000000 --- a/packages/boba/gateway/src/layout/index.js +++ /dev/null @@ -1,434 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import React, { Suspense, useEffect } from 'react' -import { useDispatch, useSelector } from 'react-redux' -import { BrowserRouter } from 'react-router-dom' - -import { Box, useMediaQuery } from '@mui/material' -import CssBaseline from '@mui/material/CssBaseline' -import { - createTheme, - responsiveFontSizes, - ThemeProvider, -} from '@mui/material/styles' - -import { setTheme } from 'actions/uiAction' -import { selectTheme } from 'selectors' - -import Router from './routes' -import CustomThemeProvider from 'themes' -import { Background } from 'components/global/background' - -function App() { - const dispatch = useDispatch() - - const theme = useSelector(selectTheme) - const light = theme === 'light' - - const radioGreen = '#BAE21A' - // const darkGrey = '#1b1c1f' - // const cyan = '#1CD6D1' - - const buttonColor = '#BAE21A' //radioGreen - const buttonColorLightmode = '#1CD6D1' //cyan - - let MUItheme = createTheme({ - palette: { - mode: theme === 'light' ? 'light' : 'dark', - primary: { - main: buttonColor, - gradient: 'linear-gradient(131.81deg, #4A6FEF 2.66%, #4251F0 124.21%)', - contrastText: '#fff', - border: light ? 'solid 1px rgba(0, 0, 0, 0.12)' : 'solid 1px #2d2f3a', - borderRadius: '12px', - borderBottom: light - ? 'solid 1px rgba(0, 0, 0, 0.08)' - : '1px solid rgba(255, 255, 255, 0.04)', - tabBorderBottom: light - ? `solid 2px ${buttonColor}` - : `solid 2px ${buttonColor}`, - alert: light ? 'black' : '#FFD88D', - tooltip: light ? '#5E6058' : '#545454', - info: light ? 'rgba(3, 19, 19, 0.65)' : 'rgba(255, 255, 255, 0.65)', - }, - secondary: { - main: light ? buttonColorLightmode : buttonColor, - borderRadius: '20px', - border: light - ? 'solid 1px rgba(3, 19, 19, 0.06)' - : 'solid 1px rgba(255, 255, 255, 0.06)', - gradient: light - ? '#1CD6D1' - : '-webkit-linear-gradient(0deg, #CBFE00 15.05%, #1CD6D1 79.66%)', - text: light ? 'rgba(3, 19, 19, 0.85)' : 'rgba(255, 255, 255, 0.85)', - }, - background: { - default: light ? '#E5E5E1' : '#191919', - secondary: light - ? 'rgba(3, 19, 19, 0.04)' - : 'rgba(255, 255, 255, 0.06)', - secondaryLight: light - ? 'rgba(0, 0, 0, 0.08)' - : 'rgba(255, 255, 255, 0.14)', - dropdown: light ? '#dadada' : '#142031', - modal: light ? '#fff' : '#1A1D1F', - modalTransparent: light ? '#fff' : 'transparent', - input: light ? 'rgba(3, 19, 19, 0.04)' : 'rgba(255, 255, 255, 0.04)', - footer: light ? '#1A1D1F' : '#1A1D1F', - glassy: light ? 'rgba(253, 255, 248, 0.9)' : 'linear-gradient(129deg, rgba(48, 48, 48, 0.60) 0%, rgba(48, 48, 48, 0.60) 46.35%, rgba(37, 37, 37, 0.60) 94.51%)', - glassyBorder: light? 'rgba(253, 255, 248, 0.9)' : 'rgba(84, 84, 84, 1)', - tooltip: light ? '#5E6058' : '#545454', - alert: light ? 'rgba(3, 19, 19, 0.06)' : 'rgba(255, 216, 141, 0.1)', - }, - neutral: { - main: '#fff', - contrastText: buttonColor, - }, - spacing: { - toFooter: '80px', - }, - }, - typography: { - h1: { - fontSize: 42, - fontWeight: 700, - }, - h2: { - fontSize: 32, - fontWeight: 300, - }, - h3: { - fontSize: 24, - fontWeight: 300, - }, - h4: { - fontSize: 20, - fontWeight: 300, - }, - body1: { - fontSize: 18, - display: 'block', - }, - body2: { - fontSize: 16, - fontWeight: 400, - lineHeight: '1.0em', - display: 'block', - }, - body3: { - fontSize: 14, - lineHeight: '1.1em', - display: 'block', - }, - body4: { - fontSize: 12, - }, - }, - components: { - MuiOutlinedInput: { - styleOverrides: { - root: { - borderRadius:'12px', - "& $notchedOutline": { - padding:'15px 16px' - } - } - } - }, - ReactSelect: { - styleOverrides: { - root: { - borderRadius: '12px', - minWidth: '96px', - boxShadow: 'none', - backgroundColor: light - ? 'rgba(3, 19, 19, 0.04)' - : 'rgba(255, 255, 255, 0.04)', - border: light - ? '1px solid rgba(3, 19, 19, 0.06)' - : '1px solid rgba(255, 255, 255, 0.06)', - backdropFilter: 'blur(50px)', - }, - }, - }, - MuiPaper: { - defaultProps: { - elevation: 0, - }, - styleOverrides: { - root: { - borderRadius: '12px', - minWidth: '96px', - boxShadow: 'none', - backgroundColor: light - ? 'rgba(3, 19, 19, 0.04)' - : 'rgba(255, 255, 255, 0.04)', - border: light - ? '1px solid rgba(3, 19, 19, 0.06)' - : '1px solid rgba(255, 255, 255, 0.06)', - backdropFilter: 'blur(50px)', - }, - }, - }, - MuiTooltip: { - styleOverrides: { - tooltip: { - backgroundColor: light - ? 'rgba(0, 0, 0, 0.08)' - : 'rgba(255, 255, 255, 0.06)', - backdropFilter: 'blur(50px)', - borderRadius: '12px', - }, - arrow: { - color: light ? 'rgba(0, 0, 0, 0.08)' : 'rgba(255, 255, 255, 0.06)', - }, - }, - }, - MuiButton: { - styleOverrides: { - root: { - borderRadius: '8px', - textTransform: 'none', - boxShadow: 'none !important', - minWidth: '0', - color: '#031313', - '&.Mui-disabled': { - background: light ? 'transparent' : 'rgba(255, 255, 255, 0.04)', - color: light ? 'rgba(0, 0, 0, 0.5)' : 'rgba(255, 255, 255, 0.5)', - border: light ? '1px solid rgba(0, 0, 0, 0.5)' : 'none', - }, - }, - }, - variants: [ - { - props: { variant: 'contained', color: 'primary' }, - style: { - // background: 'linear-gradient(131.81deg, #4A6FEF 2.66%, #4251F0 124.21%)', - background: !light ? radioGreen : buttonColorLightmode, - borderWidth: '1.4px', - borderColor: !light ? radioGreen : buttonColorLightmode, - fontWeight: 500, - fontSize: '16px', - font: 'Roboto', - color: '#031313', - '&:hover': { - boxShadow: 'inset 0px 0px 0px 3px rgba(255, 255, 255, 0.2)', - transition: 'box-shadow 0.3s ease-in-out', - backgroundColor: !light ? radioGreen : buttonColorLightmode, - }, - }, - }, - { - props: { variant: 'outlined', color: 'primary' }, - style: { - color: !light ? radioGreen : buttonColorLightmode, - borderColor: !light ? radioGreen : buttonColorLightmode, - background: light ? '#fff' : 'none', - borderWidth: '1.4px', - fontWeight: 700, - '&:hover': { - color: '#000', - borderColor: !light ? radioGreen : buttonColorLightmode, - backgroundColor: !light ? radioGreen : buttonColorLightmode, - borderWidth: '1.4px', - boxShadow: 'inset 2px 2px 13px rgba(0, 0, 0, 0.15)', - }, - }, - }, - { - props: { variant: 'standard', color: 'primary' }, - style: { - color: light - ? 'rgba(0, 0, 0, 0.45)' - : 'rgba(255, 255, 255, 0.45)', - background: light - ? 'rgba(0, 0, 0, 0.06)' - : 'rgba(255, 255, 255, 0.06)', - borderWidth: '1.4px', - borderColor: buttonColor, - filter: 'drop-shadow(0px 0px 7px rgba(73, 107, 239, 0.35))', - '&:hover': { - color: buttonColor, - boxShadow: light - ? 'none' - : 'inset 2px 2px 13px rgba(0, 0, 0, 0.15)', - }, - }, - }, - { - props: { variant: 'standard', color: 'secondary' }, - style: { - color: light - ? 'rgba(0, 0, 0, 0.45)' - : 'rgba(255, 255, 255, 0.45)', - background: light - ? 'rgba(0, 0, 0, 0.06)' - : 'rgba(255, 255, 255, 0.06)', - borderWidth: '1.4px', - borderColor: buttonColor, - '&:hover': { - color: !light ? buttonColor : buttonColorLightmode, - boxShadow: 'none', - }, - }, - }, - { - props: { variant: 'outlined', color: 'secondary' }, - style: { - color: !light ? buttonColor : buttonColorLightmode, - borderWidth: '1.4px', - borderColor: !light ? buttonColor : buttonColorLightmode, - '&:hover': { - opacity: 0.9, - borderWidth: '1.4px', - transition: 'opacity 0.3s ease-in-out', - borderColor: !light ? buttonColor : buttonColorLightmode, - boxShadow: 'inset 2px 2px 13px rgba(0, 0, 0, 0.15)', - }, - }, - }, - { - props: { variant: 'contained', color: 'neutral' }, - style: { - '&:hover': { - opacity: 0.9, - transition: 'opacity 0.3s ease-in-out', - }, - }, - }, - { - props: { variant: 'outlined', color: 'neutral' }, - style: { - color: light - ? 'rgba(0, 0, 0, 0.85)' - : 'rgba(255, 255, 255, 0.85)', - borderWidth: '1.4px', - borderColor: light - ? 'rgba(0, 0, 0, 0.85)' - : 'rgba(255, 255, 255, 0.85)', - '&:hover': { - opacity: 0.9, - borderWidth: '1.4px', - transition: 'opacity 0.3s ease-in-out', - borderColor: light ? '#000' : buttonColor, - boxShadow: 'inset 2px 2px 13px rgba(0, 0, 0, 0.15)', - }, - }, - }, - { - props: { variant: 'small' }, - style: { - fontSize: '14px', - background: - 'linear-gradient(131.81deg, #4A6FEF 2.66%, #4251F0 124.21%)', - textTransform: 'uppercase', - borderRadius: '12px', - minWidth: '0', - '&:hover': { - boxShadow: 'inset 0px 0px 0px 2px rgba(255, 255, 255, 0.2)', - transition: 'box-shadow 0.3s ease-in-out', - }, - }, - }, - { - props: { size: 'large' }, - style: { - fontSize: '1rem', - }, - }, - { - props: { size: 'small' }, - style: { - fontSize: '0.8rem', - }, - }, - ], - }, - MuiInputBase: { - backgroundColor: '#f00', - }, - MuiAlert: { - variants: [ - { - props: { variant: 'simple' }, - style: { - padding: 0, - backgroundColor: 'transparent', - }, - }, - ], - }, - MuiTypography: { - variants: [ - { - props: { variant: 'body2', color: 'fade' }, - style: { - lineHeight: '1.1em', - color: light ? 'rgba(0,0,0, 0.3)' : 'rgba(255, 255, 255, 0.3)', - }, - }, - { - props: { variant: 'body3', color: 'fade' }, - style: { - lineHeight: '0.7em', - color: light ? 'rgba(0,0,0, 0.3)' : 'rgba(255, 255, 255, 0.3)', - }, - }, - ], - }, - }, - }) - - MUItheme = responsiveFontSizes(MUItheme) - - const isMobile = useMediaQuery(MUItheme.breakpoints.down('md')) - - useEffect(() => { - const themeFromLocalStorage = localStorage.getItem('theme') - dispatch(setTheme(themeFromLocalStorage)) - }, [dispatch]) - - return ( - - - - - - - -
- Loading...}> - - -
-
-
-
-
- ) -} - -export default App diff --git a/packages/boba/gateway/src/layout/routes/index.js b/packages/boba/gateway/src/layout/routes/index.js deleted file mode 100644 index 528ac5d807..0000000000 --- a/packages/boba/gateway/src/layout/routes/index.js +++ /dev/null @@ -1,43 +0,0 @@ -import { useEffect, useState } from 'react'; -import { PAGES_BY_NETWORK } from 'util/constant' -import { COMMON_ROUTES, ROUTE_LIST } from './routeList' -import { useSelector } from 'react-redux'; -import { selectActiveNetwork } from 'selectors'; -import { useRoutes } from 'react-router-dom'; -import { intersection } from 'util/lodash'; - - -export const Router = () => { - - const routeList = ROUTE_LIST; - const [ routes, setRoutes ] = useState([]); - const network = useSelector(selectActiveNetwork()); - - useEffect(() => { - const childRoutes = routeList[ 0 ].children; - const fRoutes = childRoutes.filter((m) => intersection([ m.key ], PAGES_BY_NETWORK[ network.toLowerCase() ]).length); - const {path, ...indexRoute} = fRoutes[ 0 ]; - const _routes = [ - { - ...indexRoute, - index:true - }, - ...fRoutes, - ...COMMON_ROUTES - ].filter((r) => !r.disable) - - setRoutes([ - { - ...routeList[ 0 ], - children: _routes - } - ]); - return () => { - setRoutes(null) - }; - }, [ network, routeList ]); - - return useRoutes(routes); -} - -export default Router; diff --git a/packages/boba/gateway/src/layout/routes/routeList.js b/packages/boba/gateway/src/layout/routes/routeList.js deleted file mode 100644 index 3db6982f7f..0000000000 --- a/packages/boba/gateway/src/layout/routes/routeList.js +++ /dev/null @@ -1,79 +0,0 @@ -import React from 'react'; - -import { DISABLE_VE_DAO, ROUTES_PATH } from "util/constant"; - -import Bridging from 'containers/Bridging'; -import Vote from 'containers/VoteAndDao/Vote/Vote'; -import BobaScope from 'containers/bobaScope/BobaScope'; -import OldDao from 'containers/dao/OldDao'; -import DevTools from 'containers/devtools/DevTools'; -import EarnWrapper from 'containers/earn/EarnWrapper'; -import Home from "containers/home/Home"; -import SaveWrapper from 'containers/save/SaveWrapper'; -import Lock from 'containers/veboba/Lock'; -import { Navigate } from 'react-router-dom'; -import History from 'containers/history/History'; - -export const COMMON_ROUTES = [ - { - path: "*", - element: , - key: '', - }, - { - path: ROUTES_PATH.BOBASCOPE, - element: , - key: 'bobascope', - }, - { - path: ROUTES_PATH.DEV_TOOLS, - element: , - key: 'Devtool', - }, -] - -export const ROUTE_LIST = [ - { - path: '/', - element: , - children: [ - { - path: ROUTES_PATH.BRIDGE, - element: , - key: 'Bridge', - }, - { - path: ROUTES_PATH.HISTORY, - element: , - key: 'History', - }, - { - path: ROUTES_PATH.EARN, - element: , - key: 'Earn', - }, - { - path: ROUTES_PATH.STAKE, - element: , - key: 'Stake', - }, - { - path: ROUTES_PATH.DAO, - element: , - key: 'DAO', - }, - { - path: ROUTES_PATH.LOCK, - element: , - key: 'DAO', - disable: !!Number(DISABLE_VE_DAO), - }, - { - path: ROUTES_PATH.VOTE_DAO, - element: , - key: 'DAO', - disable: !!Number(DISABLE_VE_DAO), - }, - ] - } -] diff --git a/packages/boba/gateway/src/reducers/balanceReducer.js b/packages/boba/gateway/src/reducers/balanceReducer.js deleted file mode 100644 index fc38ac1855..0000000000 --- a/packages/boba/gateway/src/reducers/balanceReducer.js +++ /dev/null @@ -1,206 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -const initialState = { - layer1: [], - layer2: [], - l1LpBalanceWeiString:'', - l2LpBalanceWeiString:'', - l2LpETHBalanceWeiString: '', - l1LpPendingWeiString:'', - l2LpPendingWeiString:'', - l2LpETHPendingWeiString: '', - l1FeeRate: {}, - l2FeeRate: {}, - l2ETHFeeRateN: {}, - fastExitCost: '', - classicExitCost: '', - fastDepositCost: 0, - altL1DepositCost: '', - fastDepositBatchCost: '', - l1FeeBalance: 0, - l2BalanceETH: 0, - l2BalanceBOBA: 0, - l1lpLiquidity: '', - l2lpLiquidity: '', - l2lpETHLiquidity: '', - gas: {}, - userAndL2LPBlanceBatch: {}, - exitFee: '', -} - -function balanceReducer(state = initialState, action) { - switch (action.type) { - case 'BALANCE/GET/SUCCESS': - const { layer1, layer2 } = action.payload - return { - ...state, - layer1, - layer2 - } - case 'GAS/GET/SUCCESS': - return { - ...state, - gas: action.payload - } - case 'FETCH/L1LP/BALANCE/SUCCESS': - return { - ...state, - l1LpBalanceWeiString: action.payload - } - case 'FETCH/L2LP/BALANCE/SUCCESS': - return { - ...state, - l2LpBalanceWeiString: action.payload - } - case 'FETCH/L2LP/BALANCE/ETH/SUCCESS': - return { - ...state, - l2LpETHBalanceWeiString: action.payload - } - case 'FETCH/L1LP/PENDING/SUCCESS': - return { - ...state, - l1LpPendingWeiString: action.payload - } - case 'FETCH/L2LP/PENDING/SUCCESS': - return { - ...state, - l2LpPendingWeiString: action.payload - } - case 'FETCH/L2LP/PENDING/ETH/SUCCESS': - return { - ...state, - l2LpETHPendingWeiString: action.payload - } - case 'FETCH/L1TOTALFEERATE/SUCCESS': - return { - ...state, - l1FeeRate: action.payload - } - case 'FETCH/L2TOTALFEERATE/SUCCESS': - return { - ...state, - l2FeeRate: action.payload - } - case 'FETCH/L1FEERATE/SUCCESS': - return { - ...state, - l1FeeRateN: action.payload - } - case 'FETCH/L2FEERATE/SUCCESS': - return { - ...state, - l2FeeRateN: action.payload - } - case 'FETCH/L2FEERATE/ETH/SUCCESS': - return { - ...state, - l2ETHFeeRateN: action.payload - } - case 'FETCH/FASTEXIT/COST/SUCCESS': - return { - ...state, - fastExitCost: action.payload - } - case 'FETCH/CLASSICEXIT/COST/SUCCESS': - return { - ...state, - classicExitCost: action.payload - } - case 'FETCH/FASTDEPOSIT/COST/SUCCESS': - return { - ...state, - fastDepositCost: Number(action.payload) - } - case 'FETCH/ALTL1DEPOSIT/COST/SUCCESS': - return { - ...state, - altL1DepositCost: action.payload - } - case 'FETCH/FASTDEPOSIT/BATCH/COST/SUCCESS': - return { - ...state, - fastDepositBatchCost: action.payload - } - case 'FETCH/L1FEE/BALANCE/SUCCESS': - return { - ...state, - l1FeeBalance: Number(action.payload) - } - case 'FETCH/L2ETH/BALANCE/SUCCESS': - return { - ...state, - l2BalanceETH: Number(action.payload) - } - case 'FETCH/L2BOBA/BALANCE/SUCCESS': - return { - ...state, - l2BalanceBOBA: Number(action.payload) - } - case 'FETCH/L1LP/LIQUIDITY/SUCCESS': - return { - ...state, - l1lpLiquidity: action.payload - } - case 'FETCH/L2LP/LIQUIDITY/SUCCESS': - return { - ...state, - l2lpLiquidity: action.payload - } - case 'FETCH/L2LP/LIQUIDITY/ETH/SUCCESS': - return { - ...state, - l2lpETHLiquidity: action.payload - } - case 'FETCH/USER/L2LP/BALANCE/BATCH/SUCCESS': - return { - ...state, - userAndL2LPBlanceBatch: action.payload - } - case 'FETCH/EXITFEE/SUCCESS': - return { - ...state, - exitFee: action.payload - } - case 'BALANCE/L1/RESET': - return { - ...state, - l1LpBalanceWeiString: '', - l1LpPendingWeiString: '', - l1FeeRate: '', - fastExitCost: '', - l2FeeBalance: '', - l1lpLiquidity: '', - l2BalanceETH: 0, - l2BalanceBOBA: 0, - exitFee: '', - } - case 'BALANCE/L2/RESET': - return { - ...state, - l2LpBalanceWeiString: '', - l2LpPendingWeiString: '', - l2FeeRate: '', - fastDepositCost: 0, - l1FeeBalance: 0, - l2lpLiquidity: '', - } - default: - return state - } -} - -export default balanceReducer diff --git a/packages/boba/gateway/src/reducers/bridgeReducer.js b/packages/boba/gateway/src/reducers/bridgeReducer.js deleted file mode 100644 index 98e249c1aa..0000000000 --- a/packages/boba/gateway/src/reducers/bridgeReducer.js +++ /dev/null @@ -1,148 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - - -import {BigNumberish} from "ethers"; - -const initialState = { - tokens: [], - bridgeType: 'CLASSIC', - multiBridgeMode: false, - bridgeToAddressState: false, - amountToBridge: 0, - destChainIdBridge: 0, - isFetchTxBlockNumber: false, - isTeleportationOfAssetSupported: { - supported: false, - minDepositAmount: 0, - maxDepositAmount: 0, - maxTransferAmountPerDay: 0, - transferTimestampCheckPoint: 0, - transferredAmount: 0, - }, - alerts: [] -}; - -function bridgeReducer(state = initialState, action) { - switch (action.type) { - case 'BRIDGE/TYPE/SELECT': - return { - ...state, - bridgeType: action.payload - } - - case 'BRIDGE/TOKEN/RESET': - return { - ...state, - tokens: [], - multiBridgeMode: false - } - - case 'BRIDGE/TOKEN/SELECT': - return { - ...state, - tokens: [ - ...state.tokens, - { - ...action.payload, - amount: 0, - toWei_String: 0, - } - ], - } - - case 'BRIDGE/TOKEN/UPDATE': { - let newTokens = [ ...state.tokens ]; - const { token, tokenIndex } = action.payload; - newTokens[ tokenIndex ] = { - ...token, - amount: 0, - toWei_String: 0, - }; - - return { ...state, tokens: newTokens } - } - - case 'BRIDGE/TOKEN/REMOVE': { - let tokens = [ ...state.tokens ]; - tokens.splice(action.payload, 1) - - return { ...state, tokens: tokens } - } - - case 'BRIDGE/MODE/CHANGE': - return { ...state, multiBridgeMode: action.payload } - - case 'BRIDGE/TOADDRESS/SET': - return { - ...state, - bridgeToAddressState: action.payload - } - - case 'BRIDGE/TOKEN/AMOUNT/CHANGE': { - let newTokens = [ ...state.tokens ]; - let { index, amount, toWei_String } = action.payload; - newTokens[ index ] = { - ...newTokens[ index ], - amount, - toWei_String - }; - return { ...state, tokens: newTokens } - } - - case 'BRIDGE/ALERT/SET': { - const isFound = state.alerts.find((alert) => alert.meta === action.payload.meta) - if (state.alerts.length && isFound) { - return {...state} - } - - return { - ...state, - alerts: [ - ...state.alerts, - action.payload - ] - } - } - - case 'BRIDGE/ALERT/CLEAR': { - const filterAlerts = state.alerts.filter((alert) => - !action.payload.keys.includes(alert.meta)) - return { ...state, alerts: filterAlerts } - } - - case 'BRIDGE/ALERT/PURGE': { - return { ...state, alerts: [] } - } - - case 'BRIDGE/AMOUNT/SET': { - return { ...state, amountToBridge: action.payload } - } - case 'BRIDGE/AMOUNT/RESET': { - return {...state, amountToBridge: 0} - } - case 'BRIDGE/DEPOSIT_TX/BLOCK': { - return { ...state, isFetchTxBlockNumber: action.payload } - } - case 'BRIDGE/TELEPORTER/TOKEN_SUPPORTED': { - return { ...state, isTeleportationOfAssetSupported: action.payload } - } - - default: - return state; - } -} - -export default bridgeReducer diff --git a/packages/boba/gateway/src/reducers/daoReducer.js b/packages/boba/gateway/src/reducers/daoReducer.js deleted file mode 100644 index 4812fa79ae..0000000000 --- a/packages/boba/gateway/src/reducers/daoReducer.js +++ /dev/null @@ -1,51 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -const initialState = { - balance: 0, - votes: 0, - balanceX: 0, - votesX: 0, - proposalThreshold: 0, - proposalList: [], - hasLiveProposal: false, -} - -function daoReducer(state = initialState, action) { - switch (action.type) { - case 'BALANCE/DAO/GET/SUCCESS': - return { ...state, ...action.payload } - - case 'VOTES/DAO/GET/SUCCESS': - return { ...state, ...action.payload } - - case 'BALANCEX/DAO/GET/SUCCESS': - return { ...state, ...action.payload } - - case 'VOTESX/DAO/GET/SUCCESS': - return { ...state, ...action.payload } - - case 'PROPOSALS/GET/SUCCESS': - return { ...state, ...action.payload } - - case 'PROPOSALTHRESHOLD/GET/SUCCESS': - return { ...state, ...action.payload } - - default: - return state - } -} - -export default daoReducer diff --git a/packages/boba/gateway/src/reducers/dataReducer.js b/packages/boba/gateway/src/reducers/dataReducer.js deleted file mode 100644 index d85e0dba71..0000000000 --- a/packages/boba/gateway/src/reducers/dataReducer.js +++ /dev/null @@ -1,44 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import { keyBy } from 'util/lodash'; - -const initialState = { - sevens: {}, - fastExits: {} -} - -function dataReducer (state = initialState, action) { - switch (action.type) { - case 'SEVENS/GETALL/SUCCESS': - return { - ...state, - sevens: { - ...keyBy(action.payload, 'blockNumber', 'hash') - } - } - case 'FASTEXITS/GETALL/SUCCESS': - return { - ...state, - fastExits: { - ...keyBy(action.payload, 'blockNumber', 'hash') - } - } - default: - return state - } -} - -export default dataReducer diff --git a/packages/boba/gateway/src/reducers/depositReducer.js b/packages/boba/gateway/src/reducers/depositReducer.js deleted file mode 100644 index ca0a5dcf6f..0000000000 --- a/packages/boba/gateway/src/reducers/depositReducer.js +++ /dev/null @@ -1,62 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import { keyBy } from 'util/lodash'; - -const initialState = { - eth: {}, - erc20: {} -}; - -function depositReducer (state = initialState, action) { - switch (action.type) { - case 'DEPOSIT/CREATE/SUCCESS': - const isEth = action.payload.isEth; - if (isEth) { - return { - ...state, - eth: { - ...state.eth, - [action.payload.transactionHash]: action.payload - } - }; - } - return { - ...state, - erc20: { - ...state.erc20, - [action.payload.transactionHash]: action.payload - } - } - case 'DEPOSIT/CHECKALL/SUCCESS': - case 'DEPOSIT/GETALL/SUCCESS': - const { eth, erc20 } = action.payload; - return { - ...state, - eth: { - ...state.eth, - ...keyBy(eth, 'transactionHash') - }, - erc20: { - ...state.erc20, - ...keyBy(erc20, 'transactionHash') - } - }; - default: - return state; - } -} - -export default depositReducer; diff --git a/packages/boba/gateway/src/reducers/devToolsReducer.js b/packages/boba/gateway/src/reducers/devToolsReducer.js deleted file mode 100644 index 746e812fd0..0000000000 --- a/packages/boba/gateway/src/reducers/devToolsReducer.js +++ /dev/null @@ -1,48 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -const initialState = { - TxBuilder: {} -} - -function devToolsReducer (state = initialState, action) { - switch (action.type) { - case 'TX_BUILDER/SUCCESS': - return { - ...state, - TxBuilder: { - ...state.TxBuilder, - [action.payload.methodIndex]: action.payload.result - } - } - case 'TX_BUILDER/ERROR': - return { - ...state, - TxBuilder: { - ...state.TxBuilder, - [action.payload.methodIndex]: action.payload.result - } - } - case 'TX_BUILDER/REST': - return { - ...state, - TxBuilder: {} - } - default: - return state; - } -} - -export default devToolsReducer diff --git a/packages/boba/gateway/src/reducers/earnReducer.js b/packages/boba/gateway/src/reducers/earnReducer.js deleted file mode 100644 index 66a05edc07..0000000000 --- a/packages/boba/gateway/src/reducers/earnReducer.js +++ /dev/null @@ -1,145 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import networkService from 'services/networkService' -// console.log(networkService); -let allAddresses = {}; -if (networkService) { - allAddresses == networkService.getAllAddresses() -} - -const initialState = { - // totalL1FeeRate: 0, - // totalL2FeeRate: 0, - // userL1RewardFeeRate: 0, - // userL2RewardFeeRate: 0, - poolInfo: { - L1LP: { - [allAddresses.L1_ETH_Address]: {}, - }, - L2LP: { - [allAddresses.L2_ETH_Address]: {}, - } - }, - userInfo: { - L1LP: { - [allAddresses.L1_ETH_Address]: {}, - }, - L2LP: { - [allAddresses.L2_ETH_Address]: {}, - } - }, - stakeToken: { - symbol: "ETH", - currency: allAddresses.L1_ETH_Address, - LPAddress: allAddresses.L1LPAddress, - L1orL2Pool: 'L1LP' - }, - withdrawToken: { - symbol: "ETH", - currency: allAddresses.L1_ETH_Address, - LPAddress: allAddresses.L1LPAddress, - L1orL2Pool: 'L1LP' - }, - approvedAllowance: '', - lpBalanceWeiString: '', - allAddresses: {}, -}; - -function earnReducer (state = initialState, action) { - switch (action.type) { - case 'GET_EARNINFO': - return state; - case 'GET_EARNINFO_SUCCESS': - return { - ...state, - poolInfo: { - L1LP: action.payload.L1PoolInfo, - L2LP: action.payload.L2PoolInfo, - }, - userInfo: { - L1LP: action.payload.L1UserInfo, - L2LP: action.payload.L2UserInfo, - } - } - // case 'GET_L1FEE': - // return state; - // case 'GET_L2FEE': - // return state; - // case 'GET_L1FEE_SUCCESS': - // return { - // ...state, - // userL1RewardFeeRate: action.payload.userRewardFeeRate, - // totalL1FeeRate: action.payload.totalFeeRate, - // } - // case 'GET_L2FEE_SUCCESS': - // return { - // ...state, - // userL2RewardFeeRate: action.payload.userRewardFeeRate, - // totalL2FeeRate: action.payload.totalFeeRate, - // } - case 'UPDATE_STAKE_TOKEN': - return { - ...state, - stakeToken: action.payload, - } - case 'UPDATE_WITHDRAW_TOKEN': - return { - ...state, - withdrawToken: action.payload, - } - case 'FETCH/ALLOWANCE/SUCCESS': - return { - ...state, - approvedAllowance: action.payload.toString(), - } - case 'FETCH/ALLOWANCE/RESET': - return { - ...state, - approvedAllowance: action.payload, - } - case 'FETCH/ALLOWANCE/ERROR': - return { - ...state, - approvedAllowance: '', - } - case 'FETCH/L1LPBALANCE/SUCCESS': - case 'FETCH/L2LPBALANCE/SUCCESS': - return { - ...state, - lpBalanceWeiString: action.payload, - } - case 'GET/ALL/ADDRESS/SUCCESS': - return { - ...state, - allAddresses: action.payload, - } - case 'GET/ALL/ADDRESS/ERROR': - return { - ...state, - allAddresses: {}, - } - case 'FETCH/L1LPBALANCE/ERROR': - case 'FETCH/L2LPBALANCE/ERROR': - return { - ...state, - lpBalanceWeiString: '', - } - default: - return state; - } -} - -export default earnReducer; diff --git a/packages/boba/gateway/src/reducers/fixedReducer.js b/packages/boba/gateway/src/reducers/fixedReducer.js deleted file mode 100644 index 9458d579cc..0000000000 --- a/packages/boba/gateway/src/reducers/fixedReducer.js +++ /dev/null @@ -1,32 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -const initialState = { - stakeCount: 0, - stakeInfo: {}, -} - -function fixedReducer (state = initialState, action) { - switch (action.type) { - case 'GET/FS_SAVES/SUCCESS': - return {...state, ...action.payload} - case 'GET/FS_INFO/SUCCESS': - return {...state, ...action.payload} - default: - return state - } -} - -export default fixedReducer diff --git a/packages/boba/gateway/src/reducers/index.js b/packages/boba/gateway/src/reducers/index.js deleted file mode 100644 index d772a64c10..0000000000 --- a/packages/boba/gateway/src/reducers/index.js +++ /dev/null @@ -1,60 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import { combineReducers } from 'redux'; - -import loadingReducer from './loadingReducer' -import depositReducer from './depositReducer' -import transactionReducer from './transactionReducer' -import dataReducer from './dataReducer' -import balanceReducer from './balanceReducer' -import tokenReducer from './tokenReducer' -import nftReducer from './nftReducer' -import uiReducer from './uiReducer' -import setupReducer from './setupReducer' -import earnReduer from './earnReducer' -import lookupReducer from './lookupReducer' -import signatureReducer from './signatureReducer' -import daoReducer from './daoReducer' -import fixedReducer from './fixedReducer' -import verifierReducer from './verifierReducer'; -import bridgeReducer from './bridgeReducer'; -import veBobaReducer from './veBobaReducer'; -import devToolsReducer from './devToolsReducer'; -import networkReducer from './networkReducer'; - -const rootReducer = combineReducers({ - loading: loadingReducer, - deposit: depositReducer, - transaction: transactionReducer, - data: dataReducer, - signature: signatureReducer, - balance: balanceReducer, - tokenList: tokenReducer, - nft: nftReducer, - ui: uiReducer, - setup: setupReducer, - earn: earnReduer, - lookup: lookupReducer, - dao: daoReducer, - fixed: fixedReducer, - verifier: verifierReducer, - bridge: bridgeReducer, - veboba: veBobaReducer, - devTools: devToolsReducer, - network: networkReducer -}) - -export default rootReducer diff --git a/packages/boba/gateway/src/reducers/loadingReducer.js b/packages/boba/gateway/src/reducers/loadingReducer.js deleted file mode 100644 index aadb489f31..0000000000 --- a/packages/boba/gateway/src/reducers/loadingReducer.js +++ /dev/null @@ -1,38 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -const initialLoadingState = {} - -function loadingReducer (state = initialLoadingState, action) { - - const segments = action.type.split('/') - const requestName = `${segments[0]}/${segments[1]}` - const requestState = segments[2] - - if ( - requestState !== 'REQUEST' && - requestState !== 'SUCCESS' && - requestState !== 'ERROR' - ) { - return state - } - - return { - ...state, - [requestName]: requestState === 'REQUEST' - } -} - -export default loadingReducer diff --git a/packages/boba/gateway/src/reducers/loginReducer.js b/packages/boba/gateway/src/reducers/loginReducer.js deleted file mode 100644 index eeb81c16d6..0000000000 --- a/packages/boba/gateway/src/reducers/loginReducer.js +++ /dev/null @@ -1,74 +0,0 @@ -/* - Varna - A Privacy-Preserving Marketplace - Varna uses Fully Homomorphic Encryption to make markets fair. - Copyright (C) 2021 Enya Inc. Palo Alto, CA - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -const initialState = { - FHEseed: null, - AESKey: null, - loggedIn: false, - isBeginner: true, - invitationCodeGood: false, - invitationCodeVerifyLoad: false, - invitationCodeVerifyError: null, -} - -function loginReducer (state = initialState, action) { - switch (action.type) { - case 'PROVIDE_PASSWORD': - return { - ...state, - AESKey: action.payload.AESKey, - FHEseed: action.payload.FHEseed, - } - case 'LOGIN': - return { - ...state, - loggedIn: true, - } - case 'UPDATE_USER_TYPE': - return { - ...state, - isBeginner: action.payload, - } - case 'VERIFY_INVITATION_CODE': - return { - ...state, - invitationCodeGood: false, - invitationCodeVerifyLoad: true, - invitationCodeVerifyError: null, - } - case 'VERIFY_INVITATION_CODE_SUCCESS': - return { - ...state, - invitationCodeGood: true, - invitationCodeVerifyLoad: false, - invitationCodeVerifyError: false, - } - case 'VERIFY_INVITATION_CODE_FAILURE': - return { - ...state, - invitationCodeGood: false, - invitationCodeVerifyLoad: false, - invitationCodeVerifyError: action.payload, - } - default: - return state; - } -} - -export default loginReducer; \ No newline at end of file diff --git a/packages/boba/gateway/src/reducers/lookupReducer.js b/packages/boba/gateway/src/reducers/lookupReducer.js deleted file mode 100644 index c738c34249..0000000000 --- a/packages/boba/gateway/src/reducers/lookupReducer.js +++ /dev/null @@ -1,29 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -const initialState = {} - -function lookupReducer(state = initialState, action) { - switch (action.type) { - case 'PRICE/GET/SUCCESS': - return { ...state, ...action.payload }; - case 'LOOKUP/PRICE/CLEAR': - return {}; - default: - return state; - } -} - -export default lookupReducer diff --git a/packages/boba/gateway/src/reducers/networkReducer.js b/packages/boba/gateway/src/reducers/networkReducer.js deleted file mode 100644 index aeb2694258..0000000000 --- a/packages/boba/gateway/src/reducers/networkReducer.js +++ /dev/null @@ -1,95 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import { NETWORK, NETWORK_TYPE } from "util/network/network.util" - -/** - * network : ethereum, bnb, avax - * networkType : mainnet, testnet. - **/ - -/** - * NOTE: - * 3. enable switch once selected !== current. - * 4. on selection dispatch event. - * 5. on switch click dispatch event. and reload. - */ - -const initialState = { - network: NETWORK.ETHEREUM, - networkIcon: 'ethereum', - networkType: NETWORK_TYPE.MAINNET, - name: {}, - activeNetworkIcon: 'ethereum', - activeNetwork: NETWORK.ETHEREUM, - activeNetworkType: NETWORK_TYPE.MAINNET, - activeNetworkName: {}, - blockExplorerLinks:[] -} - -function networkReducer(state = initialState, action) { - switch (action.type) { - case 'NETWORK/SET': { - const { - network, - networkType, - networkIcon, - chainIds, - name - } = action.payload; - return { - ...state, - network, - chainIds, - networkIcon, - networkType, - name - } - } - case 'NETWORK/SET_TYPE/ACTIVE': { - const { networkType } = action.payload - return { - ...state, - networkType, - activeNetworkType: networkType - } - } - case 'NETWORK/SET/ACTIVE': { - const { - network: activeNetwork, - // networkType: activeNetworkType, - networkIcon: activeNetworkIcon, - name: activeNetworkName - } = state; - return { - ...state, - activeNetwork, - // activeNetworkType, - activeNetworkIcon, - activeNetworkName - } - } - case 'NETWORK/SET/BLOCK_EXPLORER/SUCCESS': { - return { - ...state, - blockExplorerLinks: action.payload - } - } - default: - return state - } -} - -export default networkReducer diff --git a/packages/boba/gateway/src/reducers/nftReducer.js b/packages/boba/gateway/src/reducers/nftReducer.js deleted file mode 100644 index 586523bcd0..0000000000 --- a/packages/boba/gateway/src/reducers/nftReducer.js +++ /dev/null @@ -1,83 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -//do not deal with account switching right now -//with cache - ToDo -//need to keep track of wgich account the cache is for, otherwise incorrect NFTs will be shown - -//localStorage.removeItem("nftList") - -let nftList = localStorage.getItem("nftList") - -if (nftList) { - nftList = JSON.parse(nftList) - console.log("NFT List Cache:",nftList) -} - -const initialState = { - list: nftList ? nftList : {}, - monsterNumber: 0, - monsterInfo: {} -} - -function nftReducer (state = initialState, action) { - switch (action.type) { - - case 'NFT/ADD/SUCCESS': - - localStorage.setItem("nftList", JSON.stringify({ - ...state.list, - [action.payload.UUID]: action.payload - }) - ) - - return { - ...state, - list: { - ...state.list, - [action.payload.UUID]: action.payload - } - } - - case 'MONSTER/INFO/SUCCESS': - return { - ...state, - monsterInfo: action.payload - } - - case 'MONSTER/NUMBER/SUCCESS': - return { - ...state, - monsterNumber: action.payload - } - - case 'NFT/REMOVE/SUCCESS': - - let listN = state.list - delete listN[action.payload] - - localStorage.setItem("nftList", JSON.stringify(listN)) - - return { - ...state, - list: listN - } - - default: - return state - } -} - -export default nftReducer diff --git a/packages/boba/gateway/src/reducers/setupReducer.js b/packages/boba/gateway/src/reducers/setupReducer.js deleted file mode 100644 index bbcc4cd48e..0000000000 --- a/packages/boba/gateway/src/reducers/setupReducer.js +++ /dev/null @@ -1,121 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -let justSwitchedChain = localStorage.getItem("justSwitchedChain") - -if (justSwitchedChain) { - justSwitchedChain = JSON.parse(justSwitchedChain) -} - -const initialState = { - accountEnabled: null, - baseEnabled: null, - netLayer: null, - walletAddress: null, - justSwitchedChain: justSwitchedChain ? justSwitchedChain : false, - bobaFeePriceRatio: null, - bobaFeeChoice: null, - connectETH: false, - connectBOBA: false, - connect: false, - walletConnected: false, - chainIdChanged: false, - networkChanged: false, -} - -function setupReducer(state = initialState, action) { - switch (action.type) { - case 'SETUP/ACCOUNT/SET': - localStorage.setItem("justSwitchedChain", JSON.stringify(false)) - return { - ...state, - accountEnabled: action.payload, - justSwitchedChain: false - } - case 'SETUP/WALLETADDRESS/SET': - return { - ...state, - walletAddress: action.payload, - } - case 'SETUP/BASE/SET': - return { - ...state, - baseEnabled: action.payload, - } - case 'SETUP/LAYER/SET': - return { - ...state, - netLayer: action.payload - } - case 'SETUP/CONNECT_ETH': - return { - ...state, - connectETH: action.payload - } - case 'SETUP/CONNECT_BOBA': - return { - ...state, - connectBOBA: action.payload - } - case 'SETUP/CONNECT': - return { - ...state, - connect: action.payload - } - case 'SETUP/WALLET_CONNECTED': - return { - ...state, - walletConnected: action.payload - } - case 'SETUP/SWITCH/REQUEST': - localStorage.setItem("justSwitchedChain", JSON.stringify(true)) - return { - ...state, - justSwitchedChain: true - } - case 'SETUP/SWITCH/SUCCESS': - localStorage.setItem("justSwitchedChain", JSON.stringify(true)) - return { - ...state, - justSwitchedChain: true - } - case 'BOBAFEE/ADD/SUCCESS': - return { - ...state, - bobaFeePriceRatio: action.payload.priceRatio, - bobaFeeChoice: action.payload.feeChoice - } - case 'SETUP/APPCHAIN/SET': - return { - ...state, - appChain: action.payload, - network: action.payload - } - case 'SETUP/CHAINIDCHANGED/SET': - return { - ...state, - chainIdChanged: action.payload - } - case 'SETUP/CHAINIDCHANGED/RESET': - return { - ...state, - chainIdChanged: false - } - default: - return state - } -} - -export default setupReducer diff --git a/packages/boba/gateway/src/reducers/signatureReducer.js b/packages/boba/gateway/src/reducers/signatureReducer.js deleted file mode 100644 index a0c3b4a48e..0000000000 --- a/packages/boba/gateway/src/reducers/signatureReducer.js +++ /dev/null @@ -1,44 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -const initialState = { - exitLPsigned: false, - exitTRADsigned: false, - depositLPsigned: false -} - -function signatureReducer (state = initialState, action) { - switch (action.type) { - case 'EXIT/LP/SIGNED': - return { - ...state, - exitLPsigned: action.payload - } - case 'EXIT/TRAD/SIGNED': - return { - ...state, - exitTRADsigned: action.payload - } - case 'DEPOSIT/LP/SIGNED': - return { - ...state, - depositLPsigned: action.payload - } - default: - return state; - } -} - -export default signatureReducer; diff --git a/packages/boba/gateway/src/reducers/tokenReducer.js b/packages/boba/gateway/src/reducers/tokenReducer.js deleted file mode 100644 index 04a473a370..0000000000 --- a/packages/boba/gateway/src/reducers/tokenReducer.js +++ /dev/null @@ -1,52 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -const L1ETH = '0x0000000000000000000000000000000000000000' -const L2ETH = '0x4200000000000000000000000000000000000006' - -const initialState = { - [L1ETH]: { - currency: L1ETH, - addressL1: L1ETH, - addressL2: L2ETH, - symbolL1: 'ETH', - symbolL2: 'ETH', - decimals: 18, - name: 'Ethereum', - redalert: false, - }, -} - -function tokenReducer(state = initialState, action) { - switch (action.type) { - case 'TOKEN/GET/RESET': - state = initialState - return state - case 'TOKEN/GET/SUCCESS': - return { - ...state, - [action.payload.currency]: action.payload, - } - case 'TOKEN/GET/FAILURE': - return { - ...state, - [action.payload.currency]: action.payload, - } - default: - return state - } -} - -export default tokenReducer diff --git a/packages/boba/gateway/src/reducers/transactionReducer.js b/packages/boba/gateway/src/reducers/transactionReducer.js deleted file mode 100644 index 490f7e6d36..0000000000 --- a/packages/boba/gateway/src/reducers/transactionReducer.js +++ /dev/null @@ -1,75 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -const initialState = { -} - -function transactionReducer (state = initialState, action) { - switch (action.type) { - case 'TRANSACTION/GETALL/SUCCESS': - return { - ...state, - ...action.payload - } - case 'TRANSFER/CREATE/SUCCESS': - return { - ...state - } - case 'SETTLE_v0/CREATE/SUCCESS': - return { - ...state - } - case 'SETTLE_v1/CREATE/SUCCESS': - return { - ...state - } - case 'SETTLE_v2/CREATE/SUCCESS': - return { - ...state - } - case 'SETTLE_v2OLO/CREATE/SUCCESS': - return { - ...state - } - case 'SETTLE_v3/CREATE/SUCCESS': - return { - ...state - } - case 'SETTLE_v3OLO/CREATE/SUCCESS': - return { - ...state - } - case 'MONSTER/CREATE/SUCCESS': - return { - ...state - } - case 'CDM/COMPLETE/SET': - return { - ...state, - ...action.payload - } - case 'CDM/COMPLETE/RESET': - return { - ...state, - CDMType: '', - CDMMessage: '', - CDMTransaction: '' - } - default: - return state; - } -} - -export default transactionReducer diff --git a/packages/boba/gateway/src/reducers/uiReducer.js b/packages/boba/gateway/src/reducers/uiReducer.js deleted file mode 100644 index ba36b764aa..0000000000 --- a/packages/boba/gateway/src/reducers/uiReducer.js +++ /dev/null @@ -1,89 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -const initialState = { - theme: 'dark', - depositModal: false, - depositBatchModal: false, - transferModal: false, - transferNFTModal: false, - exitModal: false, - bridgeTypeSwitch: false, - tokenPicker: false, - transferPending: false, - mergeModal: false, - confirmationModal: false, - wrongNetworkModal: false, - ledgerConnectModal: false, - addNewTokenModal: false, - EarnDepositModal: false, - StakeDepositModal: false, - EarnWithdrawModal: false, - transferDaoModal: false, - delegateDaoModal: false, - delegateDaoXModal: false, - newProposalModal: false, - walletSelectorModal: false, - CDMCompletionModal: false, - switchNetworkModal: false, - ledger: false, - alert: null, - error: null, - lock: null, - proposalId: null, - activeHistoryTab: 'All', - activeDataTab: 'Seven Day Queue', -}; - -function uiReducer (state = initialState, action) { - switch (action.type) { - case 'UI/THEME/UPDATE': - return { ...state, theme: action.payload } - case 'UI/MODAL/OPEN': - return { ...state, - [action.payload]: true, - fast: action.fast, - token: action.token, - tokenIndex: action.tokenIndex, - lock: action.lock, // incase of lock record - proposalId: action.proposalId, // incase of vote on proposal - selectionLayer: action.selectionLayer, // use incase of new chain/network picker. - } - case 'UI/MODAL/CLOSE': - return { ...state, [action.payload]: false } - case 'UI/ALERT/UPDATE': - return { ...state, alert: action.payload } - case 'UI/ERROR/UPDATE': - return { ...state, error: action.payload } - case 'UI/LEDGER/UPDATE': - return { ...state, ledger: action.payload } - case 'UI/HISTORYTAB/UPDATE': - return { ...state, activeHistoryTab: action.payload } - case 'UI/DATATAB/UPDATE': - return { ...state, activeDataTab: action.payload } - case 'UI/MODAL/DATA': - let dataType = 'generic'; - if(action.payload.modal === 'confirmationModal') { - dataType = 'cMD'; - } - return { ...state, - [dataType]: action.payload.data, - } - default: - return state; - } -} - -export default uiReducer diff --git a/packages/boba/gateway/src/reducers/veBobaReducer.js b/packages/boba/gateway/src/reducers/veBobaReducer.js deleted file mode 100644 index f40f9c8c40..0000000000 --- a/packages/boba/gateway/src/reducers/veBobaReducer.js +++ /dev/null @@ -1,33 +0,0 @@ -/* -Copyright 2022-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -const initialState = { - records: [], - pools: [] -} - -function veBobaReducer(state = initialState, action) { - switch (action.type) { - case 'LOCK/RECORDS/SUCCESS': - return { ...state, ...action.payload } - case 'VOTE/POOLS/SUCCESS': - return { ...state, ...action.payload } - - default: - return state - } -} - -export default veBobaReducer diff --git a/packages/boba/gateway/src/reducers/verifierReducer.js b/packages/boba/gateway/src/reducers/verifierReducer.js deleted file mode 100644 index 430e59aa90..0000000000 --- a/packages/boba/gateway/src/reducers/verifierReducer.js +++ /dev/null @@ -1,30 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -const initialState = {}; - -function verifierReducer (state = initialState, action) { - switch (action.type) { - case 'VERIFIER/GET/SUCCESS': - if (action.payload) { - return { ...state, ...action.payload }; - } - return state; - default: - return state; - } -} - -export default verifierReducer; diff --git a/packages/boba/gateway/src/selectors/balanceSelector.js b/packages/boba/gateway/src/selectors/balanceSelector.js deleted file mode 100644 index 76758abcf2..0000000000 --- a/packages/boba/gateway/src/selectors/balanceSelector.js +++ /dev/null @@ -1,113 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -export function selectlayer1Balance (state) { - return state.balance.layer1 -} - -export function selectlayer2Balance (state) { - return state.balance.layer2 -} - -export function selectGas (state) { - return state.balance.gas -} - -export function selectAccountData (state) { - return state.balance.accountData -} - -export function selectL1LPBalanceString (state) { - return state.balance.l1LpBalanceWeiString -} - -export function selectL2LPBalanceString (state) { - return state.balance.l2LpBalanceWeiString -} - -export function selectL1LPPendingString (state) { - return state.balance.l1LpPendingWeiString -} - -export function selectL2LPPendingString (state) { - return state.balance.l2LpPendingWeiString -} - -export function selectL1LPLiquidity (state) { - return state.balance.l1lpLiquidity -} - -export function selectL2LPLiquidity (state) { - return state.balance.l2lpLiquidity -} - -export function selectL1FeeRate (state) { - return state.balance.l1FeeRate -} - -export function selectL2FeeRate (state) { - return state.balance.l2FeeRate -} - -export function selectL1FeeRateN (state) { - return state.balance.l1FeeRateN -} - -export function selectL2FeeRateN (state) { - return state.balance.l2FeeRateN -} - -export function selectFastExitCost (state) { - return state.balance.fastExitCost -} - -export function selectClassicExitCost (state) { - return state.balance.classicExitCost -} - -export function selectFastDepositCost (state) { - return state.balance.fastDepositCost -} - -export function selectAltL1DepositCost(state) { - return state.balance.altL1DepositCost -} - -export function selectFastDepositBatchCost (state) { - return state.balance.fastDepositBatchCost -} - -export function selectL1FeeBalance (state) { - return state.balance.l1FeeBalance -} - -export function selectL2BalanceETH (state) { - return state.balance.l2BalanceETH -} - -export function selectL2BalanceBOBA (state) { - return state.balance.l2BalanceBOBA -} - -export function selectUserAndL2LPBalanceBatch (state) { - return state.balance.userAndL2LPBlanceBatch -} - -export function selectExitFee (state) { - return state.balance.exitFee -} - -export const selectBalance = () => (state) => state.balance - diff --git a/packages/boba/gateway/src/selectors/bridgeSelector.js b/packages/boba/gateway/src/selectors/bridgeSelector.js deleted file mode 100644 index ec4bf5e9e3..0000000000 --- a/packages/boba/gateway/src/selectors/bridgeSelector.js +++ /dev/null @@ -1,68 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -export function selectBridgeTokens() { - return function (state) { - return state.bridge.tokens - } -} - -export function selectTokenToBridge() { - return function (state) { - return state.bridge.tokens[ 0 ] - } -} - -export function selectBridgeType() { - return function (state) { - return state.bridge.bridgeType - } -} - -export function selectMultiBridgeMode() { - return function (state) { - return state.bridge.multiBridgeMode - } -} - -export function selectBridgeToAddressState() { - return function (state) { - return state.bridge.bridgeToAddressState - } -} - -export function selectAmountToBridge() { - return function (state) { - return state.bridge.amountToBridge - } -} - -export function selectBridgeAlerts() { - return function (state) { - return state.bridge.alerts - } -} - -export function selectIsFetchTxBlockNumber() { - return function (state) { - return state.bridge.isFetchTxBlockNumber - } -} - -export function selectIsTeleportationOfAssetSupported() { - return function (state) { - return state.bridge.isTeleportationOfAssetSupported - } -} diff --git a/packages/boba/gateway/src/selectors/daoSelector.js b/packages/boba/gateway/src/selectors/daoSelector.js deleted file mode 100644 index b6439aabe1..0000000000 --- a/packages/boba/gateway/src/selectors/daoSelector.js +++ /dev/null @@ -1,43 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - - -export function selectDaoBalance(state) { - return state.dao.balance -} - -export function selectDaoVotes(state) { - return state.dao.votes -} - -export function selectDaoBalanceX(state) { - return state.dao.balanceX -} - -export function selectDaoVotesX(state) { - return state.dao.votesX -} - -export function selectProposals(state) { - return state.dao.proposalList -} - -export function selectLatestProposalState(state) { - return state.dao.hasLiveProposal -} - -export function selectProposalThreshold(state) { - return state.dao.proposalThreshold -} diff --git a/packages/boba/gateway/src/selectors/dataSelector.js b/packages/boba/gateway/src/selectors/dataSelector.js deleted file mode 100644 index 27c4c09a13..0000000000 --- a/packages/boba/gateway/src/selectors/dataSelector.js +++ /dev/null @@ -1,19 +0,0 @@ -/* -Copyright 2021-present Boba Network. -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -export function selectSevens (state) { - return Object.values(state.data.sevens) -} - -export function selectFastExits (state) { - return Object.values(state.data.fastExits) -} diff --git a/packages/boba/gateway/src/selectors/devToolsSelector.js b/packages/boba/gateway/src/selectors/devToolsSelector.js deleted file mode 100644 index 6a9cb99b8f..0000000000 --- a/packages/boba/gateway/src/selectors/devToolsSelector.js +++ /dev/null @@ -1,19 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -export function selectTxBuilder (state) { - return state.devTools.TxBuilder -} - diff --git a/packages/boba/gateway/src/selectors/earnSelector.js b/packages/boba/gateway/src/selectors/earnSelector.js deleted file mode 100644 index 8f35d8f37a..0000000000 --- a/packages/boba/gateway/src/selectors/earnSelector.js +++ /dev/null @@ -1,26 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -export function selectPoolInfo () { - return function (state) { - return state.earn.poolInfo - } - } - - export function selectUserInfo () { - return function (state) { - return state.earn.userInfo - } - } diff --git a/packages/boba/gateway/src/selectors/fixedSelector.ts b/packages/boba/gateway/src/selectors/fixedSelector.ts deleted file mode 100644 index abfd4929a2..0000000000 --- a/packages/boba/gateway/src/selectors/fixedSelector.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -export const selectFixed = () => (state: any) => state.fixed diff --git a/packages/boba/gateway/src/selectors/index.ts b/packages/boba/gateway/src/selectors/index.ts deleted file mode 100644 index 2ac86f5d04..0000000000 --- a/packages/boba/gateway/src/selectors/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -export * from 'selectors/balanceSelector' -export * from 'selectors/bridgeSelector' -export * from 'selectors/daoSelector' -export * from 'selectors/dataSelector' -export * from 'selectors/devToolsSelector' -export * from 'selectors/earnSelector' -export * from 'selectors/loadingSelector' -export * from 'selectors/lookupSelector' -export * from 'selectors/networkSelector' -export * from 'selectors/setupSelector' -export * from 'selectors/signatureSelector' -export * from 'selectors/tokenSelector' -export * from 'selectors/transactionSelector' -export * from 'selectors/uiSelector' -export * from 'selectors/veBobaSelector' -export * from 'selectors/verifierSelector' -export * from 'selectors/fixedSelector' - -export {} // fixing isolate mode temporarily , after to upgrade all functions to ts, we can remove it. diff --git a/packages/boba/gateway/src/selectors/loadingSelector.js b/packages/boba/gateway/src/selectors/loadingSelector.js deleted file mode 100644 index 53be6b9745..0000000000 --- a/packages/boba/gateway/src/selectors/loadingSelector.js +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -export function selectLoading (requestNames) { - return function (state) { - return requestNames.some(name => state.loading[name]) - } -} diff --git a/packages/boba/gateway/src/selectors/lookupSelector.js b/packages/boba/gateway/src/selectors/lookupSelector.js deleted file mode 100644 index ade86df3aa..0000000000 --- a/packages/boba/gateway/src/selectors/lookupSelector.js +++ /dev/null @@ -1,18 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -export function selectLookupPrice (state) { - return state.lookup; -} diff --git a/packages/boba/gateway/src/selectors/networkSelector.js b/packages/boba/gateway/src/selectors/networkSelector.js deleted file mode 100644 index 825a54e72e..0000000000 --- a/packages/boba/gateway/src/selectors/networkSelector.js +++ /dev/null @@ -1,55 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -export function selectNetwork () { - return function (state) { - return state.network['network'] - } -} - -export function selectNetworkType() { - return function (state) { - return state.network['networkType'] - } -} - -export function selectActiveNetwork () { - return function (state) { - return state.network['activeNetwork'] - } -} - -export function selectActiveNetworkType() { - return function (state) { - return state.network['activeNetworkType'] - } -} - -export function selectActiveNetworkIcon() { - return function (state) { - return state.network['activeNetworkIcon'] - } -} -export function selectActiveNetworkName() { - return function (state) { - return state.network['activeNetworkName'] - } -} - -export function selectBlockExplorerLinks() { - return function (state) { - return state.network['blockExplorerLinks'] - } -} \ No newline at end of file diff --git a/packages/boba/gateway/src/selectors/setupSelector.js b/packages/boba/gateway/src/selectors/setupSelector.js deleted file mode 100644 index 5d4c0201d5..0000000000 --- a/packages/boba/gateway/src/selectors/setupSelector.js +++ /dev/null @@ -1,102 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -// are we connected to an account - e.g. metamask? -export function selectAccountEnabled () { - return function (state) { - return state.setup['accountEnabled'] - } -} - -export function selectWalletAddress () { - return function (state) { - return state.setup['walletAddress'] - } -} - -// do we have basic providers? -export function selectBaseEnabled () { - return function (state) { - return state.setup['baseEnabled'] - } -} - -export function selectLayer () { - return function (state) { - return state.setup['netLayer'] - } -} - -export function selectConnectETH () { - return function (state) { - return state.setup['connectETH'] - } -} - -export function selectConnectBOBA () { - return function (state) { - return state.setup['connectBOBA'] - } -} - -export function selectConnect () { - return function (state) { - return state.setup['connect'] - } -} - -export function selectJustSwitchedChain () { - return function (state) { - return state.setup['justSwitchedChain'] - } -} - -export function selectBobaFeeChoice () { - return function (state) { - return state.setup['bobaFeeChoice'] - } -} - -export function selectBobaPriceRatio () { - return function (state) { - return state.setup['bobaFeePriceRatio'] - } -} - -export function selectMonster () { - return function (state) { - return state.nft['monsterNumber'] - } -} - -export function selectMonsterInfo () { - return function (state) { - return state.nft['monsterInfo'] - } -} - -export function selectWalletConnected () { - return function (state) { - return state.setup['walletConnected'] - } -} - -export function selectChainIdChanged () { - return function (state) { - return state.setup['chainIdChanged'] - } -} - -export const selectSetup = () => (state) => state.setup diff --git a/packages/boba/gateway/src/selectors/signatureSelector.js b/packages/boba/gateway/src/selectors/signatureSelector.js deleted file mode 100644 index 2c08908511..0000000000 --- a/packages/boba/gateway/src/selectors/signatureSelector.js +++ /dev/null @@ -1,26 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -export function selectSignatureStatus_exitLP (state) { - return state.signature.exitLPsigned -} - -export function selectSignatureStatus_exitTRAD (state) { - return state.signature.exitTRADsigned -} - -export function selectSignatureStatus_depositLP (state) { - return state.signature.depositLPsigned -} diff --git a/packages/boba/gateway/src/selectors/tokenSelector.js b/packages/boba/gateway/src/selectors/tokenSelector.js deleted file mode 100644 index 3dce6b15f0..0000000000 --- a/packages/boba/gateway/src/selectors/tokenSelector.js +++ /dev/null @@ -1,18 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -export function selectTokens(state) { - return state.tokenList -} diff --git a/packages/boba/gateway/src/selectors/transactionSelector.js b/packages/boba/gateway/src/selectors/transactionSelector.js deleted file mode 100644 index 2579082d12..0000000000 --- a/packages/boba/gateway/src/selectors/transactionSelector.js +++ /dev/null @@ -1,35 +0,0 @@ -/* -Copyright 2021-present Boba Network. -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -export function selectTransactions(state) { - return Object.values(state.transaction) -} - -export function selectErc20Deposits(state) { - return Object.values(state.deposit.erc20) -} - -export function selectEthDeposits(state) { - return Object.values(state.deposit.eth) -} - -export function selectCDMType(state) { - return state.transaction.CDMType -} - -export function selectCDMMessage(state) { - return state.transaction.CDMMessage -} - -export function selectCDMTransaction(state) { - return state.transaction.CDMTransaction -} diff --git a/packages/boba/gateway/src/selectors/uiSelector.js b/packages/boba/gateway/src/selectors/uiSelector.js deleted file mode 100644 index c421670383..0000000000 --- a/packages/boba/gateway/src/selectors/uiSelector.js +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -export function selectModalState (modal) { - return function (state) { - return state.ui[modal] - } -} - -export function selectAlert (state) { - return state.ui.alert -} - -export function selectError (state) { - return state.ui.error -} - -export function selectActiveHistoryTab (state) { - return state.ui.activeHistoryTab -} - -export function selectActiveDataTab (state) { - return state.ui.activeDataTab -} - -export function selectTheme (state) { - return state.ui.theme -} diff --git a/packages/boba/gateway/src/selectors/veBobaSelector.js b/packages/boba/gateway/src/selectors/veBobaSelector.js deleted file mode 100644 index b1844793c5..0000000000 --- a/packages/boba/gateway/src/selectors/veBobaSelector.js +++ /dev/null @@ -1,22 +0,0 @@ -/* -Copyright 2022-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -export function selectLockRecords(state) { - return state.veboba.records -} - -export function selectPools(state) { - return state.veboba.pools -} diff --git a/packages/boba/gateway/src/selectors/verifierSelector.js b/packages/boba/gateway/src/selectors/verifierSelector.js deleted file mode 100644 index fa8b867265..0000000000 --- a/packages/boba/gateway/src/selectors/verifierSelector.js +++ /dev/null @@ -1,18 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -export function selectVerifierStatus (state) { - return state.verifier -} diff --git a/packages/boba/gateway/src/services/abi/BobaGasPriceOracle.abi.js b/packages/boba/gateway/src/services/abi/BobaGasPriceOracle.abi.js deleted file mode 100644 index fc097ef629..0000000000 --- a/packages/boba/gateway/src/services/abi/BobaGasPriceOracle.abi.js +++ /dev/null @@ -1,13 +0,0 @@ -const BobaGasPriceOracleABI = [ - 'function secondaryFeeTokenMinimum() public view returns (uint256)', - 'function priceRatio() public view returns (uint256)', - 'function bobaFeeTokenUsers(address) public view returns (bool user)', - 'function secondaryFeeTokenUsers(address) public view returns (bool user)', - 'function getBOBAForSwap() public view returns (uint256)', - 'function getSecondaryFeeTokenForSwap() public view returns (uint256)', - 'function useBobaAsFeeToken() public', - 'function useETHAsFeeToken() public', - 'function useSecondaryFeeTokenAsFeeToken() public', -] - -export default BobaGasPriceOracleABI; diff --git a/packages/boba/gateway/src/services/abi/L1StandardBridge.abi.js b/packages/boba/gateway/src/services/abi/L1StandardBridge.abi.js deleted file mode 100644 index 8bc8a62ca1..0000000000 --- a/packages/boba/gateway/src/services/abi/L1StandardBridge.abi.js +++ /dev/null @@ -1,10 +0,0 @@ -const L1StandardBridgeABI = [ - 'function depositETH(uint32 _l2Gas, bytes calldata _data) external payable', - 'function depositETHTo(address _to, uint32 _l2Gas, bytes calldata _data) external payable', - 'function depositERC20(address _l1Token,address _l2Token, uint256 _amount, uint32 _l2Gas,bytes calldata _data) external', - 'function depositERC20To(address _l1Token, address _l2Token, address _to, uint256 _amount, uint32 _l2Gas,bytes calldata _data) external', - 'function depositNativeToken(uint32 _l2Gas, bytes calldata _data) external payable', - 'function depositNativeTokenTo(address _to,uint32 _l2Gas,bytes calldata _data) external payable' -] - -export default L1StandardBridgeABI; diff --git a/packages/boba/gateway/src/services/app.service.js b/packages/boba/gateway/src/services/app.service.js deleted file mode 100644 index 9a8edabc4d..0000000000 --- a/packages/boba/gateway/src/services/app.service.js +++ /dev/null @@ -1,232 +0,0 @@ -import {NETWORK, NETWORK_TYPE} from "../util/network/network.util"; - -// testnet addresss -import addresses_Goerli from "@boba/register/addresses/addressesGoerli_0x6FF9c8FF8F0B6a0763a3030540c21aFC721A9148" -import addresses_BobaFuji from "@boba/register/addresses/addressBobaFuji_0xcE78de95b85212BC348452e91e0e74c17cf37c79" -import addresses_BobaBnbTestnet from "@boba/register/addresses/addressBobaBnbTestnet_0xAee1fb3f4353a9060aEC3943fE932b6Efe35CdAa" - -// mainnet address -import addresses_Mainnet from "@boba/register/addresses/addressesMainnet_0x8376ac6C3f73a25Dd994E0b0669ca7ee0C02F089" -import addresses_BobaAvax from "@boba/register/addresses/addressBobaAvax_0x00220f8ce1c4be8436574e575fE38558d85e2E6b" -import addresses_BobaBnb from "@boba/register/addresses/addressBobaBnb_0xeb989B25597259cfa51Bd396cE1d4B085EC4c753" - -// layerzero addresses. -import layerZeroTestnet from "@boba/register/addresses/layerZeroTestnet" -import layerZeroMainnet from "@boba/register/addresses/layerZeroMainnet" -import store from "store"; - -// predeployed contracts. - -// const ERROR_ADDRESS = '0x0000000000000000000000000000000000000000' -const L1_ETH_Address = '0x0000000000000000000000000000000000000000' -const L2_BOBA_Address = '0x4200000000000000000000000000000000000006' -const L2MessengerAddress = '0x4200000000000000000000000000000000000007' -const L2StandardBridgeAddress = '0x4200000000000000000000000000000000000010' -// const L2GasOracle = '0x420000000000000000000000000000000000000F' -const L2_SECONDARYFEETOKEN_ADDRESS = '0x4200000000000000000000000000000000000023' - -const ADDRESS_CONFIG = { - [ NETWORK_TYPE.MAINNET ]: { - [ NETWORK.ETHEREUM ]: { - ...addresses_Mainnet, - ...layerZeroMainnet.BOBA_Bridges.Mainnet, - ...layerZeroMainnet.Layer_Zero_Protocol.Mainnet, - layerZeroTargetChainID: layerZeroMainnet.Layer_Zero_Protocol.Mainnet.Layer_Zero_ChainId, - }, - [ NETWORK.AVAX ]: { - ...addresses_BobaAvax, - ...layerZeroMainnet.BOBA_Bridges.Avalanche, - ...layerZeroMainnet.Layer_Zero_Protocol.Avalanche, - layerZeroTargetChainID: layerZeroMainnet.Layer_Zero_Protocol.Mainnet.Layer_Zero_ChainId, - }, - [ NETWORK.BNB ]: { - ...addresses_BobaBnb, - ...layerZeroMainnet.BOBA_Bridges.BNB, - ...layerZeroMainnet.Layer_Zero_Protocol.BNB, - layerZeroTargetChainID: layerZeroMainnet.Layer_Zero_Protocol.Mainnet.Layer_Zero_ChainId, - } - }, - [ NETWORK_TYPE.TESTNET ]: { - [ NETWORK.ETHEREUM ]: { - ...addresses_Goerli, - ...layerZeroTestnet.BOBA_Bridges.Testnet, - ...layerZeroTestnet.Layer_Zero_Protocol.Testnet, - layerZeroTargetChainID: layerZeroTestnet.Layer_Zero_Protocol.Testnet.Layer_Zero_ChainId, - }, - [ NETWORK.AVAX ]: { - ...addresses_BobaFuji, - ...layerZeroTestnet.BOBA_Bridges.Avalanche, - ...layerZeroTestnet.Layer_Zero_Protocol.Avalanche, - layerZeroTargetChainID: layerZeroTestnet.Layer_Zero_Protocol.Avalanche.Layer_Zero_ChainId, - }, - [ NETWORK.BNB ]: { - ...addresses_BobaBnbTestnet, - ...layerZeroTestnet.BOBA_Bridges.BNB, - ...layerZeroTestnet.Layer_Zero_Protocol.BNB, - layerZeroTargetChainID: layerZeroTestnet.Layer_Zero_Protocol.BNB.Layer_Zero_ChainId, - } - } -} - -const SUPPORTED_ASSETS = { - [ NETWORK_TYPE.MAINNET ]: { - [ NETWORK.ETHEREUM ]: { - tokens: [ - 'USDT', 'DAI', 'USDC', 'WBTC', 'REP', 'BAT', 'ZRX', 'SUSHI', - 'LINK', 'UNI', 'BOBA', 'xBOBA', 'OMG', 'FRAX', 'FXS', 'DODO', - 'UST', 'BUSD', 'BNB', 'FTM', 'MATIC', 'UMA', 'DOM', 'OLO', - 'WAGMIv0', 'WAGMIv1', 'WAGMIv2', 'WAGMIv2-Oolong', 'WAGMIv3', 'WAGMIv3-Oolong', - 'CGT' - ], - tokenAddresses: { - WAGMIv0: { - 'L1': 'WAGMIv0', - 'L2': '0x8493C4d9Cd1a79be0523791E3331c78Abb3f9672' - }, - WAGMIv1: { - 'L1': 'WAGMIv1', - 'L2': '0xCe055Ea4f29fFB8bf35E852522B96aB67Cbe8197' - }, - WAGMIv2: { - 'L1': 'WAGMIv2', - 'L2': '0x76B5908ecd0ae3DB23011ae96b7C1f803D63136c' - }, - 'WAGMIv2-Oolong': { - 'L1': 'WAGMIv2-Oolong', - 'L2': '0x49a3e4a1284829160f95eE785a1A5FfE2DD5Eb1D' - }, - 'WAGMIv3': { - 'L1': 'WAGMIv3', - 'L2': '0xC6158B1989f89977bcc3150fC1F2eB2260F6cabE' - }, - 'WAGMIv3-Oolong': { - 'L1': 'WAGMIv3-Oolong', - 'L2': '0x70bf3c5B5d80C4Fece8Bde0fCe7ef38B688463d4' - }, - OLO: { - 'L1': 'OLO', - 'L2': '0x5008F837883EA9a07271a1b5eB0658404F5a9610' - }, - CGT: { - 'L1': '0xf56b164efd3cfc02ba739b719b6526a6fa1ca32a', - 'L2': '0xf56b164efd3cfc02ba739b719b6526a6fa1ca32a' - } - }, - altL1Chains: [ 'BNB', 'Avalanche' ] - }, - [ NETWORK.AVAX ]: { - tokenAddresses: { - 'EVO': { 'L1': '0x42006Ab57701251B580bDFc24778C43c9ff589A1', 'L2': '0xc8849f32138de93F6097199C5721a9EfD91ceE01' } - }, - tokens: [ 'BOBA', 'AVAX', 'EVO', 'USDT.e', 'USDt', 'USDC.e', 'BUSD.e', 'BUSD', 'DAI.e' ], - altL1Chains: [ 'Avalanche' ] - }, - [ NETWORK.BNB ]: { - tokenAddresses: {}, - tokens: [ 'BOBA', 'BNB', 'BUSD', 'USDC', 'USDT', 'SUSHI' ], - altL1Chains: [ 'BNB' ] - } - }, - [ NETWORK_TYPE.TESTNET ]: { - [ NETWORK.ETHEREUM ]: { - tokenAddresses: {}, - tokens: [ 'BOBA', 'USDC', 'OMG', 'xBOBA' ], - altL1Chains: [ 'BNB', 'Avalanche' ] - }, - [ NETWORK.AVAX ]: { - tokenAddresses: {}, - tokens: [ 'BOBA', 'AVAX' ], - altL1Chains: [ 'Avalanche' ] - }, - [ NETWORK.BNB ]: { - tokenAddresses: {}, - tokens: [ 'BOBA', 'BNB', 'MMT' ], - altL1Chains: [ 'BNB' ] - } - } -} - -class AppService { - - - - /** - * @fetchAddresses - * - * NOTE: - * Pre Deployeed contracts add address manually - * - * - L2StandardBridgeAddress - * - L2MessengerAddress - * - L2_ETH_Address - * - L1_ETH_Address - * - */ - - - fetchAddresses({ - networkType, - network - }) { - let addresses = ADDRESS_CONFIG[ networkType ][ network ] || {}; - - return { - ...addresses, - L1LPAddress: addresses.Proxy__L1LiquidityPool, - L2LPAddress: addresses.Proxy__L2LiquidityPool, - L2StandardBridgeAddress, - L2MessengerAddress, - L2_ETH_Address: L2_BOBA_Address, - L2_BOBA_Address, - L1_ETH_Address, - NETWORK_NATIVE: '0x4200000000000000000000000000000000000006', // always native - }; - - } - - /** - * @fetchSupportedTokens - * - get the supported tokens base on network and network type. - * - * will return {supported tokens and token address} - * - */ - - fetchSupportedAssets({ - networkType, - network - }) { - return SUPPORTED_ASSETS[ networkType ][ network ] || {}; - } - - /** - * @setupInitState - * setup initial state of token reducer - * - */ - - setupInitState({ - l1Token, - l1TokenName - }) { - - store.dispatch({ - type: 'TOKEN/GET/SUCCESS', - payload: { - currency: L1_ETH_Address, - addressL1: L1_ETH_Address, - addressL2: L2_SECONDARYFEETOKEN_ADDRESS, - symbolL1: l1Token, - symbolL2: l1Token, - decimals: 18, - name: l1TokenName, - redalert: false, - } - }); - } - -}; - -const appService = new AppService(); - -export default appService; diff --git a/packages/boba/gateway/src/services/error.service.js b/packages/boba/gateway/src/services/error.service.js deleted file mode 100644 index 8db1ec180a..0000000000 --- a/packages/boba/gateway/src/services/error.service.js +++ /dev/null @@ -1,43 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -const noLogErrors = [ - 'user denied', - 'user rejected', - 'user canceled', - 'user cancelled' -]; - -export class WebWalletError extends Error { - constructor ({ - originalError, - customErrorMessage, - }) { - super(originalError.message); - this._originalError = originalError; - this._customErrorMessage = customErrorMessage; - } - - // report (dispatchMethod) { - report () { - const metamaskHeaderNotFoundCode = -3200; - if ( - noLogErrors.find(i => this._originalError.message && this._originalError.message.includes(i)) || - this._originalError.code === metamaskHeaderNotFoundCode - ) { - return; - } - } -} diff --git a/packages/boba/gateway/src/services/faucet.service.js b/packages/boba/gateway/src/services/faucet.service.js deleted file mode 100644 index a6510ee0a5..0000000000 --- a/packages/boba/gateway/src/services/faucet.service.js +++ /dev/null @@ -1,80 +0,0 @@ -import networkService from "./networkService"; -import AuthenticatedFaucetJson from "../deployment/contracts/AuthenticatedFaucet.json" -import { ethers } from "ethers"; -import metaTransactionAxiosInstance from "api/metaTransactionAxios"; - -class FaucetService { - - /** - * @getTestnetETHAuthenticatedMetaTransaction - * - * @dev Only works on testnet, but can be freely called on production app - * */ - async getTestnetETHAuthenticatedMetaTransaction(tweetId) { - - const Boba_AuthenticatedFaucet = new ethers.Contract( - networkService.addresses.AuthenticatedFaucet, - AuthenticatedFaucetJson.abi, - networkService.L2Provider, - ) - - const nonce = parseInt( - await Boba_AuthenticatedFaucet.getNonce(networkService.account), - 10 - ) - - const signer = networkService.provider.getSigner(networkService.account) - const hashedMsg = ethers.utils.solidityKeccak256( - ['address', 'uint'], - [networkService.account, nonce] - ) - const messageHashBin = ethers.utils.arrayify(hashedMsg) - const signature = await signer.signMessage(messageHashBin) - - try { - const response = await metaTransactionAxiosInstance( - networkService.networkConfig - ).post('/send.getTestnetETH', { hashedMsg, signature, tweetId, walletAddress: networkService.account }) - } catch (error) { - let errorMsg = error?.response?.data?.error?.error?.body - if (errorMsg) { - errorMsg = JSON.stringify(errorMsg)?.match(/execution reverted:\s(.+)\\"/) - errorMsg = errorMsg ? errorMsg[1]?.trim() : null; - } - console.log(`MetaTx error for getTestnetETH: ${errorMsg}`) - if (errorMsg?.includes('Invalid request')) { - errorMsg = errorMsg.match(/Invalid request:(.+)/) - if (errorMsg) { - const errorMap = [ - 'Twitter API error - Probably limits hit.', - 'Twitter account needs to exist at least 48 hours.', - 'Invalid Tweet, be sure to tweet the Boba Bubble provided above.', - 'Your Twitter account needs more than 5 followers.', - 'You need to have tweeted more than 2 times.', - ] - try { - errorMsg = errorMap[parseInt(errorMsg[1]) - 1] - } catch(err) { - console.error(err) - errorMsg = 'Unexpected Twitter error.' - } - } else { - errorMsg = 'Not expected Turing error.' - } - } else { - const errorMap = { - 'Cooldown': 'Cooldown: You need to wait 24h to claim again with this Twitter account.', - 'No testnet funds': 'Faucet drained: Please reach out to us.', - 'Rate limit reached': 'Throttling: Too many requests. Throttling to not hit Twitter rate limits.', - } - errorMsg = errorMap[errorMsg]; - } - return errorMsg ?? 'Limits reached or Twitter constraints not met.' - } - } - -} - -const faucetService = new FaucetService(); - -export default faucetService; diff --git a/packages/boba/gateway/src/services/gas.service.js b/packages/boba/gateway/src/services/gas.service.js deleted file mode 100644 index 27b1418877..0000000000 --- a/packages/boba/gateway/src/services/gas.service.js +++ /dev/null @@ -1,39 +0,0 @@ - - -import { logAmount } from "util/amountConvert"; -import networkService from "./networkService"; - - -class GasService { - - /** - * @getGas - */ - - async getGas() { - try { - // get gas price - const gasPrice1 = await networkService.L1Provider.getGasPrice() - const gasPrice2 = await networkService.L2Provider.getGasPrice() - // get block count - const block1 = await networkService.L1Provider.getBlockNumber() - const block2 = await networkService.L2Provider.getBlockNumber() - - const gasData = { - gasL1: Number(logAmount(gasPrice1.toString(),9)).toFixed(0), - gasL2: Number(logAmount(gasPrice2.toString(),9)).toFixed(0), - blockL1: Number(block1), - blockL2: Number(block2), - } - return gasData - } catch (error) { - console.log("GS: getGas error:",error) - return error - } - } - -} - -const gasService = new GasService(); - -export default gasService; diff --git a/packages/boba/gateway/src/services/graphql.service.js b/packages/boba/gateway/src/services/graphql.service.js deleted file mode 100644 index a6c3a007c9..0000000000 --- a/packages/boba/gateway/src/services/graphql.service.js +++ /dev/null @@ -1,224 +0,0 @@ -import {ApolloClient, gql, HttpLink, InMemoryCache} from '@apollo/client'; -import fetch from 'cross-fetch'; -import {CHAIN_ID_LIST, NETWORK, NETWORK_TYPE} from 'util/network/network.util'; -import networkService from './networkService'; -import {Layer, LAYER} from "../util/constant"; - -class GraphQLService { - - GRAPHQL_ENDPOINTS = { - // Boba ETH - 288: { - gql: "https://api.thegraph.com/subgraphs/name/bobanetwork/boba-l2-subgraph", - local: "" - }, - // Boba BNB - 56288: { - gql: "", // TODO - local: "" - }, - // Goerli - 5: { - gql: "http://graph-loadb-52c7fb91q45b-f7b94f4b90ec39e9.elb.us-east-1.amazonaws.com:8000/subgraphs/name/boba/Bridges", // TODO DNS - local: "" - }, - // BNB testnet - 97: { - gql: "http://graph-loadb-bayigwg78i9q-886961d31fa377af.elb.us-east-1.amazonaws.com:8000/subgraphs/name/boba/Bridges", // TODO: DNS - local: "", - }, - // Boba Goerli - 2888: { - gql: "http://graph-loadb-1mh7y9k4wlhg2-7ecc2a39c66258e5.elb.us-east-1.amazonaws.com:8000/subgraphs/name/boba/Bridges", // TODO DNS - local: "http://127.0.0.1:8000/subgraphs/name/boba/Bridges" - }, - // Boba BNB testnet - 9728: { - gql: "http://graph-loadb-c2yef63eachk-3a7ebb678a869b0a.elb.us-east-1.amazonaws.com:8000/subgraphs/name/boba/Bridges", // TODO dns - local: "http://127.0.0.1:8002/subgraphs/name/boba/Bridges" - } - } - - getBridgeEndpoint = (chainId, useLocal = false) => { - return this.GRAPHQL_ENDPOINTS[chainId][useLocal ? 'local' : 'gql'] - } - - async conductQuery(query, variables = {}, sourceChainId, useLocalGraphEndpoint = false){ - const uri = this.getBridgeEndpoint(sourceChainId, useLocalGraphEndpoint) - if (!uri) return; - const client = new ApolloClient({ - uri, - link: new HttpLink({ - uri, - fetch - }), - cache: new InMemoryCache() - }) - - return await client.query({ - query, - variables - }) - } - - async queryBridgeProposalCreated() { - - const query = gql(`query { governorProposalCreateds { proposalId values description proposer } }`) - - /* - curl -g -X POST \ - -H "Content-Type: application/json" \ - -d '{"query":"{ governorProposalCreateds {proposalId values description proposer}}"}' \ - https://graph.goerli.boba.network/subgraphs/name/boba/Bridges - - curl -g -X POST \ - -H "Content-Type: application/json" \ - -d '{"query":"{ governorProposalCreateds {proposalId values description proposer}}"}' \ - https://api.thegraph.com/subgraphs/name/bobanetwork/boba-l2-subgraph - - */ - - if (NETWORK_TYPE.TESTNET === networkService.networkType) { - // As there is no subgraph node for goerli L2 disable it. - return { - data:{governorProposalCreateds: []} - } - } - - return await this.conductQuery(query) - } - -} - -class TeleportationGraphQLService extends GraphQLService { - useLocal = false - - async queryAssetReceivedEvent(walletAddress, sourceChainId) { - const query = gql(`query Teleportation($wallet: Bytes!, $sourceChainId: String!) { - teleportationAssetReceivedEvents( - where: { and: [{ emitter: $wallet }, { sourceChainId: $sourceChainId }] } - ) { - token - sourceChainId - toChainId - depositId - emitter - amount - blockNumber - blockTimestamp - txHash - } -}`) - - const variables = { - wallet: walletAddress, - sourceChainId: sourceChainId.toString() - } - return (await this.conductQuery(query, variables, sourceChainId, this.useLocal))?.data?.teleportationAssetReceivedEvents - } - - async queryDisbursementSuccessEvent(walletAddress, sourceChainId, destChainId, token, amount, depositId) { - if (!token) return undefined; - const query = gql(`query Teleportation($wallet: Bytes!, $sourceChainId: String!, $token: Bytes!, $amount: String!, $depositId: String!) { - teleportationDisbursementSuccessEvents( - where: { and: [{ to: $wallet }, { sourceChainId: $sourceChainId }, { token: $token }, { amount: $amount }, { depositId: $depositId }] } - ) { - depositId - to - token - amount - sourceChainId - blockNumber - blockTimestamp - txHash - } -} -`) - - const variables = { - wallet: walletAddress, - sourceChainId: sourceChainId.toString(), - token, - amount: amount.toString(), - depositId: depositId.toString() - } - const events = (await this.conductQuery(query, variables, destChainId, this.useLocal))?.data?.teleportationDisbursementSuccessEvents - if (events?.length) { - if (events.length > 1) { - console.warn('Found more than one disbursementSuccessEvent, should always be 1:', events) - } - return events[0]; // just first (should always just be one) - } - return undefined; - } - - async queryDisbursementFailedEvent(walletAddress, sourceChainId, destChainId, amount, depositId) { - const query = gql(`query Teleportation($wallet: Bytes!, $sourceChainId: String!, $amount: String!, $depositId: String!) { - teleportationDisbursementFailedEvents( - where: { and: [{ to: $wallet }, { sourceChainId: $sourceChainId }, { amount: $amount }, { depositId: $depositId }] } - ) { - depositId - to - amount - sourceChainId - blockNumber - blockTimestamp - txHash - } -} -`) - - const variables = { - wallet: walletAddress, - sourceChainId: sourceChainId.toString(), - amount: amount.toString(), - depositId: depositId.toString(), - } - const events = (await this.conductQuery(query, variables, destChainId, this.useLocal))?.data?.teleportationDisbursementFailedEvents - if (events?.length) { - if (events.length > 1) { - console.warn('Found more than one disbursementFailedEvent, should always be 1:', events) - } - return events[0]; // just first (should always just be one) - } - return undefined; - } - - async queryDisbursementRetrySuccessEvent(walletAddress, sourceChainId, destChainId, amount, depositId) { - const query = gql(`query Teleportation($wallet: Bytes!, $sourceChainId: String!, $amount: String!, $depositId: String!) { - teleportationDisbursementRetrySuccessEvents( - where: { and: [{ to: $wallet }, { sourceChainId: $sourceChainId }, { amount: $amount }, { depositId: $depositId }] } - ) { - depositId - to - amount - sourceChainId - blockNumber - blockTimestamp - txHash - } -} -`) - - const variables = { - wallet: walletAddress, - sourceChainId: sourceChainId.toString(), - amount: amount.toString(), - depositId: depositId.toString(), - } - const events = (await this.conductQuery(query, variables, destChainId, this.useLocal))?.data?.teleportationDisbursementRetrySuccessEvents - if (events?.length) { - if (events.length > 1) { - console.warn('Found more than one disbursementRetrySuccessEvent, should always be 1:', events) - } - return events[0]; // just first (should always just be one) - } - return undefined; - } - - -} - -const graphQLService = new GraphQLService() -const teleportationGraphQLService = new TeleportationGraphQLService() -export { graphQLService, teleportationGraphQLService } diff --git a/packages/boba/gateway/src/services/networkService.js b/packages/boba/gateway/src/services/networkService.js deleted file mode 100644 index 3d9ac972a3..0000000000 --- a/packages/boba/gateway/src/services/networkService.js +++ /dev/null @@ -1,4674 +0,0 @@ -/* eslint-disable quotes */ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import {formatEther, parseEther} from '@ethersproject/units' -import {CrossChainMessenger,} from '@eth-optimism/sdk' - -import {BigNumber, ethers, utils} from 'ethers' - -import store from 'store' -import {groupBy, orderBy} from 'util/lodash'; -import BN from 'bn.js' - -import {logAmount} from 'util/amountConvert' -import {getToken} from 'actions/tokenAction' - -import {addBobaFee,} from 'actions/setupAction' - -import { - updateSignatureStatus_depositLP, - updateSignatureStatus_exitLP, - updateSignatureStatus_exitTRAD -} from 'actions/signAction' - -// Base contracts -// import L1StandardBridgeJson from '@eth-optimism/contracts/artifacts/contracts/L1/messaging/L1StandardBridge.sol/L1StandardBridge.json' -import L2StandardBridgeJson - from '@eth-optimism/contracts/artifacts/contracts/L2/messaging/L2StandardBridge.sol/L2StandardBridge.json' -import L2ERC20Json from '@eth-optimism/contracts/artifacts/contracts/standards/L2StandardERC20.sol/L2StandardERC20.json' -import OVM_GasPriceOracleJson - from '@eth-optimism/contracts/artifacts/contracts/L2/predeploys/OVM_GasPriceOracle.sol/OVM_GasPriceOracle.json' - -// Boba contracts -import DiscretionaryExitFeeJson - from '@boba/contracts/artifacts/contracts/DiscretionaryExitFee.sol/DiscretionaryExitFee.json' -import L1LPJson from '@boba/contracts/artifacts/contracts/LP/L1LiquidityPool.sol/L1LiquidityPool.json' -import TeleportationJson from '@boba/contracts/artifacts/contracts/Teleportation.sol/Teleportation.json' -import L2LPJson from '@boba/contracts/artifacts/contracts/LP/L2LiquidityPool.sol/L2LiquidityPool.json' -import L2SaveJson from '@boba/contracts/artifacts/contracts/BobaFixedSavings.sol/BobaFixedSavings.json' -import Boba from "@boba/contracts/artifacts/contracts/DAO/governance-token/BOBA.sol/BOBA.json" -import GovernorBravoDelegate - from "@boba/contracts/artifacts/contracts/DAO/governance/GovernorBravoDelegate.sol/GovernorBravoDelegate.json" -import GovernorBravoDelegator - from "@boba/contracts/artifacts/contracts/DAO/governance/GovernorBravoDelegator.sol/GovernorBravoDelegator.json" -import L2BillingContractJson from "@boba/contracts/artifacts/contracts/L2BillingContract.sol/L2BillingContract.json" - -//special one-off locations -import L1ERC20Json from '../deployment/contracts/L1ERC20.json' -import TuringMonsterJson from "../deployment/contracts/NFTMonsterV2.json" -import AuthenticatedFaucetJson from "../deployment/contracts/AuthenticatedFaucet.json" - -//WAGMI ABIs -import WAGMIv0Json from "../deployment/contracts/WAGMIv0.json" -import WAGMIv1Json from "../deployment/contracts/WAGMIv1.json" - -//veBoba ABIs -import veJson from "../deployment/contracts/ve.json" -import voterJson from "../deployment/contracts/BaseV1Voter.json" - -// multi chain alt l1s ABI's -// import AltL1BridgeJson from "../deployment/contracts/crosschain/AltL1Bridge.json" -import ETHL1BridgeJson from "../deployment/contracts/crosschain/EthBridge.json" -import L2StandardERC20Json from "../deployment/contracts/crosschain/L2StandardERC20.json" -import LZEndpointMockJson from "../deployment/contracts/crosschain/LZEndpointMock.json" - -import omgxWatcherAxiosInstance from 'api/omgxWatcherAxios' -import coinGeckoAxiosInstance from 'api/coinGeckoAxios' -import metaTransactionAxiosInstance from 'api/metaTransactionAxios' - -import {sortRawTokens} from 'util/common' -import { graphQLService } from "./graphql.service" - -import tokenInfo from "@boba/register/addresses/tokenInfo" - -import {isDevBuild, Layer, MIN_NATIVE_L1_BALANCE} from 'util/constant' -import {getPoolDetail} from 'util/poolDetails' -import {CHAIN_ID_LIST, getNetworkDetail, getRpcUrl, NETWORK, NETWORK_TYPE, pingRpcUrl} from 'util/network/network.util' -import appService from './app.service' -import walletService from './wallet.service' - -import BobaGasPriceOracleABI from './abi/BobaGasPriceOracle.abi' -import L1StandardBridgeABI from './abi/L1StandardBridge.abi' -import {setFetchDepositTxBlock} from 'actions/bridgeAction'; -import {LAYER} from "../containers/history/types"; - -const ERROR_ADDRESS = '0x0000000000000000000000000000000000000000' -const L1_ETH_Address = '0x0000000000000000000000000000000000000000' -const L2_ETH_Address = '0x4200000000000000000000000000000000000006' -// const L2MessengerAddress = '0x4200000000000000000000000000000000000007' -// const L2StandardBridgeAddress = '0x4200000000000000000000000000000000000010' -const L2GasOracle = '0x420000000000000000000000000000000000000F' -const L2_SECONDARYFEETOKEN_ADDRESS = '0x4200000000000000000000000000000000000023' - -let allTokens = {} - -class NetworkService { - - constructor() { - - this.account = null // the user's account - this.L1Provider = null // L1 Infura - this.L2Provider = null // L2 to Boba replica - this.provider = null // from MetaMask - this.chainId = null // from Metamask - - this.environment = null - - // L1 or L2 - this.L1orL2 = null - this.networkGateway = null - this.networkType = null - - - // Watcher - this.watcher = null - this.fastWatcher = null - - // addresses - this.AddressManagerAddress = null - this.AddressManager = null - - this.L1_TEST_Contract = null - this.L2_TEST_Contract = null - this.L2_ETH_Contract = null - - this.tokenAddresses = null - - // gas - this.L1GasLimit = 9999999 - // setting of this value not important since it's not connected to anything in the contracts - // "param _l1Gas Unused, but included for potential forward compatibility considerations" - this.L2GasLimit = 1300000 //use the same as the hardcoded receive - - this.gasEstimateAccount = null - - // Dao - this.BobaContract = null - this.xBobaContract = null - this.delegateContract = null - - // Gas oracle - this.gasOracleContract = null - - // swap data for calculating the l1 security fee - this.payloadForL1SecurityFee = null - // fast deposit in batch - this.payloadForFastDepositBatchCost = null - - // support token - this.supportedTokens = [] - this.supportedTokenAddresses = {} - - // support alt l1 tokens - this.supportedAltL1Chains = [] - - // token info - this.tokenInfo = {} - - // newly added properties to network services. - this.addresses = {} - this.network = null; - this.networkConfig = null - - // wallet service - this.walletService = walletService - } - - async getBobaFeeChoice() { - - const bobaFeeContract = new ethers.Contract( - this.addresses.Boba_GasPriceOracle, - BobaGasPriceOracleABI, - this.L2Provider - ) - - try { - let priceRatio = await bobaFeeContract.priceRatio() - - let feeChoice; - if (this.networkGateway === NETWORK.ETHEREUM) { - feeChoice = await bobaFeeContract.bobaFeeTokenUsers(this.account) - } else { - // this returns weather the secondary token getting use as tokenfee - feeChoice = await bobaFeeContract.secondaryFeeTokenUsers(this.account) - // if it's false which means boba is getting used as tokenfee which is default value. - feeChoice = !feeChoice; - } - const bobaFee = { - priceRatio: priceRatio.toString(), - feeChoice - } - await addBobaFee(bobaFee) - return bobaFee - - } catch (error) { - - console.log(error) - return error - } - } - - async estimateMinL1NativeTokenForFee() { - if (this.L1orL2 !== 'L2') return 0; - - if (this.networkGateway === NETWORK.ETHEREUM) { - // for ethereum l1 fee is always const to 0.002. - return MIN_NATIVE_L1_BALANCE - } else { - // for alt l1 this fee can change - const bobaFeeContract = new ethers.Contract( - this.addresses.Boba_GasPriceOracle, - BobaGasPriceOracleABI, - this.provider.getSigner() - ) - - const minTokenForFee = await bobaFeeContract.secondaryFeeTokenMinimum(); - - return logAmount(minTokenForFee.toString(), 18) - } - - } - - async switchFee(targetFee) { - - if (this.L1orL2 !== 'L2') return - - const bobaFeeContract = new ethers.Contract( - this.addresses.Boba_GasPriceOracle, - BobaGasPriceOracleABI, - this.provider.getSigner() - ) - - try { - - let tx = null - - if (targetFee === 'BOBA') { - tx = await bobaFeeContract.useBobaAsFeeToken() - await tx.wait() - - } else if (targetFee === 'ETH') { - tx = await bobaFeeContract.useETHAsFeeToken() - await tx.wait() - } else if (targetFee === this.L1NativeTokenSymbol) { - tx = await bobaFeeContract.useSecondaryFeeTokenAsFeeToken() - await tx.wait() - } - - await this.getBobaFeeChoice() - - return tx - } catch (error) { - console.log(error) - return error - } - } - - async getETHMetaTransaction() { - - const EIP712Domain = [ - {name: 'name', type: 'string'}, - {name: 'version', type: 'string'}, - {name: 'chainId', type: 'uint256'}, - {name: 'verifyingContract', type: 'address'}, - ] - const Permit = [ - {name: 'owner', type: 'address'}, - {name: 'spender', type: 'address'}, - {name: 'value', type: 'uint256'}, - {name: 'nonce', type: 'uint256'}, - {name: 'deadline', type: 'uint256'}, - ] - - const owner = this.account - const spender = this.addresses.Proxy__Boba_GasPriceOracle - - const Boba_GasPriceOracle = new ethers.Contract( - this.addresses.Proxy__Boba_GasPriceOracle, - BobaGasPriceOracleABI, - this.provider.getSigner() - ) - - let rawValue; - if (this.networkGateway === NETWORK.ETHEREUM) { - rawValue = await Boba_GasPriceOracle.getBOBAForSwap(); - } else { - rawValue = await Boba_GasPriceOracle.getSecondaryFeeTokenForSwap(); - } - - let value = (rawValue).toString() - - const nonce = (await this.BobaContract.nonces(this.account)).toNumber() - const deadline = Math.floor(Date.now() / 1000) + 300 - const verifyingContract = this.BobaContract.address - - const name = await this.BobaContract.name() - const version = '1' - const chainId = (await this.L2Provider.getNetwork()).chainId - - const data = { - primaryType: 'Permit', - types: {EIP712Domain, Permit}, - domain: {name, version, chainId, verifyingContract}, - message: {owner, spender, value, nonce, deadline}, - } - - let signature - - try { - signature = await this.provider.send('eth_signTypedData_v4', [this.account, JSON.stringify(data)]) - } catch (error) { - return error - } - - try { - // change url if network is ethereum - const swapUrl = this.networkGateway === NETWORK.ETHEREUM ? '/send.swapBOBAForETH' : '/send.swapSecondaryFeeToken' - const response = await metaTransactionAxiosInstance( - this.networkConfig - ).post(swapUrl, { owner, spender, value, deadline, signature, data }) - await this.getBobaFeeChoice() - } catch (error) { - let errorData = error.response.data.error - if (errorData.hasOwnProperty('error')) { - errorData = errorData.error.error.body - } - return errorData - } - } - - async getAddress(contractName, varToSet) { - const address = await this.AddressManager.getAddress(contractName) - if (address === ERROR_ADDRESS) { - return false - } else { - this.addresses = { - ...this.addresses, - [varToSet]: address - } - return true - } - } - - async getAddressCached(cache, contractName, varToSet) { - const address = cache[contractName] - if (typeof (address) === 'undefined') { - return false - } else { - this.addresses = { - ...this.addresses, - [varToSet]: address - } - return true - } - } - - getAllAddresses() { - return this.addresses; - } - - async initializeBase({ - networkGateway: network, - networkType - }) { - - this.network = network; //// refer this in other services and clean up iteratively. - this.networkGateway = network // e.g. mainnet | goerli | ... - this.networkType = networkType // e.g. mainnet | goerli | ... - - // defines the set of possible networks along with chainId for L1 and L2 - const networkDetail = getNetworkDetail({ - network, - networkType - }) - - this.networkConfig = networkDetail; - - try { - - if (NETWORK[network]) { - this.payloadForL1SecurityFee = networkDetail.payloadForL1SecurityFee - this.payloadForFastDepositBatchCost = networkDetail.payloadForFastDepositBatchCost - this.gasEstimateAccount = networkDetail.gasEstimateAccount - } - - let activeL1RpcURL = networkDetail['L1']['rpcUrl'][0] - for (const rpcURL of networkDetail['L1']['rpcUrl']) { - if (await pingRpcUrl(rpcURL)) { - activeL1RpcURL = rpcURL - break - } - } - - this.L1Provider = new ethers.providers.StaticJsonRpcProvider( - activeL1RpcURL - ) - - this.L2Provider = new ethers.providers.StaticJsonRpcProvider( - networkDetail['L2']['rpcUrl'] - ) - - this.L1NativeTokenSymbol = networkDetail['L1']['symbol'] - this.L1NativeTokenName = networkDetail['L1']['tokenName'] || this.L1NativeTokenSymbol - - appService.setupInitState({ - l1Token: this.L1NativeTokenSymbol, - l1TokenName: this.L1NativeTokenName - }) - - // get the tokens based on l1ChainId - const chainId = (await this.L1Provider.getNetwork()).chainId - this.tokenInfo = tokenInfo[chainId] - - // fetch supported tokens, addresses, assets for network selected. - const tokenAsset = appService.fetchSupportedAssets({ - network, - networkType - }) - - this.supportedTokens = tokenAsset.tokens; - this.supportedTokenAddresses = tokenAsset.tokenAddresses; - this.supportedAltL1Chains = tokenAsset.altL1Chains; - - let addresses = {}; - // setting up all address; - if (!!NETWORK[network]) { - addresses = appService.fetchAddresses({ - network, - networkType - }); - } - - this.addresses = addresses - console.log("LOADED ADDRESSES", this.addresses) - - // this.AddressManagerAddress = nw[networkGateway].addressManager - // console.log("AddressManager address:",this.AddressManagerAddress) - - // this.AddressManager = new ethers.Contract( - // this.AddressManagerAddress, - // AddressManagerJson.abi, - // this.L1Provider - // ) - // //console.log("AddressManager Contract:",this.AddressManager) - - if (network === NETWORK.ETHEREUM) { - // check only if selected network is ETHEREUM - if (!(await this.getAddressCached(this.addresses, 'BobaMonsters', 'BobaMonsters'))) return - if (!(await this.getAddressCached(this.addresses, 'Proxy__L1LiquidityPool', 'L1LPAddress'))) return - if (!(await this.getAddressCached(this.addresses, 'Proxy__L2LiquidityPool', 'L2LPAddress'))) return - if (!(await this.getAddressCached(this.addresses, 'Proxy__BobaFixedSavings', 'BobaFixedSavings'))) return - } - - if (!(await this.getAddressCached(this.addresses, 'Proxy__L1CrossDomainMessenger', 'L1MessengerAddress'))) return - if (!(await this.getAddressCached(this.addresses, 'Proxy__L1CrossDomainMessengerFast', 'L1FastMessengerAddress'))) return - if (!(await this.getAddressCached(this.addresses, 'Proxy__L1StandardBridge', 'L1StandardBridgeAddress'))) return - if (!(await this.getAddressCached(this.addresses, 'Proxy__Boba_GasPriceOracle', 'Boba_GasPriceOracle'))) return - - // not critical - this.getAddressCached(this.addresses, 'DiscretionaryExitFee', 'DiscretionaryExitFee') - - this.L1StandardBridgeContract = new ethers.Contract( - this.addresses.L1StandardBridgeAddress, - L1StandardBridgeABI, - this.L1Provider - ) - - const tokenList = {} - - this.supportedTokens.forEach((key) => { - const L1a = this.addresses['TK_L1' + key] - const L2a = this.addresses['TK_L2' + key] - - if (key === 'xBOBA') { - if (L2a === ERROR_ADDRESS) { - return false - } else { - tokenList[key] = { - 'L1': 'xBOBA', - 'L2': L2a - } - } - } - - // NOTE: if not in address manager then refer it from token assets config. - if (typeof L1a === 'undefined' || typeof L2a === 'undefined') { - if (typeof this.supportedTokenAddresses[key] !== 'undefined') { - tokenList[key] = this.supportedTokenAddresses[key] - } - return false - } else { - tokenList[key] = { - 'L1': L1a, - 'L2': L2a - } - } - }) - - this.tokenAddresses = tokenList - allTokens = tokenList; - - if (this.addresses.L2StandardBridgeAddress !== null) { - this.L2StandardBridgeContract = new ethers.Contract( - this.addresses.L2StandardBridgeAddress, - L2StandardBridgeJson.abi, - this.L2Provider - ) - } - - this.L2_ETH_Contract = new ethers.Contract( - this.addresses.L2_ETH_Address, - L2ERC20Json.abi, - this.L2Provider - ) - - /*The test token*/ - this.L1_TEST_Contract = new ethers.Contract( - allTokens.BOBA.L1, //this will get changed anyway when the contract is used - L1ERC20Json.abi, - this.L1Provider - ) - - this.L2_TEST_Contract = new ethers.Contract( - allTokens.BOBA.L2, //this will get changed anyway when the contract is used - L2ERC20Json.abi, - this.L2Provider - ) - - // Teleportation - if (this.addresses.Proxy__L1Teleportation) { - // not deployed on mainnets yet - this.Teleportation = new ethers.Contract( - // correct one is used accordingly - this.addresses.Proxy__L1Teleportation, - TeleportationJson.abi, - ) - } - - // Liquidity pools - - this.L1LPContract = new ethers.Contract( - this.addresses.L1LPAddress, - L1LPJson.abi, - this.L1Provider - ) - this.L2LPContract = new ethers.Contract( - this.addresses.L2LPAddress, - L2LPJson.abi, - this.L2Provider - ) - - this.watcher = new CrossChainMessenger({ - l1SignerOrProvider: this.L1Provider, - l2SignerOrProvider: this.L2Provider, - l1ChainId: chainId, - fastRelayer: false, - }) - this.fastWatcher = new CrossChainMessenger({ - l1SignerOrProvider: this.L1Provider, - l2SignerOrProvider: this.L2Provider, - l1ChainId: chainId, - fastRelayer: true, - }) - - let l2SecondaryFeeTokenAddress = L2_SECONDARYFEETOKEN_ADDRESS - if (NETWORK.ETHEREUM === network && chainId === 1) { - l2SecondaryFeeTokenAddress = allTokens.BOBA.L2 - } - this.BobaContract = new ethers.Contract( - l2SecondaryFeeTokenAddress, - Boba.abi, - this.L2Provider - ) - - if (NETWORK.ETHEREUM === network) { - this.xBobaContract = new ethers.Contract( - allTokens.xBOBA.L2, - Boba.abi, - this.L2Provider - ) - - if (!(await this.getAddressCached(this.addresses, 'GovernorBravoDelegate', 'GovernorBravoDelegate'))) return - if (!(await this.getAddressCached(this.addresses, 'GovernorBravoDelegator', 'GovernorBravoDelegator'))) return - - this.delegateContract = new ethers.Contract( - this.addresses.GovernorBravoDelegate, - GovernorBravoDelegate.abi, - this.L2Provider - ) - - this.delegatorContract = new ethers.Contract( - this.addresses.GovernorBravoDelegator, - GovernorBravoDelegator.abi, - this.L2Provider - ) - - this.delegatorContractV2 = new ethers.Contract( - this.addresses.GovernorBravoDelegatorV2, - GovernorBravoDelegator.abi, - this.L2Provider - ) - } - - this.gasOracleContract = new ethers.Contract( - L2GasOracle, - OVM_GasPriceOracleJson.abi, - this.L2Provider - ) - - return 'enabled' - - } catch (error) { - console.log(`NS: ERROR: InitializeBase `, error) - return false - } - } - - async initializeAccount({chainIdChanged}) { - - try { - - if (!window.ethereum) { - return 'nometamask' - } - - this.walletService.bindProviderListeners() - - // connect to the wallet - this.provider = this.walletService.provider - this.chainId = (await this.provider.getNetwork()).chainId - this.account = await this.provider.getSigner().getAddress() - - let chainId = chainIdChanged - if (!chainId) { - chainId = await this.provider.getNetwork().then(nt => nt.chainId) - } - - // defines the set of possible networks along with chainId for L1 and L2 - const networkDetail = getNetworkDetail({ - network: this.networkGateway, - networkType: this.networkType - }) - - const L1ChainId = networkDetail['L1']['chainId'] - const L2ChainId = networkDetail['L2']['chainId'] - - // there are numerous possible chains we could be on also, either L1 or L2 - // at this point, we only know whether we want to be on which network etc - - if (!!NETWORK[this.networkGateway] && chainId === L2ChainId) { - this.L1orL2 = 'L2'; - } else if (!!NETWORK[this.networkGateway] && chainId === L1ChainId) { - this.L1orL2 = 'L1'; - } else { - return 'wrongnetwork' - } - - // this should not do anything unless we changed chains - if (this.L1orL2 === 'L2') { - await this.getBobaFeeChoice() - } - - return this.L1orL2 // return the layer we are actually on - - } catch (error) { - console.log(`NS: ERROR: InitializeAccount `, error) - return false - } - } - - - async switchChain(targetLayer) { - // ignore request if we are already on the target layer - if (!targetLayer) { - return false - } - - const networkDetail = getNetworkDetail({ - network: this.networkGateway, - networkType: this.networkType - }) - - const targetIDHex = networkDetail[targetLayer].chainIdHex - const rpcURL = targetLayer === 'L1' ? this.L1Provider.connection.url : networkDetail[targetLayer].rpcUrl - const chainParam = { - chainId: '0x' + networkDetail[targetLayer].chainId.toString(16), - chainName: networkDetail[targetLayer].name, - rpcUrls: [rpcURL], - nativeCurrency: { - name: networkDetail[targetLayer].tokenName, - symbol: networkDetail[targetLayer].symbol, - decimals: 18, - }, - blockExplorerUrls: [networkDetail[targetLayer]?.blockExplorerUrl?.slice(0, -1)] - } - - return await this.walletService.switchChain(targetIDHex, chainParam) - } - - async claimAuthenticatedTestnetTokens(tweetId) { - // Only Testnet - const contract = new ethers.Contract( - this.addresses.AuthenticatedFaucet, - AuthenticatedFaucetJson.abi, - this.L2Provider, - ).connect() - - await contract.estimateGas.sendFunds(tweetId) - const claim = await contract.sendFunds( - tweetId, - ) - await claim.wait() - } - - async addTokenList() { - // Add the token to our master list, if we do not have it yet - // if the token is already in the list, then this function does nothing - // but if a new token shows up, then it will get added - if (allTokens === null) return - - Object.keys(allTokens).forEach((token, i) => { - getToken(allTokens[token].L1) - }) - } - - async getL1FeeBalance() { - try { - const balance = await this.L1Provider.getBalance(this.account) - return utils.formatEther(balance) - } catch (error) { - console.log("NS: getL1FeeBalance error:", error) - return error - } - } - - async getL2BalanceETH() { - try { - const balance = await this.L2Provider.getBalance(this.account) - return utils.formatEther(balance) - } catch (error) { - console.log("NS: getL2BalanceETH error:", error) - return error - } - } - - async getL2BalanceBOBA() { - try { - const ERC20Contract = new ethers.Contract( - this.tokenAddresses['BOBA'].L2, - L2ERC20Json.abi, //any old abi will do... - this.provider.getSigner() - ) - const balance = await ERC20Contract.balanceOf(this.account) - return utils.formatEther(balance) - } catch (error) { - console.log("NS: getL2BalanceBOBA error:", error) - return error - } - } - - - async getBalances() { - - try { - - let layer1Balances, layer2Balances; - - if (this.network === NETWORK.ETHEREUM) { - layer1Balances = [ - { - address: this.addresses.L1_ETH_Address, - addressL2: this.addresses.L2_ETH_Address, - currency: this.addresses.L1_ETH_Address, - symbol: 'ETH', - decimals: 18, - balance: new BN(0), - }, - ] - - layer2Balances = [ - { - address: this.addresses.L2_ETH_Address, - addressL1: this.addresses.L1_ETH_Address, - addressL2: this.addresses.L2_ETH_Address, - currency: this.addresses.L1_ETH_Address, - symbol: 'ETH', - decimals: 18, - balance: new BN(0), - }, - ] - } else { - layer1Balances = [ - { - address: this.addresses.L1_ETH_Address, - addressL2: this.addresses["TK_L2" + networkService.L1NativeTokenSymbol], - currency: this.addresses.L1_ETH_Address, - symbol: networkService.L1NativeTokenSymbol, - decimals: 18, - balance: new BN(0), - }, - ] - - layer2Balances = [ - { - address: this.addresses.L2_ETH_Address, - addressL1: this.addresses.TK_L1BOBA, - addressL2: this.addresses.L2_ETH_Address, - currency: this.addresses.TK_L1BOBA, - symbol: 'BOBA', - decimals: 18, - balance: new BN(0), - }, - ] - - } - - // Always check ETH - const layer1Balance = await this.L1Provider.getBalance(this.account) - const layer2Balance = await this.L2Provider.getBalance(this.account) - - layer1Balances[0].balance = new BN(layer1Balance.toString()) - layer2Balances[0].balance = new BN(layer2Balance.toString()) - - const state = store.getState() - const tA = Object.values(state.tokenList); - - const tokenC = new ethers.Contract( - this.addresses.L1_ETH_Address, - L1ERC20Json.abi, - this.L1Provider - ) - - const getERC20Balance = async (token, tokenAddress, layer, provider) => { - const balance = await tokenC.attach(tokenAddress).connect(provider).balanceOf(this.account) - return { - ...token, - balance: new BN(balance.toString()), - layer, - address: layer === 'L1' ? token.addressL1 : token.addressL2, - symbol: token.symbolL1 - } - } - - const getBalancePromise = [] - - tA.forEach((token) => { - if (token.addressL1 === null) return - if (token.addressL2 === null) return - if (this.network === NETWORK.ETHEREUM) { - if (token.addressL1 === this.addresses.L1_ETH_Address) return - if (token.addressL2 === this.addresses.L2_ETH_Address) return - } else { - if (token.addressL1 === this.addresses.L1_ETH_Address) { - return getBalancePromise.push(getERC20Balance(token, token.addressL2, "L2", this.L2Provider)) - - } - if (token.addressL2 === this.addresses.L2_BOBA_Address) { - return getBalancePromise.push(getERC20Balance(token, token.addressL1, "L1", this.L1Provider)) - } - } - - if ([ - 'xBOBA', - 'WAGMIv0', - 'WAGMIv1', - 'WAGMIv2', - 'WAGMIv2-Oolong', - 'WAGMIv3', - 'WAGMIv3-Oolong', - 'OLO' - ].includes(token.symbolL1)) { - //there is no L1 xBOBA, WAGMIv0, WAGMIv1, WAGMIv2, WAGMIv2OLO, WAGMIv3, WAGMIv3OLO, OLO - getBalancePromise.push(getERC20Balance(token, token.addressL2, "L2", this.L2Provider)) - } else { - getBalancePromise.push(getERC20Balance(token, token.addressL1, "L1", this.L1Provider)) - getBalancePromise.push(getERC20Balance(token, token.addressL2, "L2", this.L2Provider)) - } - }) - - const tokenBalances = await Promise.all(getBalancePromise) - - tokenBalances.forEach((token) => { - if (token.layer === 'L1' && - token.symbol !== 'xBOBA' && - token.symbol !== 'WAGMIv0' && - token.symbol !== 'WAGMIv1' && - token.symbol !== 'WAGMIv2' && - token.symbol !== 'WAGMIv2-Oolong' && - token.symbol !== 'WAGMIv3' && - token.symbol !== 'WAGMIv3-Oolong' - ) { - layer1Balances.push(token) - } else if (token.layer === 'L2') { - layer2Balances.push(token) - } - }) - - return { - layer1: orderBy(layer1Balances, (i) => i.currency), - layer2: orderBy(layer2Balances, (i) => i.currency), - } - } catch (error) { - console.log("NS: getBalances error:", error) - return error - } - - } - - handleMetaMaskError = (errorCode) => { - // console.log("MetaMask Errorcode:",errorCode) - switch (errorCode) { - case 4001: - return 'Transaction was rejected by user: signature denied' - //case -32603: - // return 'Execution reverted: ERC20: transfer amount exceeds balance' - default: - return null - } - } - - //Move ETH from L1 to L2 using the standard deposit system - /****** - * Deposit ETH from L1 to L2. - * Deposit ETH from L1 to another L2 account. - * */ - - async depositETHL2({ - recipient = null, - value_Wei_String - }) { - - try { - setFetchDepositTxBlock(false); - - let depositTX; - if (this.network === NETWORK.ETHEREUM) { - if (!recipient) { - depositTX = await this.L1StandardBridgeContract - .connect(this.provider.getSigner()) - .depositETH( - this.L2GasLimit, - utils.formatBytes32String(new Date().getTime().toString()), - { - value: value_Wei_String - } - ) - } else { - depositTX = await this.L1StandardBridgeContract - .connect(this.provider.getSigner()) - .depositETHTo( - recipient, - this.L2GasLimit, - utils.formatBytes32String(new Date().getTime().toString()), - { - value: value_Wei_String - } - ) - } - } else { - if (!recipient) { - depositTX = await this.L1StandardBridgeContract - .connect(this.provider.getSigner()) - .depositNativeToken( - this.L2GasLimit, - utils.formatBytes32String(new Date().getTime().toString()), - { - value: value_Wei_String - } - ) - } else { - depositTX = await this.L1StandardBridgeContract - .connect(this.provider.getSigner()) - .depositNativeTokenTo( - recipient, - this.L2GasLimit, - utils.formatBytes32String(new Date().getTime().toString()), - { - value: value_Wei_String - } - ) - } - } - - setFetchDepositTxBlock(true); - - //at this point the tx has been submitted, and we are waiting... - await depositTX.wait() - - const opts = { - fromBlock: -4000 - } - - const receipt = await this.watcher.waitForMessageReceipt(depositTX, opts) - const txReceipt = receipt.transactionReceipt; - console.log('completed Deposit! L2 tx hash:', receipt.transactionReceipt) - return txReceipt - } catch (error) { - console.log("NS: depositETHL2 error:", error) - return error - } - } - - async settle_v0() { - - console.log("NS: settle_v0") - - // ONLY SUPPORTED on L2 - if (this.L1orL2 !== 'L2') return - - // ONLY SUPPORTED on MAINNET - if (!(this.networkGateway === NETWORK.ETHEREUM && this.networkType === NETWORK_TYPE.MAINNET)) { - return - } - - try { - - const contractLSP = new ethers.Contract( - '0x7F969E3F19355C47f6bc957E502c79C75b373BF3', - WAGMIv0Json.abi, - this.L2Provider - ) - - const contractWAGMIv0 = new ethers.Contract( - '0x8493C4d9Cd1a79be0523791E3331c78Abb3f9672', - L1ERC20Json.abi, - this.L2Provider - ) - - const balance = await contractWAGMIv0.connect(this.provider).balanceOf(this.account) - console.log("You have WAGMIv0:", balance.toString()) - - const TX = await contractLSP - .connect(this.provider.getSigner()) - .settle( - balance, - ethers.utils.parseEther("0") - ) - await TX.wait() - return TX - } catch (error) { - console.log("NS: settle_v0 error:", error) - return error - } - - } - - async settle_v1() { - - console.log("NS: settle_v1") - - // ONLY SUPPORTED on L2 - if (this.L1orL2 !== 'L2') return - - // ONLY SUPPORTED on MAINNET - if (!(this.networkGateway === NETWORK.ETHEREUM && this.networkType === NETWORK_TYPE.MAINNET)) { - return - } - - try { - - const contractLSP = new ethers.Contract( - '0x9153ACD675F04Fe16B7df72577F6553526879A6e', - WAGMIv1Json.abi, - this.L2Provider - ) - - const contractWAGMIv1 = new ethers.Contract( - '0xCe055Ea4f29fFB8bf35E852522B96aB67Cbe8197', - L1ERC20Json.abi, - this.L2Provider - ) - - const balance = await contractWAGMIv1.connect(this.provider).balanceOf(this.account) - console.log("You have WAGMIv1:", balance.toString()) - - const TX = await contractLSP - .connect(this.provider.getSigner()) - .settle( - balance, - ethers.utils.parseEther("0") - ) - await TX.wait() - return TX - } catch (error) { - console.log("NS: settle_v1 error:", error) - return error - } - - } - - async settle_v2() { - - console.log("NS: settle_v2") - - // ONLY SUPPORTED on L2 - if (this.L1orL2 !== 'L2') return - - // ONLY SUPPORTED on MAINNET - if (!(this.networkGateway === NETWORK.ETHEREUM && this.networkType === NETWORK_TYPE.MAINNET)) { - return - } - - try { - - const contractLSP = new ethers.Contract( - '0x140Ca41a6eeb484E2a7736b2e8DA836Ffd1bFAb9', - WAGMIv1Json.abi, // WAGMIv2 contract same as WAGMIv1 contract so can use the same ABI - this.L2Provider - ) - - const contractWAGMIv2 = new ethers.Contract( - '0x76B5908ecd0ae3DB23011ae96b7C1f803D63136c', - L1ERC20Json.abi, - this.L2Provider - ) - - const balance = await contractWAGMIv2.connect(this.provider).balanceOf(this.account) - console.log("You have WAGMIv2:", balance.toString()) - - const TX = await contractLSP - .connect(this.provider.getSigner()) - .settle( - balance, - ethers.utils.parseEther("0") - ) - await TX.wait() - return TX - } catch (error) { - console.log("NS: settle_v2 error:", error) - return error - } - - } - - async settle_v2OLO() { - - console.log("NS: settle_v2OLO") - - // ONLY SUPPORTED on L2 - if (this.L1orL2 !== 'L2') return - - // ONLY SUPPORTED on MAINNET - if (!(this.networkGateway === NETWORK.ETHEREUM && this.networkType === NETWORK_TYPE.MAINNET)) { - return - } - - try { - - const contractLSP = new ethers.Contract( - //need to update this address - '0x353d9d6082aBb5dA7D721ac0f7898484bB5C98F5', - WAGMIv1Json.abi, // WAGMIv2OLO contract same as WAGMIv1 contract so can use the same ABI - this.L2Provider - ) - - const contractWAGMIv2OLO = new ethers.Contract( - '0x49a3e4a1284829160f95eE785a1A5FfE2DD5Eb1D', - L1ERC20Json.abi, - this.L2Provider - ) - - const balance = await contractWAGMIv2OLO.connect(this.provider).balanceOf(this.account) - console.log("You have WAGMIv2OLO:", balance.toString()) - - const TX = await contractLSP - .connect(this.provider.getSigner()) - .settle( - balance, - ethers.utils.parseEther("0") - ) - - await TX.wait() - return TX - } catch (error) { - console.log("NS: settle_v2OLO error:", error) - return error - } - - } - - async settle_v3() { - - console.log("NS: settle_v3") - - // ONLY SUPPORTED on L2 - if (this.L1orL2 !== 'L2') return - - // ONLY SUPPORTED on MAINNET - if (!(this.networkGateway === NETWORK.ETHEREUM && this.networkType === NETWORK_TYPE.MAINNET)) { - return - } - - try { - - const contractLSP = new ethers.Contract( - '0x878221C39a7a279E6f19858AaE48875d4B1e4f5e', - WAGMIv1Json.abi, // WAGMIv2 contract same as WAGMIv1 contract so can use the same ABI - this.L2Provider - ) - - const contractWAGMIv3 = new ethers.Contract( - '0xC6158B1989f89977bcc3150fC1F2eB2260F6cabE', - L1ERC20Json.abi, - this.L2Provider - ) - - const balance = await contractWAGMIv3.connect(this.provider).balanceOf(this.account) - console.log("You have WAGMIv3:", balance.toString()) - - const TX = await contractLSP - .connect(this.provider.getSigner()) - .settle( - balance, - ethers.utils.parseEther("0") - ) - await TX.wait() - return TX - } catch (error) { - console.log("NS: settle_v3 error:", error) - return error - } - - } - - async settle_v3OLO() { - - console.log("NS: settle_v3OLO") - - // ONLY SUPPORTED on L2 - if (this.L1orL2 !== 'L2') return - - // ONLY SUPPORTED on MAINNET - if (!(this.networkGateway === NETWORK.ETHEREUM && this.networkType === NETWORK_TYPE.MAINNET)) { - return - } - - try { - - const contractLSP = new ethers.Contract( - //need to update this address - '0xDd3BDD13b1c123AE340f0Ba63BA4B172d335a92C', - WAGMIv1Json.abi, // WAGMIv2OLO contract same as WAGMIv1 contract so can use the same ABI - this.L2Provider - ) - - const contractWAGMIv3OLO = new ethers.Contract( - '0x70bf3c5B5d80C4Fece8Bde0fCe7ef38B688463d4', - L1ERC20Json.abi, - this.L2Provider - ) - - const balance = await contractWAGMIv3OLO.connect(this.provider).balanceOf(this.account) - console.log("You have WAGMIv3OLO:", balance.toString()) - - const TX = await contractLSP - .connect(this.provider.getSigner()) - .settle( - balance, - ethers.utils.parseEther("0") - ) - - await TX.wait() - return TX - } catch (error) { - console.log("NS: settle_v3OLO error:", error) - return error - } - - } - - //Transfer funds from one account to another, on the L2 - async transfer(address, value_Wei_String, currency) { - - let tx = null - - try { - - if (currency === this.addresses.L2_ETH_Address) { - //we are sending ETH - - let wei = BigNumber.from(value_Wei_String) - - // just to be on the safe side - // no idea why this is needed - //wei = wei.sub(BigNumber.from('1000000000000')) - - //console.log("wei", wei) - //console.log("wei.toString()", wei.toString()) - //console.log("hexlify", ethers.utils.hexlify(wei)) - - tx = await this.provider - .getSigner() - .sendTransaction({ - to: address, - value: ethers.utils.hexlify(wei) - }) - - } else { - - //any ERC20 json will do.... - tx = await this.L2_TEST_Contract - .connect(this.provider.getSigner()) - .attach(currency) - .transfer( - address, - value_Wei_String - ) - await tx.wait() - } - - return tx - } catch (error) { - console.log("NS: transfer error:", error) - return error - } - } - - //Transfer funds from one account to another, on the L2 - async transferEstimate(recipient, value_Wei_String, currency) { - - const gasPrice_BN = await this.L2Provider.getGasPrice() - //console.log("L2 gas price", gasPrice_BN.toString()) - - let cost_BN = BigNumber.from('0') - let gas_BN = BigNumber.from('0') - - try { - - if (currency === this.addresses.L2_ETH_Address) { - - gas_BN = await this.provider - .getSigner() - .estimateGas({ - from: this.account, - to: recipient, - value: value_Wei_String - }) - - cost_BN = gas_BN.mul(gasPrice_BN) - console.log("ETH: Transfer cost in ETH:", utils.formatEther(cost_BN)) - - } else { - - const ERC20Contract = new ethers.Contract( - currency, - L2ERC20Json.abi, // any old abi will do... - this.provider.getSigner() - ) - - const tx = await ERC20Contract - .populateTransaction - .transfer( - recipient, - value_Wei_String - ) - - gas_BN = await this.L2Provider.estimateGas(tx) - - cost_BN = gas_BN.mul(gasPrice_BN) - console.log("ERC20: Transfer cost in ETH:", utils.formatEther(cost_BN)) - } - - const safety_margin = BigNumber.from('1000000000000') - console.log("ERC20: Safety margin:", utils.formatEther(safety_margin)) - - return cost_BN.add(safety_margin) - } catch (error) { - console.log("NS: transferEstimate error:", error) - return error - } - } - - //Transfer funds from one account to another, on the L2 - async transferNFT(recipient, token) { - - console.log("Transferring NFT:", token.address) - console.log("tokenID:", token.tokenID) - console.log("Transferring to:", recipient) - - try { - - const contract = new ethers.Contract( - token.address, - TuringMonsterJson.abi, - this.L2Provider - ) - - console.log("contract:", contract) - - const tx = await contract - .connect(this.provider.getSigner()) - .transferFrom( - this.account, - recipient, - token.tokenID - ) - - const receipt = await tx.wait() - console.log("NS: NFT transfer TX:", receipt.logs) - - return tx - } catch (error) { - console.log("NS: NFT transfer error:", error) - return error - } - } - - //figure out which layer we are on right now - confirmLayer = (layerToConfirm) => async (dispatch) => { - if (layerToConfirm === this.L1orL2) { - return true - } else { - return false - } - } - - async checkAllowance( - currencyAddress, - targetContract - ) { - console.log("currencyAddress", currencyAddress) - console.log("targetContract", targetContract) - try { - const ERC20Contract = new ethers.Contract( - currencyAddress, - L1ERC20Json.abi, //could use any abi - just something with .allowance - this.provider.getSigner() - ) - const allowance = await ERC20Contract.allowance( - this.account, - targetContract - ) - return allowance - } catch (error) { - console.log("NS: checkAllowance error:", error) - return error - } - } - - // Used when people want to fast exit - they have to deposit funds into the L2LP - // to start the fast exit - async approveERC20_L2LP( - value_Wei_String, - currencyAddress - ) { - - try { - - console.log("approveERC20_L2LP") - - //we could use any L2 ERC contract here - just getting generic parts of the abi - //but we know we alaways have the TEST contract, so will use that - const L2ERC20Contract = this.L2_TEST_Contract - .connect(this.provider.getSigner()) - .attach(currencyAddress) - - let allowance_BN = await L2ERC20Contract.allowance( - this.account, - this.addresses.L2LPAddress - ) - - //let depositAmount_BN = new BN(value_Wei_String) - let depositAmount_BN = BigNumber.from(value_Wei_String) - - if (depositAmount_BN.gt(allowance_BN)) { - const approveStatus = await L2ERC20Contract.approve( - this.addresses.L2LPAddress, - value_Wei_String - ) - await approveStatus.wait() - return approveStatus - } - - return allowance_BN - } catch (error) { - console.log("NS: approveERC20_L2LP error:", error) - return error - } - } - - //used to stake funds in the L1LP - async approveERC20_L1LP( - value_Wei_String, - currency - ) { - - console.log("approveERC20_L1LP") - const approveContractAddress = this.addresses.L1LPAddress - - let allowance_BN = BigNumber.from("0") - let allowed = false - - try { - - const ERC20Contract = new ethers.Contract( - currency, - L1ERC20Json.abi, - this.provider.getSigner() - ) - - if (currency !== this.addresses.L1_ETH_Address) { - - let allowance_BN = await ERC20Contract.allowance( - this.account, - approveContractAddress - ) - console.log("Initial allowance:", allowance_BN) - - /* - OMG IS A SPECIAL CASE - allowance needs to be set to zero, and then - set to actual amount, unless current approval amount is equal to, or - bigger than, the current approval value - */ - if (this.networkGateway === NETWORK.ETHEREUM - && allowance_BN.lt(BigNumber.from(value_Wei_String)) && - (currency.toLowerCase() === allTokens.OMG.L1.toLowerCase()) - ) { - console.log("Current OMG Token allowance too small - might need to reset to 0, unless it's already zero") - if (allowance_BN.gt(BigNumber.from("0"))) { - const approveOMG = await ERC20Contract.approve( - approveContractAddress, - ethers.utils.parseEther("0") - ) - await approveOMG.wait() - console.log("OMG Token allowance has been set to 0") - } - } - - //recheck the allowance - allowance_BN = await ERC20Contract.allowance( - this.account, - approveContractAddress - ) - - allowed = allowance_BN.gte(BigNumber.from(value_Wei_String)) - - } else { - //we are dealing with ETH - go straight to approve - - } - - if (!allowed) { - //and now, the normal allowance transaction - const approveStatus = await ERC20Contract.approve( - approveContractAddress, - value_Wei_String - ) - await approveStatus.wait() - console.log("ERC 20 L1 Staking approved:", approveStatus) - return approveStatus - } - - return allowance_BN - - } catch (error) { - console.log("NS: approveERC20_L1LP error:", error) - return error - } - } - - async approveERC20( - value_Wei_String, - currency, - approveContractAddress = this.addresses.L1StandardBridgeAddress, - contractABI = L1ERC20Json.abi - ) { - try { - - const ERC20Contract = new ethers.Contract( - currency, - contractABI, - this.provider.getSigner() - ) - - /***********************/ - - let allowance_BN = await ERC20Contract.allowance( - this.account, - approveContractAddress - ) - console.log("Initial Allowance is:", allowance_BN) - - /* - OMG IS A SPECIAL CASE - allowance needs to be set to zero, and then - set to actual amount, unless current approval amount is equal to, or - bigger than, the current approval value - */ - if (this.networkGateway === NETWORK.ETHEREUM && - allowance_BN.lt(BigNumber.from(value_Wei_String)) && - (currency.toLowerCase() === allTokens.OMG.L1.toLowerCase()) - ) { - console.log("Current OMG Token allowance too small - might need to reset to 0, unless it's already zero") - if (allowance_BN.gt(BigNumber.from("0"))) { - const approveOMG = await ERC20Contract.approve( - approveContractAddress, - ethers.utils.parseEther("0") - ) - await approveOMG.wait() - console.log("OMG Token allowance has been set to 0") - } - } - - //recheck the allowance - allowance_BN = await ERC20Contract.allowance( - this.account, - approveContractAddress - ) - console.log("Second Allowance is:", allowance_BN) - - const allowed = allowance_BN.gte(BigNumber.from(value_Wei_String)) - - console.log("Allowed?:", allowed) - - if (!allowed) { - console.log("Not good enough - need to set to:", value_Wei_String) - //and now, the normal allowance transaction - const approveStatus = await ERC20Contract.approve( - approveContractAddress, - value_Wei_String - ) - await approveStatus.wait() - console.log("ERC20 L1 SWAP ops approved:", approveStatus) - } - - return true - } catch (error) { - console.log("NS: approveERC20 error:", error) - return error - } - } - - async approveFastDepositBatch(payload) { - for (const tokenInput of payload) { - if (tokenInput.symbol !== 'ETH') { - const res = await this.approveERC20( - utils.parseUnits(tokenInput.value, tokenInput.decimals).toString(), - tokenInput.currency, - this.L1LPContract.address, - ) - if (!res) { - return res - } - } - } - return true - } - - //Used to move ERC20 Tokens from L1 to L2 using the classic deposit - async depositErc20({ - recipient = null, - value_Wei_String, - currency, - currencyL2 - }) { - - const L1_TEST_Contract = this.L1_TEST_Contract.attach(currency) - - let allowance_BN = await L1_TEST_Contract.allowance( - this.account, - this.addresses.L1StandardBridgeAddress - ) - setFetchDepositTxBlock(false) - try { - /* - OMG IS A SPECIAL CASE - allowance needs to be set to zero, and then - set to actual amount, unless current approval amount is equal to, or - bigger than, the current approval value - */ - if (this.networkGateway === NETWORK.ETHEREUM && - allowance_BN.lt(BigNumber.from(value_Wei_String)) && - (currency.toLowerCase() === allTokens.OMG.L1.toLowerCase()) - ) { - console.log("Current OMG Token allowance too small - might need to reset to 0, unless it's already zero") - if (allowance_BN.gt(BigNumber.from("0"))) { - const approveOMG = await L1_TEST_Contract.approve( - this.addresses.L1StandardBridgeAddress, - ethers.utils.parseEther("0") - ) - await approveOMG.wait() - console.log("OMG Token allowance has been set to 0") - } - } - - //recheck the allowance - allowance_BN = await L1_TEST_Contract.allowance( - this.account, - this.addresses.L1StandardBridgeAddress - ) - - const allowed = allowance_BN.gte(BigNumber.from(value_Wei_String)) - - if (!allowed) { - //and now, the normal allowance transaction - const approveStatus = await L1_TEST_Contract - .connect(this.provider.getSigner()).approve( - this.addresses.L1StandardBridgeAddress, - value_Wei_String - ) - await approveStatus.wait() - console.log("ERC20 L1 ops approved:", approveStatus) - } - let depositTX; - if (!recipient) { - // incase no recipient - depositTX = await this.L1StandardBridgeContract - .connect(this.provider.getSigner()).depositERC20( - currency, - currencyL2, - value_Wei_String, - this.L2GasLimit, - utils.formatBytes32String(new Date().getTime().toString()) - ) - } else { - // deposit ERC20 to L2 account address. - depositTX = await this.L1StandardBridgeContract - .connect(this.provider.getSigner()) - .depositERC20To( - currency, - currencyL2, - recipient, - value_Wei_String, - this.L2GasLimit, - utils.formatBytes32String(new Date().getTime().toString()) - ) - } - setFetchDepositTxBlock(true) - //at this point the tx has been submitted, and we are waiting... - await depositTX.wait() - - const opts = { - fromBlock: -4000 - } - const receipt = await this.watcher.waitForMessageReceipt(depositTX, opts) - const txReceipt = receipt.transactionReceipt; - this.getBalances() - return txReceipt - } catch (error) { - console.log("NS: depositErc20 error:", error) - return error - } - } - - //Standard 7 day exit from BOBA - async exitBOBA(currencyAddress, value_Wei_String) { - - updateSignatureStatus_exitTRAD(false) - - try { - - const L2BillingContract = new ethers.Contract( - this.addresses.Proxy__BobaBillingContract, - L2BillingContractJson.abi, - this.L2Provider, - ) - let BobaApprovalAmount = await L2BillingContract.exitFee() - - //now coming in as a value_Wei_String - const value = BigNumber.from(value_Wei_String) - - const allowance = await this.checkAllowance( - currencyAddress, - this.addresses.DiscretionaryExitFee - ) - - const BobaAllowance = await this.checkAllowance( - this.addresses.TK_L2BOBA, - this.addresses.DiscretionaryExitFee - ) - - if (this.networkGateway === NETWORK.ETHEREUM) { - // Should approve BOBA - if (utils.getAddress(currencyAddress) === utils.getAddress(this.addresses.TK_L2BOBA)) { - BobaApprovalAmount = BobaApprovalAmount.add(value) - } - - if (BobaAllowance.lt(BobaApprovalAmount)) { - const res = await this.approveERC20( - BobaApprovalAmount, - this.addresses.TK_L2BOBA, - this.addresses.DiscretionaryExitFee - ) - if (!res) return false - } - - } - - let otherField; - if (this.networkGateway === NETWORK.ETHEREUM) { - otherField = currencyAddress === this.addresses.L2_ETH_Address ? {value: value} : {} - } else { - otherField = currencyAddress === this.addresses.L2_ETH_Address ? - {value: value.add(BobaApprovalAmount)} : {value: BobaApprovalAmount} - } - - // Should approve other tokens - if (currencyAddress !== this.addresses.L2_ETH_Address && - utils.getAddress(currencyAddress) !== utils.getAddress(this.addresses.TK_L2BOBA) && - allowance.lt(value) - ) { - const res = await this.approveERC20( - value, - currencyAddress, - this.addresses.DiscretionaryExitFee - ) - if (!res) return false - } - - const DiscretionaryExitFeeContract = new ethers.Contract( - this.addresses.DiscretionaryExitFee, - DiscretionaryExitFeeJson.abi, - this.provider.getSigner() - ) - - const tx = await DiscretionaryExitFeeContract.payAndWithdraw( - currencyAddress, - value_Wei_String, - this.L1GasLimit, - utils.formatBytes32String(new Date().getTime().toString()), - otherField - ) - - //everything submitted... waiting - await tx.wait() - - //can close window now - updateSignatureStatus_exitTRAD(true) - - return tx - } catch (error) { - console.log("NS: exitBOBA error:", error) - return error - } - - } - - /* Estimate cost of Classical Exit to L1 */ - async getExitCost(currencyAddress) { - - try { - - let approvalCost_BN = BigNumber.from('0') - - const gasPrice = await this.L2Provider.getGasPrice() - console.log("Classical exit gas price", gasPrice.toString()) - - if (currencyAddress !== this.addresses.L2_ETH_Address) { - - const ERC20Contract = new ethers.Contract( - currencyAddress, - L2ERC20Json.abi, //any old abi will do... - this.provider.getSigner() - ) - - const tx = await ERC20Contract.populateTransaction.approve( - this.addresses.DiscretionaryExitFee, - utils.parseEther('1.0') - ) - - const approvalGas_BN = await this.L2Provider.estimateGas({...tx, from: this.gasEstimateAccount}) - approvalCost_BN = approvalGas_BN.mul(gasPrice) - console.log("Approve cost in ETH:", utils.formatEther(approvalCost_BN)) - } - - const DiscretionaryExitFeeContract = new ethers.Contract( - this.addresses.DiscretionaryExitFee, - DiscretionaryExitFeeJson.abi, - this.provider.getSigner() - ) - - const L2BillingContract = new ethers.Contract( - this.addresses.Proxy__BobaBillingContract, - L2BillingContractJson.abi, - this.L2Provider, - ) - const exitFee = await L2BillingContract.exitFee() - let value = utils.parseEther('0.00001').add(exitFee) - if (this.networkGateway === NETWORK.ETHEREUM) { - value = utils.parseEther('0.00001') - } - - const tx2 = await DiscretionaryExitFeeContract.populateTransaction.payAndWithdraw( - this.addresses.L2_ETH_Address, - utils.parseEther('0.00001'), - this.L1GasLimit, - ethers.utils.formatBytes32String(new Date().getTime().toString()), - {value} - ) - - const gas_BN = await this.L2Provider.estimateGas({...tx2, from: this.gasEstimateAccount}) - console.log("Classical exit gas", gas_BN.toString()) - - const cost_BN = gas_BN.mul(gasPrice) - console.log("Classical exit cost (ETH):", utils.formatEther(cost_BN)) - - const totalCost = utils.formatEther(cost_BN.add(approvalCost_BN)) - console.log("Classical exit total cost (ETH):", totalCost) - - //returns total cost in ETH - return totalCost - } catch (error) { - return 0; - } - } - - /***********************************************/ - /***** Fee *****/ - /***** Fees are reported as integers, *****/ - /***** where every int represents 0.1% *****/ - - /***********************************************/ - - async getL1TotalFeeRate() { - - try { - const L1LPContract = new ethers.Contract( - this.addresses.L1LPAddress, - L1LPJson.abi, - this.L1Provider - ) - const [operatorFeeRate, userMinFeeRate, userMaxFeeRate] = await Promise.all([ - L1LPContract.ownerRewardFeeRate(), - L1LPContract.userRewardMinFeeRate(), - L1LPContract.userRewardMaxFeeRate() - ]) - - const feeRateL = Number(userMinFeeRate) + Number(operatorFeeRate) - const feeRateH = Number(userMaxFeeRate) + Number(operatorFeeRate) - - return { - feeMin: (feeRateL / 10).toFixed(1), - feeMax: (feeRateH / 10).toFixed(1) - } - - } catch (error) { - console.log("NS: getL1TotalFeeRate error:", error) - return error - } - } - - async getL2TotalFeeRate() { - - try { - - const L2LPContract = new ethers.Contract( - this.addresses.L2LPAddress, - L2LPJson.abi, - this.L2Provider - ) - const [operatorFeeRate, userMinFeeRate, userMaxFeeRate] = await Promise.all([ - L2LPContract.ownerRewardFeeRate(), - L2LPContract.userRewardMinFeeRate(), - L2LPContract.userRewardMaxFeeRate() - ]) - - const feeRateL = Number(userMinFeeRate) + Number(operatorFeeRate) - const feeRateH = Number(userMaxFeeRate) + Number(operatorFeeRate) - - return { - feeMin: (feeRateL / 10).toFixed(1), - feeMax: (feeRateH / 10).toFixed(1) - } - } catch (error) { - console.log("NS: getL2TotalFeeRate error:", error) - return error - } - } - - async getL1UserRewardFeeRate(tokenAddress) { - try { - const L1LPContract = new ethers.Contract( - this.addresses.L1LPAddress, - L1LPJson.abi, - this.L1Provider - ) - const feeRate = await L1LPContract.getUserRewardFeeRate(tokenAddress) - //console.log("NS: getL1UserRewardFeeRate:", feeRate) - return (feeRate / 10).toFixed(1) - } catch (error) { - console.log("NS: getL1UserRewardFeeRate error:", error) - return error - } - } - - async getL2UserRewardFeeRate(tokenAddress) { - try { - const L2LPContract = new ethers.Contract( - this.addresses.L2LPAddress, - L2LPJson.abi, - this.L2Provider - ) - const feeRate = await L2LPContract.getUserRewardFeeRate(tokenAddress) - //console.log("NS: getL2UserRewardFeeRate:", feeRate) - return (feeRate / 10).toFixed(1) - } catch (error) { - console.log("NS: getL2UserRewardFeeRate error:", error) - return error - } - } - - /*****************************************************/ - /***** Pool, User Info, to populate the Earn tab *****/ - - /*****************************************************/ - async getL1LPInfo() { - - const poolInfo = {} - const userInfo = {} - - let tokenAddressList = Object.keys(this.tokenAddresses).reduce((acc, cur) => { - if (cur !== 'xBOBA' && - cur !== 'OLO' && - cur !== 'WAGMIv0' && - cur !== 'WAGMIv1' && - cur !== 'WAGMIv2' && - cur !== 'WAGMIv2-Oolong' && - cur !== 'WAGMIv3' && - cur !== 'WAGMIv3-Oolong') { - acc.push(this.tokenAddresses[cur].L1.toLowerCase()) - } - return acc - }, [this.addresses.L1_ETH_Address]) - - const L1LPContract = new ethers.Contract( - this.addresses.L1LPAddress, - L1LPJson.abi, - this.L1Provider - ) - - const L1LPInfoPromise = [] - - const getL1LPInfoPromise = async (tokenAddress) => { - - let tokenBalance - let tokenSymbol - let tokenName - let decimals - - if (tokenAddress === this.addresses.L1_ETH_Address) { - //getting eth balance - tokenBalance = await this.L1Provider.getBalance(this.addresses.L1LPAddress) - tokenSymbol = this.L1NativeTokenSymbol - tokenName = this.L1NativeTokenName - decimals = 18 - } else { - //getting eth balance - tokenBalance = await this.L1_TEST_Contract.attach(tokenAddress).connect(this.L1Provider).balanceOf(this.addresses.L1LPAddress) - const tokenInfoFiltered = this.tokenInfo.L1[utils.getAddress(tokenAddress)] - if (tokenInfo) { - tokenSymbol = tokenInfoFiltered.symbol - tokenName = tokenInfoFiltered.name - decimals = tokenInfoFiltered.decimals - } else { - tokenSymbol = await this.L1_TEST_Contract.attach(tokenAddress).connect(this.L1Provider).symbol() - tokenName = await this.L1_TEST_Contract.attach(tokenAddress).connect(this.L1Provider).name() - decimals = await this.L1_TEST_Contract.attach(tokenAddress).connect(this.L1Provider).decimals() - } - } - - const poolTokenInfo = await L1LPContract.poolInfo(tokenAddress) - let userTokenInfo = {} - if (typeof this.account !== 'undefined' && this.account) { - userTokenInfo = await L1LPContract.userInfo(tokenAddress, this.account) - } - return {tokenAddress, tokenBalance, tokenSymbol, tokenName, poolTokenInfo, userTokenInfo, decimals} - } - - tokenAddressList.forEach((tokenAddress) => L1LPInfoPromise.push(getL1LPInfoPromise(tokenAddress))) - - const L1LPInfo = await Promise.all(L1LPInfoPromise) - sortRawTokens(L1LPInfo).forEach((token) => { - const userIn = Number(token.poolTokenInfo.userDepositAmount.toString()) - const rewards = Number(token.poolTokenInfo.accUserReward.toString()) - const duration = new Date().getTime() - Number(token.poolTokenInfo.startTime) * 1000 - const durationDays = duration / (60 * 60 * 24 * 1000) - const annualRewardEstimate = 365 * rewards / durationDays - let annualYieldEstimate = 100 * annualRewardEstimate / userIn - if (!annualYieldEstimate) annualYieldEstimate = 0 - poolInfo[token.tokenAddress.toLowerCase()] = { - symbol: token.tokenSymbol, - name: token.tokenName, - decimals: token.decimals, - l1TokenAddress: token.poolTokenInfo.l1TokenAddress.toLowerCase(), - l2TokenAddress: token.poolTokenInfo.l2TokenAddress.toLowerCase(), - accUserReward: token.poolTokenInfo.accUserReward.toString(), - accUserRewardPerShare: token.poolTokenInfo.accUserRewardPerShare.toString(), - userDepositAmount: token.poolTokenInfo.userDepositAmount.toString(), - startTime: token.poolTokenInfo.startTime.toString(), - APR: annualYieldEstimate, - tokenBalance: token.tokenBalance.toString() - } - userInfo[token.tokenAddress] = { - l1TokenAddress: token.tokenAddress.toLowerCase(), - amount: Object.keys(token.userTokenInfo).length ? token.userTokenInfo.amount.toString() : 0, - pendingReward: Object.keys(token.userTokenInfo).length ? token.userTokenInfo.pendingReward.toString() : 0, - rewardDebt: Object.keys(token.userTokenInfo).length ? token.userTokenInfo.rewardDebt.toString() : 0 - } - }) - - return {poolInfo, userInfo} - } - - async getL2LPInfo() { - - const tokenAddressList = Object.keys(this.tokenAddresses).reduce((acc, cur) => { - if (cur !== 'xBOBA' && - cur !== 'OLO' && - cur !== 'WAGMIv0' && - cur !== 'WAGMIv1' && - cur !== 'WAGMIv2' && - cur !== 'WAGMIv2-Oolong' && - cur !== 'WAGMIv3' && - cur !== 'WAGMIv3-Oolong' - ) { - acc.push({ - L1: this.tokenAddresses[cur].L1.toLowerCase(), - L2: this.tokenAddresses[cur].L2.toLowerCase() - }) - } - return acc - }, [{ - L1: this.addresses.L1_ETH_Address, - L2: this.addresses[`TK_L2${this.L1NativeTokenSymbol}`] - }]) - - const L2LPContract = new ethers.Contract( - this.addresses.L2LPAddress, - L2LPJson.abi, - this.L2Provider - ) - - const poolInfo = {} - const userInfo = {} - - const L2LPInfoPromise = []; - - const getL2LPInfoPromise = async (tokenAddress, tokenAddressL1) => { - - let tokenBalance - let tokenSymbol - let tokenName - let decimals - - if (tokenAddress === this.addresses.L2_ETH_Address) { - tokenBalance = await this.L2Provider.getBalance(this.addresses.L2LPAddress) - tokenSymbol = this.network === NETWORK.ETHEREUM ? 'ETH' : 'BOBA' - tokenName = this.network === NETWORK.ETHEREUM ? 'Ethereum' : 'BOBA Token' - decimals = 18 - } else { - tokenBalance = await this.L2_TEST_Contract.attach(tokenAddress).connect(this.L2Provider).balanceOf(this.addresses.L2LPAddress) - const tokenInfoFiltered = this.tokenInfo.L2[utils.getAddress(tokenAddress)] - if (tokenInfo) { - tokenSymbol = tokenInfoFiltered.symbol - tokenName = tokenInfoFiltered.name - decimals = tokenInfoFiltered.decimals - } else { - tokenSymbol = await this.L2_TEST_Contract.attach(tokenAddress).connect(this.L2Provider).symbol() - tokenName = await this.L2_TEST_Contract.attach(tokenAddress).connect(this.L2Provider).name() - decimals = await this.L1_TEST_Contract.attach(tokenAddressL1).connect(this.L1Provider).decimals() - } - } - const poolTokenInfo = await L2LPContract.poolInfo(tokenAddress) - let userTokenInfo = {} - if (typeof this.account !== 'undefined' && this.account) { - userTokenInfo = await L2LPContract.userInfo(tokenAddress, this.account) - } - return {tokenAddress, tokenBalance, tokenSymbol, tokenName, poolTokenInfo, userTokenInfo, decimals} - } - - tokenAddressList.forEach(({L1, L2}) => L2LPInfoPromise.push(getL2LPInfoPromise(L2, L1))) - - const L2LPInfo = await Promise.all(L2LPInfoPromise) - - sortRawTokens(L2LPInfo).forEach((token) => { - const userIn = Number(token.poolTokenInfo.userDepositAmount.toString()) - const rewards = Number(token.poolTokenInfo.accUserReward.toString()) - const duration = new Date().getTime() - Number(token.poolTokenInfo.startTime) * 1000 - const durationDays = duration / (60 * 60 * 24 * 1000) - const annualRewardEstimate = 365 * rewards / durationDays - let annualYieldEstimate = 100 * annualRewardEstimate / userIn - if (!annualYieldEstimate) annualYieldEstimate = 0 - poolInfo[token.tokenAddress.toLowerCase()] = { - symbol: token.tokenSymbol, - name: token.tokenName, - decimals: token.decimals, - l1TokenAddress: token.poolTokenInfo.l1TokenAddress.toLowerCase(), - l2TokenAddress: token.poolTokenInfo.l2TokenAddress.toLowerCase(), - accUserReward: token.poolTokenInfo.accUserReward.toString(), - accUserRewardPerShare: token.poolTokenInfo.accUserRewardPerShare.toString(), - userDepositAmount: token.poolTokenInfo.userDepositAmount.toString(), - startTime: token.poolTokenInfo.startTime.toString(), - APR: annualYieldEstimate, - tokenBalance: token.tokenBalance.toString() - } - userInfo[token.tokenAddress.toLowerCase()] = { - l2TokenAddress: token.tokenAddress.toLowerCase(), - amount: Object.keys(token.userTokenInfo).length ? token.userTokenInfo.amount.toString() : 0, - pendingReward: Object.keys(token.userTokenInfo).length ? token.userTokenInfo.pendingReward.toString() : 0, - rewardDebt: Object.keys(token.userTokenInfo).length ? token.userTokenInfo.rewardDebt.toString() : 0 - } - }) - - return {poolInfo, userInfo} - } - - /***********************************************/ - /***** Add Liquidity *****/ - - /***********************************************/ - async addLiquidity(currency, value_Wei_String, L1orL2Pool) { - - let otherField = {} - - if (currency === this.addresses.L1_ETH_Address || currency === this.addresses.L2_ETH_Address) { - // add value field for ETH - otherField['value'] = value_Wei_String - } - - try { - const TX = await (L1orL2Pool === 'L1LP' - ? this.L1LPContract - : this.L2LPContract - ) - .connect(this.provider.getSigner()) - .addLiquidity( - value_Wei_String, - currency, - otherField - ) - await TX.wait() - return TX - } catch (error) { - console.log("NS: addLiquidity error:", error) - return error - } - } - - async liquidityEstimate(currency) { - - let otherField = { - from: this.gasEstimateAccount - } - - const gasPrice_BN = await this.provider.getGasPrice() - let approvalCost_BN = BigNumber.from('0') - let stakeCost_BN = BigNumber.from('0') - - try { - - // First, we need the approval cost - // not relevant to ETH - if (currency !== this.addresses.L2_ETH_Address) { - - const tx1 = await this.BobaContract - .populateTransaction - .approve( - this.addresses.L2LPAddress, - utils.parseEther('1.0'), - otherField - ) - - const approvalGas_BN = await this.provider.estimateGas(tx1) - approvalCost_BN = approvalGas_BN.mul(gasPrice_BN) - console.log("Approve cost in ETH:", utils.formatEther(approvalCost_BN)) - } - - if (this.networkGateway !== NETWORK.ETHEREUM) { - otherField = { - ...otherField, - value: utils.parseEther('1.0') - } - } - // Second, we need the addLiquidity cost - // all ERC20s will be the same, so use the BOBA contract - const tx2 = await this.L2LPContract - .connect(this.provider) - .populateTransaction - .addLiquidity( - utils.parseEther('1.0'), - this.tokenAddresses['BOBA'].L2, - otherField - ) - const stakeGas_BN = await this.provider.estimateGas(tx2) - stakeCost_BN = stakeGas_BN.mul(gasPrice_BN) - console.log("addLiquidity cost in ETH:", utils.formatEther(stakeCost_BN)) - - const safety_margin_BN = BigNumber.from('1000000000000') - console.log("Safety margin:", utils.formatEther(safety_margin_BN)) - - return approvalCost_BN.add(stakeCost_BN).add(safety_margin_BN) - - } catch (error) { - console.log('NS: liquidityEstimate() error', error) - return error - } - - } - - /***********************************************/ - /***** Get Reward *****/ - - /***********************************************/ - async getReward(currencyAddress, value_Wei_String, L1orL2Pool) { - - try { - const TX = await (L1orL2Pool === 'L1LP' - ? this.L1LPContract - : this.L2LPContract - ) - .connect(this.provider.getSigner()) - .withdrawReward( - value_Wei_String, - currencyAddress, - this.account - ) - await TX.wait() - return TX - } catch (error) { - console.log("NS: getReward error:", error) - return error - } - } - - /***********************************************/ - /***** Withdraw Liquidity *****/ - - /***********************************************/ - async withdrawLiquidity(currency, value_Wei_String, L1orL2Pool) { - - try { - const estimateGas = await (L1orL2Pool === 'L1LP' - ? this.L1LPContract - : this.L2LPContract - ).estimateGas.withdrawLiquidity( - value_Wei_String, - currency, - this.account, - {from: this.account} - ) - const blockGasLimit = (await this.provider.getBlock('latest')).gasLimit - const TX = await (L1orL2Pool === 'L1LP' - ? this.L1LPContract - : this.L2LPContract - ) - .connect(this.provider.getSigner()) - .withdrawLiquidity( - value_Wei_String, - currency, - this.account, - {gasLimit: estimateGas.mul(2).gt(blockGasLimit) ? blockGasLimit : estimateGas.mul(2)} - ) - await TX.wait() - return TX - } catch (error) { - console.log("NS: withdrawLiquidity error:", error) - return error - } - } - - /***********************************************************/ - /***** SWAP ON to BOBA by depositing funds to the L1LP *****/ - - /***********************************************************/ - async depositL1LP(currency, value_Wei_String) { - try { - updateSignatureStatus_depositLP(false) - setFetchDepositTxBlock(false); - - let depositTX = await this.L1LPContract - .connect(this.provider.getSigner()) - .clientDepositL1( - value_Wei_String, - currency, - currency === this.addresses.L1_ETH_Address ? {value: value_Wei_String} : {} - ) - - setFetchDepositTxBlock(true); - - //at this point the tx has been submitted, and we are waiting... - await depositTX.wait() - updateSignatureStatus_depositLP(true) - - const opts = { - fromBlock: -4000 - } - const receipt = await this.watcher.waitForMessageReceipt(depositTX, opts) - const txReceipt = receipt.transactionReceipt; - console.log(' completed swap-on ! L2 tx hash:', txReceipt) - return txReceipt - } catch (error) { - console.log("NS: depositL1LP error:", error) - return error - } - } - - getTeleportationAddress(chainId) { - if (!chainId) { - chainId = this.chainId - } - const networkConfig = CHAIN_ID_LIST[chainId] - if (!networkConfig) { - throw new Error(`Unknown chainId to retrieve teleportation contract from: ${chainId}`) - } - if (networkConfig.networkType !== NETWORK_TYPE.TESTNET) { - if (isDevBuild()) { - console.log("DEV: Teleportation is only supported on testnet for now, chainId: ", chainId) - } - return {teleportationAddr: undefined, networkConfig} - } - const addresses = appService.fetchAddresses({networkType: networkConfig.networkType, network: networkConfig.chain}) - - let teleportationAddr = addresses.Proxy__L2Teleportation - if (networkConfig.layer === LAYER.L1) { - teleportationAddr = addresses.Proxy__L1Teleportation - } - return {teleportationAddr, networkConfig}; - } - - getTeleportationContract(chainId) { - const {teleportationAddr, networkConfig} = this.getTeleportationAddress(chainId) - if (!teleportationAddr || !this.Teleportation) return; - - const rpc = getRpcUrl({networkType: networkConfig.networkType, network: networkConfig.chain, layer: networkConfig.layer}) - const provider = new ethers.providers.StaticJsonRpcProvider(rpc) - - return this.Teleportation - .attach(teleportationAddr) - .connect(provider); - } - - async isTeleportationOfAssetSupported(layer, token, destChainId) { - const teleportationAddr = (layer === Layer.L1 ? this.addresses.Proxy__L1Teleportation : this.addresses.Proxy__L2Teleportation) - const contract = this.Teleportation - .attach(teleportationAddr) - .connect(this.provider.getSigner()); - return await contract.supportedTokens(token, destChainId) - } - - async depositWithTeleporter(layer, currency, value_Wei_String, destChainId) { - try { - updateSignatureStatus_depositLP(false) - setFetchDepositTxBlock(false); - - const teleportationAddr = (layer === Layer.L1 ? this.addresses.Proxy__L1Teleportation : this.addresses.Proxy__L2Teleportation) - const msgVal = currency === this.addresses.L1_ETH_Address || currency === this.addresses.NETWORK_NATIVE ? {value: value_Wei_String} : {} - const teleportationContract = this.Teleportation - .attach(teleportationAddr) - .connect(this.provider.getSigner()) - const tokenAddress = currency === this.addresses.NETWORK_NATIVE ? ethers.constants.AddressZero : currency - - - - const assetSupport = await teleportationContract.supportedTokens(tokenAddress, destChainId) - if (!assetSupport?.supported) { - console.error("Teleportation: Asset not supported for chainId", assetSupport, tokenAddress, destChainId) - return new Error(`Teleportation: Asset ${tokenAddress} not supported for chainId ${destChainId}`) - } - - let depositTX = await teleportationContract - .teleportAsset( - tokenAddress, - value_Wei_String, - destChainId, - msgVal - ) - - setFetchDepositTxBlock(true); - - //at this point the tx has been submitted, and we are waiting... - await depositTX.wait() - updateSignatureStatus_depositLP(true) - - const opts = { - fromBlock: -4000 - } - const receipt = await this.watcher.waitForMessageReceipt(depositTX, opts) - const txReceipt = receipt.transactionReceipt; - console.log(' completed swap-on ! tx hash:', txReceipt) - return txReceipt - } catch (error) { - console.log("Teleportation error:", error) - return error - } - } - - async depositL1LPBatch(payload) { - - const updatedPayload = [] - let ETHAmount = 0 - - for (const tokenInput of payload) { - updatedPayload.push({ - l1TokenAddress: tokenInput.currency, - amount: utils.parseUnits(tokenInput.value, tokenInput.decimals).toString() - }) - if (tokenInput.symbol === 'ETH') { - ETHAmount = utils.parseUnits(tokenInput.value, tokenInput.decimals).toString() - } - } - - updateSignatureStatus_depositLP(false) - - try { - console.log("payload:", updatedPayload) - - const time_start = new Date().getTime() - console.log("TX start time:", time_start) - - let depositTX - console.log("Depositing...") - depositTX = await this.L1LPContract - .connect(this.provider.getSigner()).clientDepositL1Batch( - updatedPayload, - ETHAmount !== 0 ? {value: ETHAmount} : {} - ) - - console.log("depositTX", depositTX) - - //at this point the tx has been submitted, and we are waiting... - await depositTX.wait() - - const block = await this.L1Provider.getTransaction(depositTX.hash) - console.log(' block:', block) - - updateSignatureStatus_depositLP(true) - - const opts = { - fromBlock: -4000 - } - const receipt = await this.watcher.waitForMessageReceipt(depositTX, opts) - const txReceipt = receipt.transactionReceipt; - console.log(' completed swap-on ! L2 tx hash:', txReceipt) - - const time_stop = new Date().getTime() - console.log("TX finish time:", time_stop) - - return txReceipt - - } catch (error) { - console.log("NS: depositL1LPBatch error:", error) - return error - } - } - - /***************************************/ - /************ L1LP Pool size ***********/ - - /***************************************/ - async L1LPPending(tokenAddress) { - - const L1pending = await omgxWatcherAxiosInstance( - this.networkConfig - ).get('get.l2.pendingexits', {}) - - const pendingFast = L1pending.data.filter(i => { - return (i.fastRelay === 1) && //fast exit - i.exitToken.toLowerCase() === tokenAddress.toLowerCase() //and, this specific token - }) - - let sum = pendingFast.reduce(function (prev, current) { - let weiString = BigNumber.from(current.exitAmount) - return prev.add(weiString) - }, BigNumber.from('0')) - - return sum.toString() - - } - - /***************************************/ - /************ L1LP Pool size ***********/ - - /***************************************/ - async L2LPPending(tokenAddress) { - //Placeholder return - const sum = BigNumber.from('0') - return sum.toString() - } - - /***************************************/ - /************ L1LP Pool size ***********/ - - /***************************************/ - async L1LPBalance(tokenAddress) { - - //console.log("L1LPBalance(tokenAddress)") - - let balance - let tokenAddressLC = tokenAddress.toLowerCase() - - if ( - tokenAddressLC === this.addresses.L2_ETH_Address || - tokenAddressLC === this.addresses.L1_ETH_Address - ) { - balance = await this.L1Provider.getBalance(this.addresses.L1LPAddress) - } else { - balance = await this.L1_TEST_Contract - .attach(tokenAddress) - .connect(this.L1Provider) - .balanceOf(this.addresses.L1LPAddress) - } - - return balance.toString() - - } - - /***************************************/ - /************ L2LP Pool size ***********/ - - /***************************************/ - async L2LPBalance(tokenAddress) { - - let balance - let tokenAddressLC = tokenAddress.toLowerCase() - - if ( - tokenAddressLC === this.addresses.L2_BOBA_Address || - tokenAddressLC === this.addresses.L1_ETH_Address - ) { - //We are dealing with ETH - balance = await this.L2_ETH_Contract.connect(this.L2Provider).balanceOf( - this.addresses.L2LPAddress - ) - } else { - balance = await this.L2_TEST_Contract.attach(tokenAddress).connect(this.L2Provider).balanceOf( - this.addresses.L2LPAddress - ) - } - - return balance.toString() - } - - /***************************************/ - /*********** L1LP Liquidity ************/ - - /***************************************/ - async L1LPLiquidity(tokenAddress) { - - const L1LPContractNS = new ethers.Contract( - this.addresses.L1LPAddress, - L1LPJson.abi, - this.L1Provider - ) - - try { - const poolTokenInfo = await L1LPContractNS.poolInfo(tokenAddress) - return poolTokenInfo.userDepositAmount.toString() - } catch (error) { - console.log("NS: L1LPLiquidity error:", error) - return error - } - - } - - /***************************************/ - /*********** L2LP Liquidity ************/ - - /***************************************/ - async L2LPLiquidity(tokenAddress) { - - const L2LPContractNS = new ethers.Contract( - this.addresses.L2LPAddress, - L2LPJson.abi, - this.L2Provider - ) - - try { - const poolTokenInfo = await L2LPContractNS.poolInfo(tokenAddress) - return poolTokenInfo.userDepositAmount.toString() - } catch (error) { - console.log("NS: L2LPLiquidity error:", error) - return error - } - - } - - /* Estimate cost of Fast Exit to L1 */ - async getFastExitCost(currencyAddress) { - - let approvalCost_BN = BigNumber.from('0') - - const gasPrice = await this.L2Provider.getGasPrice() - console.log("Fast exit gas price", gasPrice.toString()) - - if (currencyAddress !== this.addresses.L2_ETH_Address) { - - const ERC20Contract = new ethers.Contract( - currencyAddress, - L2ERC20Json.abi, //any old abi will do... - this.provider.getSigner() - ) - - const tx = await ERC20Contract - .populateTransaction - .approve( - this.addresses.L2LPAddress, - utils.parseEther('1.0') - ) - - const approvalGas_BN = await this.L2Provider.estimateGas({...tx, from: this.gasEstimateAccount}) - approvalCost_BN = approvalGas_BN.mul(gasPrice) - console.log("Approve cost in ETH:", utils.formatEther(approvalCost_BN)) - } - - const L2BillingContract = new ethers.Contract( - this.addresses.Proxy__BobaBillingContract, - L2BillingContractJson.abi, - this.L2Provider, - ) - - const approvalAmount = await L2BillingContract.exitFee() - - let value; - if (this.networkGateway === NETWORK.ETHEREUM) { - value = currencyAddress === this.addresses.L2_ETH_Address ? {value: '1'} : {}; - } else { - value = currencyAddress === this.addresses.L2_ETH_Address ? {value: approvalAmount.add('1')} : {value: approvalAmount}; - } - - //in some cases zero not allowed - const tx2 = await this.L2LPContract - .connect(this.provider.getSigner()) - .populateTransaction - .clientDepositL2( - currencyAddress === this.addresses.L2_ETH_Address ? '1' : '0', //ETH does not allow zero - currencyAddress, - value - ) - - const depositGas_BN = await this.L2Provider.estimateGas({...tx2, from: this.gasEstimateAccount}) - - let l1SecurityFee = BigNumber.from('0') - if (this.networkType === NETWORK_TYPE.MAINNET) { - delete tx2.from - l1SecurityFee = await this.gasOracleContract.getL1Fee( - utils.serializeTransaction(tx2) - ) - // We can't correctly calculate the final l1 securifty fee, - // so we increase it by 1.1X to make sure that users have - // enough balance to cover it - l1SecurityFee = l1SecurityFee.mul('11').div('10') - console.log("l1Security fee (ETH)", l1SecurityFee.toString()) - } - - const depositCost_BN = depositGas_BN.mul(gasPrice).add(l1SecurityFee) - console.log("Fast exit cost (ETH):", utils.formatEther(depositCost_BN)) - - //returns total cost in ETH - return utils.formatEther(depositCost_BN.add(approvalCost_BN)) - } - - /* Estimate cost of Fast Deposit to L2 */ - async getFastDepositCost(currencyAddress) { - - let approvalCost_BN = BigNumber.from('0') - - const gasPrice = await this.L1Provider.getGasPrice() - console.log("Fast deposit gas price", gasPrice.toString()) - - if (currencyAddress !== this.addresses.L1_ETH_Address) { - - const ERC20Contract = new ethers.Contract( - currencyAddress, - L2ERC20Json.abi, //any old abi will do... - this.provider.getSigner() - ) - - const tx = await ERC20Contract.populateTransaction.approve( - this.addresses.L1LPAddress, - utils.parseEther('1.0') - ) - - const approvalGas_BN = await this.L1Provider.estimateGas(tx) - approvalCost_BN = approvalGas_BN.mul(gasPrice) - console.log("Approve cost in ETH:", utils.formatEther(approvalCost_BN)) - } - - //in some cases zero not allowed - const tx2 = await this.L1LPContract - .connect(this.provider.getSigner()).populateTransaction.clientDepositL1( - currencyAddress === this.addresses.L1_ETH_Address ? '1' : '0', //ETH does not allow zero - currencyAddress, - currencyAddress === this.addresses.L1_ETH_Address ? {value: '1'} : {} - ) - - const depositGas_BN = await this.L1Provider.estimateGas(tx2) - console.log("Fast deposit gas", depositGas_BN.toString()) - - const depositCost_BN = depositGas_BN.mul(gasPrice) - console.log("Fast deposit cost (ETH):", utils.formatEther(depositCost_BN)) - - //returns total cost in ETH - return utils.formatEther(depositCost_BN.add(approvalCost_BN)) - } - - /* Estimate cost of Fast Deposit to L2 */ - async getFastDepositBatchCost(tokenList) { - - if (tokenList.length === 0) return 0 - - let approvalCost_BN = BigNumber.from('0') - let payload = [], ETHValue = BigNumber.from('0') - - const gasPrice = await this.L1Provider.getGasPrice() - console.log("Fast deposit gas price", gasPrice.toString()) - - // We use BOBA as an example - const ERC20Contract = new ethers.Contract( - this.tokenAddresses['BOBA'].L1, - L2ERC20Json.abi, //any old abi will do... - this.provider.getSigner() - ) - - const tx = await ERC20Contract.populateTransaction.approve( - this.addresses.L1LPAddress, - utils.parseEther('0') - ) - - for (const tokenName of tokenList) { - if (tokenName !== 'ETH') { - const approvalGas_BN = await this.L1Provider.estimateGas(tx) - approvalCost_BN = approvalCost_BN.add(approvalGas_BN.mul(gasPrice)) - payload.push({l1TokenAddress: this.tokenAddresses['BOBA'].L1, amount: utils.parseEther('0.0001')}) - } else { - ETHValue = utils.parseEther('0.0001') - payload.push({l1TokenAddress: L1_ETH_Address, amount: utils.parseEther('0.0001')}) - } - } - - console.log("Approve cost in ETH:", utils.formatEther(approvalCost_BN)) - - const fastDepositBatchTx = await this.L1LPContract - .connect(this.L1Provider).populateTransaction.clientDepositL1Batch( - payload, {value: ETHValue, from: '0x5E7a06025892d8Eef0b5fa263fA0d4d2E5C3B549'} - ) - const depositGas_BN = await this.L1Provider.estimateGas(fastDepositBatchTx) - console.log("Fast batch deposit gas", depositGas_BN.toString()) - - const depositCost_BN = depositGas_BN.mul(gasPrice) - console.log("Fast batch deposit cost (ETH):", utils.formatEther(depositCost_BN)) - - //returns total cost in ETH - return utils.formatEther(depositCost_BN.add(approvalCost_BN)) - } - - /**************************************************************/ - /***** SWAP OFF from BOBA by depositing funds to the L2LP *****/ - - /**************************************************************/ - async fastExitAll(currencyAddress) { - - updateSignatureStatus_exitLP(false) - - let approvalGas_BN = BigNumber.from('0') - let approvalCost_BN = BigNumber.from('0') - let balance_BN = BigNumber.from('0') - - let gasPrice = await this.L2Provider.getGasPrice() - console.log("Fast exit gas price", gasPrice.toString()) - - if (currencyAddress === this.addresses.L2_ETH_Address) { - balance_BN = await this.L2Provider.getBalance(this.account) - } - - const L2BillingContract = new ethers.Contract( - this.addresses.Proxy__BobaBillingContract, - L2BillingContractJson.abi, - this.L2Provider, - ) - let BobaApprovalAmount = await L2BillingContract.exitFee() - - const BobaAllowance = await this.checkAllowance( - this.addresses.TK_L2BOBA, - this.addresses.L2LPAddress, - ) - - try { - // Approve BOBA first - if (BobaAllowance.lt(BobaApprovalAmount)) { - const approveStatus = await this.approveERC20( - BobaApprovalAmount, - this.addresses.TK_L2BOBA, - this.addresses.L2LPAddress - ) - if (!approveStatus) return false - } - - // Approve other tokens - if (currencyAddress !== this.addresses.L2_ETH_Address && - utils.getAddress(currencyAddress) !== utils.getAddress(this.addresses.TK_L2BOBA) - ) { - const L2ERC20Contract = new ethers.Contract( - currencyAddress, - L2ERC20Json.abi, - this.provider.getSigner() - ) - - balance_BN = await L2ERC20Contract.balanceOf( - this.account - ) - console.log("Initial Balance:", utils.formatEther(balance_BN)) - - let allowance_BN = await L2ERC20Contract.allowance( - this.account, - this.addresses.L2LPAddress - ) - console.log("Allowance:", utils.formatEther(allowance_BN)) - - if (balance_BN.gt(allowance_BN)) { - - //Estimate gas - const tx = await L2ERC20Contract.populateTransaction.approve( - this.addresses.L2LPAddress, - balance_BN - ) - - approvalGas_BN = await this.L2Provider.estimateGas(tx) - approvalCost_BN = approvalGas_BN.mul(gasPrice) - console.log("Cost to Approve (ETH):", utils.formatEther(approvalCost_BN)) - - const approveStatus = await L2ERC20Contract.approve( - this.addresses.L2LPAddress, - balance_BN - ) - await approveStatus.wait() - - if (!approveStatus) - return false - - } else { - console.log("Allowance already suitable:", utils.formatEther(allowance_BN)) - } - - } - - const tx2 = await this.L2LPContract - .connect(this.provider.getSigner()).populateTransaction.clientDepositL2( - balance_BN, - currencyAddress, - currencyAddress === this.addresses.L2_ETH_Address ? {value: '1'} : {} - ) - - let depositGas_BN = await this.L2Provider.estimateGas(tx2) - - let l1SecurityFee = BigNumber.from('0') - if (this.networkGateway === 'mainnet') { - delete tx2.from - l1SecurityFee = await this.gasOracleContract.getL1Fee( - utils.serializeTransaction(tx2) - ) - // We can't correctly calculate the final l1 securifty fee, - // so we increase it by 1.1X to make sure that users have - // enough balance to cover it - l1SecurityFee = l1SecurityFee.mul('11').div('10') - console.log("l1Security fee (ETH)", l1SecurityFee.toString()) - } - - console.log("Deposit gas", depositGas_BN.toString()) - let depositCost_BN = depositGas_BN.mul(gasPrice).add(l1SecurityFee) - console.log("Deposit gas cost (ETH)", utils.formatEther(depositCost_BN)) - - if (currencyAddress === this.addresses.L2_ETH_Address) { - //if fee token, need to consider cost to exit - balance_BN = balance_BN.sub(depositCost_BN) - } - - const ccBal = await this.L2Provider.getBalance(this.account) - - console.log("Balance:", utils.formatEther(ccBal)) - console.log("Cost to exit:", utils.formatEther(depositCost_BN)) - console.log("Amount to exit:", utils.formatEther(balance_BN)) - console.log("Should be zero (if exiting ETH):", ccBal.sub(balance_BN.add(depositCost_BN)).toString()) - - const time_start = new Date().getTime() - console.log("TX start time:", time_start) - - const depositTX = await this.L2LPContract - .connect(this.provider.getSigner()).clientDepositL2( - balance_BN, - currencyAddress, - currencyAddress === this.addresses.L2_ETH_Address ? {value: balance_BN.sub(depositCost_BN)} : {} - ) - - //at this point the tx has been submitted, and we are waiting... - await depositTX.wait() - - const block = await this.L2Provider.getTransaction(depositTX.hash) - console.log(' block:', block) - - //closes the modal - updateSignatureStatus_exitLP(true) - - const opts = { - fromBlock: -4000 - } - const receipt = await this.fastWatcher.waitForMessageReceipt(depositTX, opts) - const txReceipt = receipt.transactionReceipt; - - console.log(' completed Deposit! L1 tx hash:', txReceipt.transactionHash) - - const time_stop = new Date().getTime() - console.log("TX finish time:", time_stop) - - return receipt - } catch (error) { - console.log("NS: fastExitAll error:", error) - return error - } - } - - /**************************************************************/ - /***** SWAP OFF from BOBA by depositing funds to the L2LP *****/ - - /**************************************************************/ - async depositL2LP(currencyAddress, value_Wei_String) { - - updateSignatureStatus_exitLP(false) - - console.log("depositL2LP currencyAddress", currencyAddress) - - const L2BillingContract = new ethers.Contract( - this.addresses.Proxy__BobaBillingContract, - L2BillingContractJson.abi, - this.L2Provider, - ) - let BobaApprovalAmount = await L2BillingContract.exitFee() - - const BobaAllowance = await this.checkAllowance( - this.addresses.TK_L2BOBA, - this.addresses.L2LPAddress, - ) - - try { - - if (this.networkGateway === NETWORK.ETHEREUM) { - // Approve BOBA first only when the Boba is not native token. - if (utils.getAddress(currencyAddress) === utils.getAddress(this.addresses.TK_L2BOBA)) { - BobaApprovalAmount = BobaApprovalAmount.add(BigNumber.from(value_Wei_String)) - } - if (BobaAllowance.lt(BobaApprovalAmount)) { - const approveStatus = await this.approveERC20( - BobaApprovalAmount, - this.addresses.TK_L2BOBA, - this.addresses.L2LPAddress - ) - if (!approveStatus) return false - } - - } - - // Approve other tokens - if (currencyAddress !== this.addresses.L2_ETH_Address && - utils.getAddress(currencyAddress) !== utils.getAddress(this.addresses.TK_L2BOBA) - ) { - - const L2ERC20Contract = new ethers.Contract( - currencyAddress, - L2ERC20Json.abi, - this.provider.getSigner() - ) - - let allowance_BN = await L2ERC20Contract.allowance( - this.account, - this.addresses.L2LPAddress - ) - - let depositAmount_BN = BigNumber.from(value_Wei_String) - - if (depositAmount_BN.gt(allowance_BN)) { - const approveStatus = await L2ERC20Contract.approve( - this.addresses.L2LPAddress, - value_Wei_String - ) - await approveStatus.wait() - if (!approveStatus) return false - } - } - - const time_start = new Date().getTime() - console.log("TX start time:", time_start) - - let otherField; - if (this.networkGateway === NETWORK.ETHEREUM) { - otherField = currencyAddress === this.addresses.L2_ETH_Address ? {value: value_Wei_String} : {} - } else { - otherField = currencyAddress === this.addresses.L2_ETH_Address ? {value: BobaApprovalAmount.add(value_Wei_String)} : {value: BobaApprovalAmount} - } - - const depositTX = await this.L2LPContract - .connect(this.provider.getSigner()).clientDepositL2( - value_Wei_String, - currencyAddress, - otherField, - ) - - //at this point the tx has been submitted, and we are waiting... - await depositTX.wait() - - const block = await this.L2Provider.getTransaction(depositTX.hash) - console.log(' block:', block) - - //closes the modal - updateSignatureStatus_exitLP(true) - - return depositTX - } catch (error) { - console.log("NS: depositL2LP error:", error) - return error - } - } - - async fetchLookUpPrice(params) { - try { - // fetching only the prices compare to usd. - const res = await coinGeckoAxiosInstance.get( - `simple/price?ids=${params.join()}&vs_currencies=usd` - ) - return res.data - } catch (error) { - return error - } - } - - /***********************************************/ - /***** DAO Functions *****/ - /***********************************************/ - - // get DAO Balance - async getDaoBalance() { - - if (!this.BobaContract) return - - if (!this.account) { - console.log('NS: getDaoBalance() error - called but account === null') - return - } - - try { - let balance = await this.BobaContract.balanceOf(this.account) - return {balance: formatEther(balance)} - } catch (error) { - console.log('Error: getDaoBalance', error) - return error - } - } - - async getDaoBalanceX() { - - if (!this.xBobaContract) return - - if (!this.account) { - console.log('NS: getDaoBalanceX() error - called but account === null') - return - } - - try { - let balance = await this.xBobaContract.balanceOf(this.account) - return {balanceX: formatEther(balance)} - } catch (error) { - console.log('Error: getDaoBalanceX', error) - return error - } - } - - // get DAO Votes - async getDaoVotes() { - - if (!this.BobaContract) return - - if (!this.account) { - console.log('NS: getDaoVotes() error - called but account === null') - return - } - - try { - let votes = await this.BobaContract.getCurrentVotes(this.account) - return {votes: formatEther(votes)} - } catch (error) { - console.log('NS: getDaoVotes error:', error) - return error - } - } - - // get DAO Votes - async getDaoVotesX() { - - if (!this.xBobaContract) return - - if (!this.account) { - console.log('NS: getDaoVotesX() error - called but account === null') - return - } - - try { - let votes = await this.xBobaContract.getCurrentVotes(this.account) - return {votesX: formatEther(votes)} - } catch (error) { - console.log('NS: getDaoVotesX error:', error) - return error - } - } - - //Transfer DAO Funds - async transferDao({recipient, amount}) { - - if (this.L1orL2 !== 'L2') return - if (!this.BobaContract) return - - if (!this.account) { - console.log('NS: transferDao() error - called but account === null') - return - } - - try { - const tx = await this.BobaContract - .connect(this.provider.getSigner()) - .transfer(recipient, parseEther(amount.toString())) - await tx.wait() - return tx - } catch (error) { - console.log('NS: transferDao error:', error) - return error - } - } - - //Delegate DAO Authority - async delegateVotes({recipient}) { - - if (this.L1orL2 !== 'L2') return - if (!this.BobaContract) return - - if (!this.account) { - console.log('NS: delegateVotes() error - called but account === null') - return - } - - try { - const tx = await this.BobaContract - .connect(this.provider.getSigner()) - .delegate(recipient) - await tx.wait() - return tx - } catch (error) { - console.log('NS: delegateVotes error:', error) - return error - } - } - - //Delegate DAO Authority - async delegateVotesX({recipient}) { - - if (this.L1orL2 !== 'L2') return - if (!this.xBobaContract) return - - if (!this.account) { - console.log('NS: delegateVotesX() error - called but account === null') - return - } - - try { - const tx = await this.xBobaContract - .connect(this.provider.getSigner()) - .delegate(recipient) - await tx.wait() - return tx - } catch (error) { - console.log('NS: delegateVotesX error:', error) - return error - } - } - - // Proposal Create Threshold - async getProposalThreshold() { - - if (!this.delegateContract) return - - try { - const delegateCheck = await this.delegateContract.attach(this.addresses.GovernorBravoDelegator) - const rawThreshold = await delegateCheck.proposalThreshold() - return {proposalThreshold: formatEther(rawThreshold)} - } catch (error) { - console.log('NS: getProposalThreshold error:', error) - return error - } - } - - // Create Proposal - /************************/ - /*****Old Dao Fix Me.****/ - /************************/ - - // FIXME: - async createProposal(payload) { - - if (this.L1orL2 !== 'L2') return - if (!this.delegateContract) return - - if (!this.account) { - console.log('NS: delegateVotesX() error - called but account === null') - return - } - - let signatures = [''] - let value1 = 0 - let value2 = 0 - let value3 = 0 - let description = '' - let address = [''] - let callData = [''] - // FIXME: Ve DAO From here - /* - let tokenIds = payload.tokenIds - // create proposal only on latest contracts. - const delegateCheck = await this.delegateContract.attach(this.addresses.GovernorBravoDelegatorV2) - - */ - // FIXME: Ve DAO Till here - - const delegateCheck = await this.delegateContract.attach(this.addresses.GovernorBravoDelegator) - - if (payload.action === 'text-proposal') { - address = ['0x000000000000000000000000000000000000dEaD'] - description = payload.text.slice(0, 252) //100+150+2 - callData = [ - '0x0000000000000000000000000000000000000000000000000000000000000000', - ] - } else if (payload.action === 'change-lp1-fee') { - signatures = ['configureFeeExits(uint256,uint256,uint256)'] - value1 = Number(payload.value[0]) - value2 = Number(payload.value[1]) - value3 = Number(payload.value[2]) - description = `Change L1 LP Bridge fee to ${value1}, ${value2}, and ${value3} integer percent` - address = [this.addresses.L2LPAddress] - callData = [ethers.utils.defaultAbiCoder.encode( - ['uint256', 'uint256', 'uint256'], - [value1, value2, value3] - )] - } else if (payload.action === 'change-lp2-fee') { - address = [delegateCheck.address] - signatures = ['configureFee(uint256,uint256,uint256)'] - value1 = Number(payload.value[0]) - value2 = Number(payload.value[1]) - value3 = Number(payload.value[2]) - description = `Change L2 LP Bridge fee to ${value1}, ${value2}, and ${value3} integer percent` - address = [this.addresses.L2LPAddress] - callData = [ethers.utils.defaultAbiCoder.encode( - ['uint256', 'uint256', 'uint256'], - [value1, value2, value3] - )] - } else if (payload.action === 'change-threshold') { - address = [delegateCheck.address] - signatures = ['_setProposalThreshold(uint256)'] - value1 = Number(payload.value[0]) - description = `Change Proposal Threshold to ${value1} BOBA` - callData = [ethers.utils.defaultAbiCoder.encode( - ['uint256'], - [value1] - )] - } - - try { - - let values = [0] //amount of ETH to send, generally, zero - - let res = await delegateCheck - .connect(this.provider.getSigner()) - .propose( - address, - values, - signatures, - callData, - description - ) - - return res - - } catch (error) { - console.log("NS: createProposal error:", error) - return error - } - } - - //Fetch DAO Proposals - /** - * Supporting the old (boba, xboba) and new proposals (govBoba / veNft) based. - * group created proposals by `to` and make use of respective contract to prepare the proposal data list. - * - */ - // Use this proposal fetch for veDao. - async fetchProposalsVeDao() { - - if (!this.delegateContract || this.networkGateway === 'goerli') return - - const delegateCheckV1 = await this.delegateContract.attach(this.addresses.GovernorBravoDelegator) - const delegateCheckV2 = await this.delegateContract.attach(this.addresses.GovernorBravoDelegatorV2) - - try { - - let proposalList = [] - /// @notice An event emitted when a new proposal is create - // event ProposalCreated(uint id, address proposer, address[] targets, uint[] values, string[] signatures, bytes[] calldatas, uint startTimestamp, uint endTimestamp, string description); - - const descriptionList = await graphQLService.queryBridgeProposalCreated() - const proposalGroup = groupBy(descriptionList.data.governorProposalCreateds, 'to'); - const delegatorList = [this.addresses.GovernorBravoDelegator, this.addresses.GovernorBravoDelegatorV2]; - - for (let delegator of delegatorList) { - let delegateCheck; - if (delegator === this.addresses.GovernorBravoDelegator) { - delegateCheck = delegateCheckV1; - } else if (delegator === this.addresses.GovernorBravoDelegatorV2) { - delegateCheck = delegateCheckV2; - } - const proposals = proposalGroup[delegator.toLowerCase()] - const proposalCounts = await delegateCheck.proposalCount() - const totalProposals = await proposalCounts.toNumber() - - for (let i = 0; i < totalProposals; i++) { - const proposalRaw = proposals[i] - - if (typeof (proposalRaw) === 'undefined') continue - - let proposalID = proposalRaw.proposalId - - let proposalData = await delegateCheck.proposals(proposalID) - - const proposalStates = [ - 'Pending', - 'Active', - 'Canceled', - 'Defeated', - 'Succeeded', - 'Queued', - 'Expired', - 'Executed', - ] - - let state = await delegateCheck.state(proposalID) - - let againstVotes = parseInt(formatEther(proposalData.againstVotes)) - let forVotes = parseInt(formatEther(proposalData.forVotes)) - let abstainVotes = parseInt(formatEther(proposalData.abstainVotes)) - - let proposal = await delegateCheck.getActions(i + 2) - - let description = proposalRaw.description.toString() - - proposalList.push({ - id: proposalID.toString(), - proposal, - description, - totalVotes: forVotes + againstVotes, - forVotes, - againstVotes, - abstainVotes, - state: proposalStates[state], - startTimestamp: proposalRaw.startTimestamp, - endTimestamp: proposalRaw.endTimestamp, - }) - } - } - - // hasLive proposal only checking for GovernorBravoDelegatorV2 contracts - let hasLiveProposal = false - - if (this.account) { - const latestProposalIdRaw = await delegateCheckV2.latestProposalIds(this.account); - const latestProposalId = await latestProposalIdRaw.toNumber(); - if (latestProposalId) { /// only if proposalId greater than 0 - const latestProposalState = await delegateCheckV2.state(latestProposalId); - hasLiveProposal = [0, 1].includes(latestProposalState) /// pending & active proposal check. - } - } - - return { - proposalList, - hasLiveProposal - } - } catch (error) { - console.log("NS: fetchProposalsVeDao error:", error) - return error - } - } - - // to check wether the token has been already used for voting on proposal. - async checkProposalVote(proposalId, tokenId) { - if (!this.delegateContract) return - - try { - const delegateCheck = await this.delegateContract.attach(this.addresses.GovernorBravoDelegatorV2) - - if (this.account) { - const receipt = await delegateCheck.getReceipt(Number(proposalId), tokenId); - return receipt; - } - - } catch (error) { - console.log('NS: checkProposalVote() error', error) - return error; - } - } - - - //Cast vote for proposal - // FIXME: keeping this to refer in next release will cleanup. - async castProposalVoteVeDao({id, userVote, tokenIds}) { - - if (!this.delegateContract) return - - if (!this.account) { - console.log('NS: castProposalVote() error - called but account === null') - return - } - - try { - const delegateCheck = await this.delegateContract - .connect(this.provider.getSigner()) - .attach(this.addresses.GovernorBravoDelegatorV2) - - const res = await delegateCheck.castVote(id, userVote, tokenIds) - - return res; - - } catch (error) { - console.log("NS: castProposalVote error:", error) - return error - } - } - - async queueProposal(proposalID) { - - if (!this.delegateContract) return - - if (!this.account) { - console.log('NS: queueProposal() error - called but account === null') - return - } - - try { - const delegateCheck = await this.delegateContract - .connect(this.provider.getSigner()) - .attach(this.addresses.GovernorBravoDelegator) - let res = delegateCheck.queue(Number(proposalID)) - return res - } catch (error) { - console.log("NS: queueProposal error:", error) - return error - } - - } - - async executeProposal(proposalID) { - - if (!this.delegateContract) return - - if (!this.account) { - console.log('NS: executeProposal() error - called but account === null') - return - } - - try { - const delegateCheck = await this.delegateContract - .connect(this.provider.getSigner()) - .attach(this.addresses.GovernorBravoDelegator) - let res = delegateCheck.execute(Number(proposalID)) - return res - } catch (error) { - console.log("NS: executeProposal error:", error) - return error - } - - } - - /***********************************************/ - /***** Fixed savings account *****/ - - /***********************************************/ - async addFS_Savings(value_Wei_String) { - - if (!this.account) { - console.log('NS: withdrawFS_Savings() error - called but account === null') - return - } - - try { - - const FixedSavings = new ethers.Contract( - this.addresses.BobaFixedSavings, - L2SaveJson.abi, - this.provider.getSigner() - ) - - let allowance_BN = await this.BobaContract - .connect(this.provider.getSigner()) - .allowance( - this.account, - this.addresses.BobaFixedSavings - ) - - let depositAmount_BN = BigNumber.from(value_Wei_String) - - let approveAmount_BN = depositAmount_BN.add(BigNumber.from('1000000000000')) - - try { - if (approveAmount_BN.gt(allowance_BN)) { - console.log("Need to approve YES:", approveAmount_BN) - const approveStatus = await this.BobaContract - .connect(this.provider.getSigner()) - .approve( - this.addresses.BobaFixedSavings, - approveAmount_BN - ) - await approveStatus.wait() - } else { - console.log("Allowance is sufficient:", allowance_BN.toString(), depositAmount_BN.toString()) - } - } catch (error) { - console.log("NS: addFS_Savings approve error:", error) - return error - } - - const TX = await FixedSavings.stake(value_Wei_String) - await TX.wait() - return TX - } catch (error) { - console.log("NS: addFS_Savings error:", error) - return error - } - } - - async savingEstimate() { - - // used to generate gas estimates for contracts that cannot set amount === 0 - // to avoid need to approve amount - - let otherField = { - from: this.gasEstimateAccount - } - - const gasPrice_BN = await this.provider.getGasPrice() - console.log("gas price", gasPrice_BN.toString()) - - let approvalCost_BN = BigNumber.from('0') - let stakeCost_BN = BigNumber.from('0') - - try { - - // first, we need the allowance of the benchmarkAccount - let allowance_BN = await this.BobaContract - .connect(this.provider) - .allowance( - this.gasEstimateAccount, - this.addresses.BobaFixedSavings - ) - console.log("benchmarkAllowance_BN", allowance_BN.toString()) - - // second, we need the approval cost - const tx1 = await this.BobaContract - .connect(this.provider.getSigner()) - .populateTransaction - .approve( - this.addresses.BobaFixedSavings, - allowance_BN.toString(), - ) - - const approvalGas_BN = await this.provider.estimateGas(tx1) - approvalCost_BN = approvalGas_BN.mul(gasPrice_BN) - console.log("Approve cost in ETH:", utils.formatEther(approvalCost_BN)) - - // third, we need the stake cost - const FixedSavings = new ethers.Contract( - this.addresses.BobaFixedSavings, - L2SaveJson.abi, - this.provider - ) - - const tx2 = await FixedSavings - .populateTransaction - .stake( - allowance_BN.toString(), - otherField - ) - const stakeGas_BN = await this.provider.estimateGas(tx2) - stakeCost_BN = stakeGas_BN.mul(gasPrice_BN) - console.log("Stake cost in ETH:", utils.formatEther(stakeCost_BN)) - - const safety_margin_BN = BigNumber.from('1000000000000') - console.log("Stake safety margin:", utils.formatEther(safety_margin_BN)) - - return approvalCost_BN.add(stakeCost_BN).add(safety_margin_BN) - - } catch (error) { - console.log('NS: stakingEstimate() error', error) - return error - } - } - - async withdrawFS_Savings(stakeID) { - - if (!this.account) { - return - } - - try { - const FixedSavings = new ethers.Contract( - this.addresses.BobaFixedSavings, - L2SaveJson.abi, - this.provider.getSigner() - ) - const TX = await FixedSavings.unstake(stakeID) - await TX.wait() - return TX - } catch (error) { - console.log("NS: withdrawFS_Savings error:", error) - return error - } - } - - async getFS_Saves() { - - if (this.account === null) { - return - } - - try { - const FixedSavings = new ethers.Contract( - this.addresses.BobaFixedSavings, - L2SaveJson.abi, - this.L2Provider - ) - await FixedSavings.l2Boba() - let stakecount = await FixedSavings.personalStakeCount(this.account) - return {stakecount: Number(stakecount)} - } catch (error) { - console.log('NS: getSaves error:', error) - return error - } - } - - async estimateApprove() { - - const approvalAmount = utils.parseEther('10.0') - let allowance_BN = null - let approveStatus = null - - if (this.addresses.hasOwnProperty('BobaFixedSavings')) { - allowance_BN = await this.BobaContract - .connect(this.provider.getSigner()) - .allowance( - this.account, - this.addresses.BobaFixedSavings - ) - console.log("Fixed Savings Allowance", allowance_BN.toString()) - - approveStatus = await this.BobaContract - .connect(this.provider.getSigner()) - .approve( - this.addresses.BobaFixedSavings, - approvalAmount - ) - await approveStatus.wait() - console.log("Fixed Savings Approval", approveStatus) - } - - if (this.addresses.hasOwnProperty('DiscretionaryExitFee')) { - allowance_BN = await this.BobaContract - .connect(this.provider.getSigner()) - .allowance( - this.account, - this.addresses.DiscretionaryExitFee - ) - console.log("DiscretionaryExitFee Allowance", allowance_BN.toString()) - - approveStatus = await this.BobaContract - .connect(this.provider.getSigner()) - .approve( - this.addresses.DiscretionaryExitFee, - approvalAmount - ) - await approveStatus.wait() - console.log("DiscretionaryExitFee Approval", approveStatus) - } - - if (this.addresses.hasOwnProperty('L2LPAddress')) { - allowance_BN = await this.BobaContract - .connect(this.provider.getSigner()) - .allowance( - this.account, - this.addresses.L2LPAddress - ) - console.log("L2LP", allowance_BN.toString()) - - approveStatus = await this.BobaContract - .connect(this.provider.getSigner()) - .approve( - this.addresses.L2LPAddress, - approvalAmount - ) - await approveStatus.wait() - console.log("L2LP", approveStatus) - } - - } - - async getFS_Info() { - - if (this.account === null) { - console.log('NS: getFS_Info() error - called but account === null') - return - } - - try { - - const FixedSavings = new ethers.Contract( - this.addresses.BobaFixedSavings, - L2SaveJson.abi, - this.L2Provider - ) - - let stakeInfo = [] - - const stakeCounts = await FixedSavings.personalStakeCount(this.account) - - for (let i = 0; i < stakeCounts; i++) { - - const stakeId = await FixedSavings.personalStakePos(this.account, i) - const stakeData = await FixedSavings.stakeDataMap(stakeId) - - stakeInfo.push({ - stakeId: Number(stakeId.toString()), - depositTimestamp: Number(stakeData.depositTimestamp.toString()), - depositAmount: logAmount(stakeData.depositAmount.toString(), 18), - isActive: stakeData.isActive - }) - - } - return {stakeInfo} - } catch (error) { - console.log("NS: getFS_Info error:", error) - return error - } - - } - - /***********************************************/ - /***** L1 Security Fee *****/ - - /***********************************************/ - async estimateL1SecurityFee(payload = this.payloadForL1SecurityFee) { - const deepCopyPayload = {...payload} - delete deepCopyPayload.from - // Gas oracle - this.gasOracleContract = new ethers.Contract( - L2GasOracle, - OVM_GasPriceOracleJson.abi, - this.L2Provider - ) - const l1SecurityFee = await this.gasOracleContract.getL1Fee( - ethers.utils.serializeTransaction(deepCopyPayload) - ) - return l1SecurityFee.toNumber() - } - - /***********************************************/ - /***** L2 Fee *****/ - - /***********************************************/ - async estimateL2Fee(payload = this.payloadForL1SecurityFee) { - try { - const l2GasPrice = await this.L2Provider.getGasPrice() - const l2GasEstimate = await this.L2Provider.estimateGas(payload) - return l2GasPrice.mul(l2GasEstimate).toNumber() - } catch { - return 0 - } - } - - /***********************************************/ - /***** L2 LP BATCH INFO *****/ - - /***********************************************/ - async getL2UserAndLPBalanceBatch(tokenList) { - const getInfo = async (l1TokenAddress, l2TokenAddress) => { - const payload = [] - // get fee info - payload.push(this.getL2UserRewardFeeRate(l2TokenAddress)) - // get LP balance - payload.push(this.L2LPBalance(l2TokenAddress)) - // get LP liquidity - payload.push(this.L2LPLiquidity(l2TokenAddress)) - return await Promise.all(payload) - } - - const payload = {} - const layer1 = store.getState().balance.layer1 - for (const tokenName of tokenList) { - if (tokenName === 'ETH') { - const [l2LPFeeRate, l2LPBalance, l2Liquidity] = await getInfo(L1_ETH_Address, L2_ETH_Address) - const filteredBalance = layer1.filter(i => i.symbol === tokenName)[0] - payload['ETH'] = { - l2LPFeeRate, - l2LPBalanceInWei: l2LPBalance, - l2LPBalance: utils.formatUnits(BigNumber.from(l2LPBalance), filteredBalance.decimals), - balanceInWEI: filteredBalance.balance, - balance: utils.formatUnits(BigNumber.from(filteredBalance.balance.toString()), filteredBalance.decimals), - decimals: filteredBalance.decimals, - address: filteredBalance.address, - LPRatio: - Number(utils.formatUnits(BigNumber.from(l2LPBalance), filteredBalance.decimals)) > 0 ? - (Number(utils.formatUnits(BigNumber.from(l2LPBalance), filteredBalance.decimals)) / - Number(utils.formatUnits(BigNumber.from(l2Liquidity), filteredBalance.decimals))).toFixed(3) : 0 - } - } else if (tokenName) { - const l1TokenAddress = this.tokenAddresses[tokenName].L1 - const l2TokenAddress = this.tokenAddresses[tokenName].L2 - const [l2LPFeeRate, l2LPBalance, l2Liquidity] = await getInfo(l1TokenAddress, l2TokenAddress) - const filteredBalance = layer1.filter(i => i.symbol === tokenName)[0] - payload[tokenName] = { - l2LPFeeRate, - l2LPBalanceInWei: l2LPBalance, - l2LPBalance: utils.formatUnits(BigNumber.from(l2LPBalance), filteredBalance.decimals), - balanceInWEI: filteredBalance.balance, - balance: utils.formatUnits(BigNumber.from(filteredBalance.balance.toString()), filteredBalance.decimals), - decimals: filteredBalance.decimals, - address: filteredBalance.address, - LPRatio: - Number(utils.formatUnits(BigNumber.from(l2LPBalance), filteredBalance.decimals)) > 0 ? - (Number(utils.formatUnits(BigNumber.from(l2LPBalance), filteredBalance.decimals)) / - Number(utils.formatUnits(BigNumber.from(l2Liquidity), filteredBalance.decimals))).toFixed(3) : 0 - } - } - } - return payload - } - - /***********************************************/ - /***** Exit fee *****/ - - /***********************************************/ - async getExitFeeFromBillingContract() { - const L2BillingContract = new ethers.Contract( - this.addresses.Proxy__BobaBillingContract, - L2BillingContractJson.abi, - this.L2Provider, - ) - return ethers.utils.formatEther(await L2BillingContract.exitFee()) - } - - /***********************************************/ - /***** VeBoba *****/ - - /***********************************************/ - - - /** - * CreateLock - * - to create veboba lock - */ - async createLock({ - value_Wei_String, - lock_duration - }) { - if (!this.account) { - console.log('NS: createLock() error - called but account === null'); - return - } - - try { - const ve = new ethers.Contract( - this.addresses.Ve_BOBA, - veJson.abi, - this.provider.getSigner() - ) - - let allowance_BN = await this.BobaContract - .connect(this.provider.getSigner()) - .allowance( - this.account, - this.addresses.Ve_BOBA - ) - - let depositAmount_BN = BigNumber.from(value_Wei_String) - - let approveAmount_BN = depositAmount_BN.add(BigNumber.from('1000000000000')) - - try { - if (approveAmount_BN.gt(allowance_BN)) { - const approveStatus = await this.BobaContract - .connect(this.provider.getSigner()) - .approve( - this.addresses.Ve_BOBA, - approveAmount_BN - ) - const TX = await approveStatus.wait() - console.log("approveStatus:", TX) - } else { - console.log("Allowance is sufficient:", allowance_BN.toString(), depositAmount_BN.toString()) - } - } catch (error) { - console.log("NS: ve:lock approve error:", error) - return error - } - - const TX = await ve.create_lock(value_Wei_String, lock_duration) - await TX.wait() - return TX - - } catch (error) { - console.log("NS: Ve: createLock error:", error) - return error; - } - } - - /** - * withdrawLock - * - To withdraw existing expired lock - */ - async withdrawLock({tokenId}) { - if (!this.account) { - console.log('NS: withdrawLock() error - called but account === null') - return - } - - try { - const ve = new ethers.Contract( - this.addresses.Ve_BOBA, //check ve address is present - veJson.abi, - this.provider.getSigner() - ) - - const TX = await ve.withdraw(tokenId) - await TX.wait() - return TX - } catch (error) { - console.log("NS: Ve: withdrawLock error:", error) - return error; - } - } - - /** - * increaseLockAmount - * - To increse amount of existing lock - */ - async increaseLockAmount({ - tokenId, value_Wei_String - }) { - if (this.account === null) { - console.log('NS: increaseLockAmount() error - called but account === null') - return - } - try { - const ve = new ethers.Contract( - this.addresses.Ve_BOBA, //check ve address is present - veJson.abi, - this.provider.getSigner() - ) - - let allowance_BN = await this.BobaContract - .connect(this.provider.getSigner()) - .allowance( - this.account, - this.addresses.Ve_BOBA - ) - - let depositAmount_BN = BigNumber.from(value_Wei_String) - - let approveAmount_BN = depositAmount_BN.add(BigNumber.from('1000000000000')) - - try { - if (approveAmount_BN.gt(allowance_BN)) { - const approveStatus = await this.BobaContract - .connect(this.provider.getSigner()) - .approve( - this.addresses.Ve_BOBA, - approveAmount_BN - ) - await approveStatus.wait() - } else { - console.log("Allowance is sufficient:", allowance_BN.toString(), depositAmount_BN.toString()) - } - } catch (error) { - console.log("NS: ve:increaseLockAmount approve error:", error) - return error - } - - const TX = await ve.increase_amount(tokenId, value_Wei_String) - await TX.wait() - return TX - } catch (error) { - console.log("NS: Ve: increaseLockAmount error:", error) - return error; - } - } - - /** - * extendLockTime - * - To extend lock time of existing lock - */ - async extendLockTime({ - tokenId, lock_duration - }) { - - if (this.account === null) { - console.log('NS: increaseUnlockTime() error - called but account === null') - return - } - - try { - const ve = new ethers.Contract( - this.addresses.Ve_BOBA, //check ve address is present - veJson.abi, - this.provider.getSigner() - ) - - const TX = await ve.increase_unlock_time(tokenId, lock_duration) - await TX.wait() - return TX - - } catch (error) { - console.log("NS: Ve: extendLockTime error:", error) - return error; - } - } - - /** - * fetchLockRecords - * - To to fetch list of existing lock records. - */ - async fetchLockRecords() { - if (this.account === null) { - console.log('NS: fetchLockRecords() error - called but account === null') - return - } - - try { - - const ve = new ethers.Contract( - this.addresses.Ve_BOBA, //check ve address is present - veJson.abi, - this.provider - ) - - const baseVoter = new ethers.Contract( - this.addresses.BASE_V1_VOTER, - voterJson.abi, - this.provider - ) - - let tokenIdList = []; - let balanceInfo = []; - let nftCount = await ve.balanceOf(this.account) - - for (let index = 0; index < Number(nftCount); index++) { - const tokenId = await ve.tokenOfOwnerByIndex(this.account, index) - tokenIdList.push(Number(tokenId)) - } - - for (let tokenId of tokenIdList) { - const balance = await ve.balanceOfNFT(tokenId); - const locked = await ve.locked(tokenId); - const usedWeights = await baseVoter.usedWeights(tokenId); - - - balanceInfo.push({ - tokenId, - balance: Number(utils.formatUnits(balance, 18)), - lockedAmount: Number(utils.formatUnits(locked.amount, 18)), - expiry: new Date(locked.end.toString() * 1000), - expirySeconds: locked.end.toString() * 1000, - usedWeights: Number(utils.formatUnits(usedWeights, 18)) - }) - } - - return { - records: balanceInfo, - } - } catch (error) { - console.log("NS: Ve: fetchLockRecords error:", error) - return error; - } - } - - - /************************************************* - **************** Alt L1 Functions *************** - *************************************************/ - - /** - * Get Cross Chain Deposit Fee - * @getAltL1DepositFee - * - as of now we are just supporting BOBA so no need to check for other tokens. - */ - - - async getAltL1DepositFee() { - if (this.account === null) { - console.log('NS: getAltL1DepositFee() error - called but account === null') - return - } - try { - const pResponse = this.supportedAltL1Chains.map(async (type) => { - let L0_ETH_ENDPOINT = this.addresses.Layer_Zero_Endpoint; - let ETH_L1_BOBA_ADDRESS = this.addresses.TK_L1BOBA; - let L0_TARGET_CHAIN_ID = this.addresses.layerZeroTargetChainID; - let ALT_L1_BOBA_ADDRESS = this.addresses[`Proxy__EthBridgeTo${type}`]; - let PROXY_ETH_L1_BRIDGE_ADDRESS_TO = this.addresses[`${type}_TK_BOBA`]; - - // Layer zero doesn't support moonbase - // return 0 for those bridges that haven't been implemented yet - if (typeof ALT_L1_BOBA_ADDRESS === 'undefined' || typeof PROXY_ETH_L1_BRIDGE_ADDRESS_TO === 'undefined') { - return {type, fee: '0'} - } - - const Proxy__EthBridge = new ethers.Contract( - PROXY_ETH_L1_BRIDGE_ADDRESS_TO, - ETHL1BridgeJson.abi, - this.provider.getSigner() - ); - - const ETHLayzerZeroEndpoint = new ethers.Contract( - L0_ETH_ENDPOINT, - LZEndpointMockJson.abi, - this.provider.getSigner() - ); - - const payload = ethers.utils.defaultAbiCoder.encode( - ["address", "address", "address", "address", "uint256", "bytes"], - [ - ETH_L1_BOBA_ADDRESS, - ALT_L1_BOBA_ADDRESS, - this.account, - this.account, - ethers.utils.parseEther('1'), - "0x", - ] - ); - - console.log(`🆙 loading 💵 FEE for ${type}`); - console.log("L0_TARGET_CHAIN_ID: ", L0_TARGET_CHAIN_ID) - const estimatedFee = await ETHLayzerZeroEndpoint.estimateFees( - L0_TARGET_CHAIN_ID, - Proxy__EthBridge.address, - payload, - false, - "0x" - ); - console.log(`💵 FEE for ${type} => ${ethers.utils.formatEther(estimatedFee._nativeFee)}`); - - return {type, ...estimatedFee, fee: ethers.utils.formatEther(estimatedFee._nativeFee)} - }) - const fees = await Promise.all(pResponse); - let result = {}; - fees.forEach((fee) => result[fee.type] = fee); - return result - - } catch (error) { - console.log('NS: getAltL1DepositFee() error - called but account === null') - return error - } - } - - /** - * Multichain Deposit to alt l1s Only support boba as of now. - * - */ - - async depositErc20ToL1({ - value, - type - }) { - if (this.account === null) { - console.log('NS: depositErc20ToL1() error - called but account === null') - return - } - try { - let L0_ETH_ENDPOINT = this.addresses.Layer_Zero_Endpoint; - let L0_TARGET_CHAIN_ID = this.addresses.layerZeroTargetChainID; - let ETH_L1_BOBA_ADDRESS = this.addresses.TK_L1BOBA; - let PROXY_ETH_L1_BRIDGE_ADDRESS_TO = this.addresses[`Proxy__EthBridgeTo${type}`]; - let ALT_L1_BOBA_ADDRESS = this.addresses[`${type}_TK_BOBA`]; - /* proxy eth bridge contract */ - const Proxy__EthBridge = new ethers.Contract( - PROXY_ETH_L1_BRIDGE_ADDRESS_TO, - ETHL1BridgeJson.abi, - this.provider.getSigner() - ); - - /* eth boba bridge contract */ - const EthBOBA = new ethers.Contract( - ETH_L1_BOBA_ADDRESS, - L2StandardERC20Json.abi, - this.provider - ); - - /* L0 endpoint contract*/ - const ETHLayzerZeroEndpoint = new ethers.Contract( - L0_ETH_ENDPOINT, - LZEndpointMockJson.abi, - this.provider.getSigner() - ); - - let approveTx = await EthBOBA - .connect(this.provider.getSigner()) - .approve( - Proxy__EthBridge.address, - ethers.utils.parseEther(value) - ); - - console.log(`⏲ Waiting for approval`) - - await approveTx.wait(); - - console.log(`✅ approval done`) - - let payload = ethers.utils.defaultAbiCoder.encode( - ["address", "address", "address", "address", "uint256", "bytes"], - [ - ETH_L1_BOBA_ADDRESS, - ALT_L1_BOBA_ADDRESS, - this.account, - this.account, - ethers.utils.parseEther(value), - "0x", - ] - ); - - let estimatedFee = await ETHLayzerZeroEndpoint.estimateFees( - L0_TARGET_CHAIN_ID, - Proxy__EthBridge.address, - payload, - false, - "0x" - ); - - console.log(`🆙 Depositing ${value} 👉 ${type} l1 with 💵 FEE ${ethers.utils.formatEther(estimatedFee._nativeFee)}`); - - // TODO: FIXME: Update this function to `withdraw` in case of other deployment than ETHEREUM. - // INPUT STEP MULTICHAIN - await Proxy__EthBridge.depositERC20( - ETH_L1_BOBA_ADDRESS, - ALT_L1_BOBA_ADDRESS, - ethers.utils.parseEther(value), - ethers.constants.AddressZero, - "0x", // adapterParams - "0x", - {value: estimatedFee._nativeFee} - ); - - console.log(`🔥 🔥 🔥 🔥 🔥 ${value} AMT TRANSFER 👉 ${type} !`); - return true; - } catch (error) { - console.log("NS: Ve: depositErc20ToL1 error:", error) - return error; - } - } - - /************************************/ - /********* Vote & Dao Pools *********/ - - /************************************/ - - async savePoolVote({ - tokenId, - pools, - weights - }) { - if (this.account === null) { - console.log('NS: savePoolVote() error - called but account === null') - return - } - - try { - const baseVoter = new ethers.Contract( - this.addresses.BASE_V1_VOTER, - voterJson.abi, - this.provider - ) - - await baseVoter - .connect(this.provider.getSigner()) - .vote( - tokenId, - pools, - weights - ) - return true; - - } catch (error) { - console.log('NS: savePoolVote() error', error) - return error; - } - } - - async distributePool({gaugeAddress}) { - if (this.account === null) { - console.log('NS: distributePool() error - called but account === null') - return - } - - try { - const baseVoter = new ethers.Contract( - this.addresses.BASE_V1_VOTER, - voterJson.abi, - this.provider.getSigner() - ) - console.log('gaugeAddress', gaugeAddress) - await baseVoter['distribute(address)'](gaugeAddress); - - return true; - } catch (error) { - console.log('NS: distributePool() error', error) - return error; - } - } - - async fetchPools() { - if (this.account === null) { - console.log('NS: fetchPools() error - called but account === null') - return - } - - try { - - const pools = [] - const baseVoter = new ethers.Contract( - this.addresses.BASE_V1_VOTER, - voterJson.abi, - this.provider - ) - // load and iterate over nft to find vote on pools. - let {records} = await this.fetchLockRecords(); - // filter the ve nft records which has used. - records = records.filter((token) => token.usedWeights > 0) - - const poolLen = await baseVoter.length(); - - for (let i = 0; i < Number(poolLen); i++) { - const poolId = await baseVoter.pools(i); - // pool votes - const rawVotes = await baseVoter.weights(poolId); - const votes = Number(utils.formatUnits(rawVotes, 18)); - // total pools weights - const rawTotalWeights = await baseVoter.totalWeight(); - const totalWeigths = Number(utils.formatUnits(rawTotalWeights, 18)); - - // vote percentage - const votePercentage = (votes / totalWeigths) * 100; - // guage address needed to distribute w.r.to pool. - const gaugeAddress = await baseVoter.gauges(poolId); - - let usedTokens = []; - for (let j = 0; j < records.length; j++) { - const nft = records[j]; - const rawTokenVote = await baseVoter.votes(nft.tokenId, poolId); - const tokenVote = Number(utils.formatUnits(rawTokenVote, 18)); - - if (tokenVote) { - usedTokens.push({ - tokenId: nft.tokenId, - vote: tokenVote - }) - } - } - - pools.push({ - ...getPoolDetail(poolId), - poolId, - totalVotes: votes.toFixed(2), - votePercentage, - gaugeAddress, - usedTokens - }) - } - - return { - pools - } - - } catch (error) { - console.log("NS: Ve: fetchPools error:", error) - return error; - } - } - - /**************************************** - ************* STARTS HERE ************** - ***********OLD DAO REMOVE ME *********** - *****************************************/ - - // FIXME: remove me once deprecated old dao. - - async fetchProposals() { - - if (!this.delegateContract) return - - const delegateCheck = await this.delegateContract.attach(this.addresses.GovernorBravoDelegator) - - try { - let proposalList = [] - - const proposalCounts = await delegateCheck.proposalCount() - const totalProposals = await proposalCounts.toNumber() - - /// @notice An event emitted when a new proposal is created - // event ProposalCreated(uint id, address proposer, address[] targets, uint[] values, string[] signatures, bytes[] calldatas, uint startTimestamp, uint endTimestamp, string description); - - let descriptionList = await graphQLService.queryBridgeProposalCreated() - - for (let i = 0; i < totalProposals; i++) { - const proposalRaw = descriptionList.data.governorProposalCreateds[i] - - if (typeof (proposalRaw) === 'undefined') continue - - let proposalID = proposalRaw.proposalId - - //this is a number such as 2 - let proposalData = await delegateCheck.proposals(proposalID) - - const proposalStates = [ - 'Pending', - 'Active', - 'Canceled', - 'Defeated', - 'Succeeded', - 'Queued', - 'Expired', - 'Executed', - ] - - let state = await delegateCheck.state(proposalID) - - let againstVotes = parseInt(formatEther(proposalData.againstVotes)) - let forVotes = parseInt(formatEther(proposalData.forVotes)) - let abstainVotes = parseInt(formatEther(proposalData.abstainVotes)) - - let startTimestamp = proposalData.startTimestamp.toString() - let endTimestamp = proposalData.endTimestamp.toString() - - let proposal = await delegateCheck.getActions(i + 2) - - let hasVoted = null - - let description = proposalRaw.description.toString() - - proposalList.push({ - id: proposalID?.toString(), - proposal, - description, - totalVotes: forVotes + againstVotes, - forVotes, - againstVotes, - abstainVotes, - state: proposalStates[state], - startTimestamp, - endTimestamp, - hasVoted: hasVoted - }) - - } - return {proposalList} - } catch (error) { - console.log("NS: fetchProposals error:", error) - return error - } - } - - - async castProposalVote({id, userVote}) { - - if (!this.delegateContract) return - - if (!this.account) { - console.log('NS: castProposalVote() error - called but account === null') - return - } - try { - const delegateCheck = await this.delegateContract - .connect(this.provider.getSigner()) - .attach(this.addresses.GovernorBravoDelegator) - return delegateCheck.castVote(id, userVote) - } catch (error) { - console.log("NS: castProposalVote error:", error) - return error - } - } - - - /**************************************** - ************* END HERE ***************** - ***********OLD DAO REMOVE ME TILL HERE * - *****************************************/ - - async submitTxBuilder(contract, methodIndex, methodName, inputs) { - - const parseResult = (result, outputs) => { - let parseResult = [] - if (outputs.length === 1) { - return result.toString() - } - for (let i = 0; i < outputs.length; i++) { - try { - const output = outputs[i] - const key = output.name ? output.name : output.type - if (output.type.includes('uint')) { - parseResult.push({[key]: result[i].toString()}) - } else { - parseResult.push({[key]: result[i]}) - } - } catch (err) { - return 'Error: Failed to parse result' - } - } - return JSON.stringify(parseResult) - } - - let parseInput = Object.values(inputs) - let value = 0 - const stateMutability = contract.interface.functions[methodName].stateMutability - const outputs = contract.interface.functions[methodName].outputs - if (stateMutability === 'payable') { - value = parseInput[parseInput.length - 1] - parseInput = parseInput.slice(0, parseInput.length - 1) - } - - let result - try { - if (stateMutability === 'view' || stateMutability === 'pure') { - result = await contract[methodName](...parseInput) - return {methodIndex, result: {result: parseResult(result, outputs), err: null}} - } else if (stateMutability === 'payable') { - console.log({value}, ...parseInput) - const tx = await contract[methodName](...parseInput, {value}) - return {methodIndex, result: {transactionHash: tx.hash, err: null}} - } else { - const tx = await contract[methodName](...parseInput) - return {methodIndex, result: {transactionHash: tx.hash, err: null}} - } - } catch (err) { - return {methodIndex, result: {err: JSON.stringify(err)}} - } - } - - // getting block number; - - async getLatestBlockNumber() { - return await this.provider.getBlockNumber(); - } - - async getBlockTime(blockNumber) { - return (await this.provider.getBlock(blockNumber)).timestamp; - } - - async getBlockExplorerLinks() { - if (this.networkConfig) { - const l1Explorer = this.networkConfig.L1.blockExplorerUrl - const l2Explorer = this.networkConfig.L2.blockExplorerUrl - return [l1Explorer, l2Explorer] - } - return [] - } -} - -const networkService = new NetworkService() -export default networkService diff --git a/packages/boba/gateway/src/services/oracleService.js b/packages/boba/gateway/src/services/oracleService.js deleted file mode 100644 index 1eee65afd4..0000000000 --- a/packages/boba/gateway/src/services/oracleService.js +++ /dev/null @@ -1,62 +0,0 @@ -/* eslint-disable quotes */ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import { updatePriceTicker } from 'actions/priceTickerAction'; -import { getBaseServices } from 'util/masterConfig' - -class OracleService { - - constructor () { - this.exchangeRateAVG = []; - this.ws = null; - } - - initialize = () => (dispatch) => { - - console.log("OracleService: Trying to connect to:", getBaseServices().WEBSOCKET_API_URL) - - this.ws = new WebSocket(getBaseServices().WEBSOCKET_API_URL); - - this.ws.onopen = () => { - console.log("WebSocket Connected!"); - this.ws.send(JSON.stringify({action: "sendMessage", actionType: "postID" })); - } - - this.ws.onmessage = evt => { - const data = JSON.parse(evt.data); - if (data.priceTicker && data.pricePair){ - dispatch(updatePriceTicker(data)); - } - } - - this.ws.onclose = () => { - console.log("WebSocket Disconnected!"); - dispatch(this.check()); - } - } - - //check if websocket instance is closed, if so call `connect` function. - check = () => (dispatch) => { - dispatch(this.initialize()); - }; - - publish (content) { - this.ws.send(JSON.stringify({action: "sendMessage", actionType: "postBidData", content })); - } -} - -const oracleService = new OracleService(); -export default oracleService; diff --git a/packages/boba/gateway/src/services/transaction.service.js b/packages/boba/gateway/src/services/transaction.service.js deleted file mode 100644 index 4f6bd2e26d..0000000000 --- a/packages/boba/gateway/src/services/transaction.service.js +++ /dev/null @@ -1,275 +0,0 @@ -import omgxWatcherAxiosInstance from 'api/omgxWatcherAxios' -import networkService from './networkService' -import {AllNetworkConfigs, CHAIN_ID_LIST, getRpcUrlByChainId} from 'util/network/network.util' -import {TRANSACTION_STATUS} from "../containers/history/types"; -import {teleportationGraphQLService} from "./graphql.service"; -import {BigNumber, ethers, providers} from "ethers"; -import {isDevBuild} from "../util/constant"; -import {BobaChains} from "../util/chainConfig"; - -class TransactionService { - async getSevens(networkConfig = networkService.networkConfig) { - const response = await omgxWatcherAxiosInstance( - networkConfig - ).get('get.l2.pendingexits') - - if (response.status === 201) { - const data = response.data - const filtered = data.filter( - (i) => i.fastRelay === 0 && i.status === 'pending' - ) - return filtered - } else { - return [] - } - - } - - async getFastExits(networkConfig = networkService.networkConfig) { - const response = await omgxWatcherAxiosInstance( - networkConfig - ).get('get.l2.pendingexits') - - if (response.status === 201) { - const data = response.data - const filtered = data.filter( - (i) => i.fastRelay === 1 && i.status === 'pending' - ) - return filtered - } else { - return [] - } - } - - // fetch L2 transactions from omgxWatcherAxiosInstance - async fetchL2Tx(networkConfig = networkService.networkConfig) { - let L2Txs = [] - try { - const responseL2 = await omgxWatcherAxiosInstance( - networkConfig - ) - .post('get.l2.transactions', { - address: networkService.account, - fromRange: 0, - toRange: 1000, - }) - .catch((error) => { - console.log('get l2 tx', error) - }) - - if (responseL2.status === 201) { - L2Txs = responseL2.data.map((v) => ({ - ...v, layer: 'L2', chainName: networkConfig.L2.name, - originChainId: networkConfig.L2.chainId, - destinationChainId: networkConfig.L1.chainId - })) - } - return L2Txs - } catch (error) { - console.log('TS: fetchL2Tx', error) - return L2Txs - } - } - - // fetch L0 transactions from omgxWatcherAxiosInstance - async fetchL0Tx(networkConfig = networkService.networkConfig) { - let L0Txs = [] - try { - const responseL0 = await omgxWatcherAxiosInstance( - networkConfig - ).post('get.layerzero.transactions', { - address: networkService.account, - fromRange: 0, - toRange: 1000, - }) - - if (responseL0.status === 201) { - L0Txs = responseL0.data.map((v) => ({ - ...v, - hash: v.tx_hash, - blockNumber: parseInt(v.block_number), - timeStamp: parseInt(v.timestamp), //fix bug - sometimes this is string, sometimes an integer - layer: 'L0', - chainName: networkConfig.L1.name, - originChainId: networkConfig.L1.chainId, - altL1: true, - })) - } - return L0Txs - } catch (error) { - console.log('TS: fetchL0Tx', error) - return L0Txs - } - } - - // fetch L1 pending transactions from omgxWatcherAxiosInstance - async fetchL1PendingTx(networkConfig = networkService.networkConfig) { - let txL1pending = [] - try { - const responseL1pending = await omgxWatcherAxiosInstance( - networkConfig - ).post('get.l1.transactions', { - address: networkService.account, - fromRange: 0, - toRange: 1000, - }) - - if (responseL1pending.status === 201) { - //add the chain: 'L1pending' field and chainName: field - txL1pending = responseL1pending.data.map((v) => ({ - ...v, - layer: 'L1pending', - chainName: networkConfig.L1.name, - originChainId: networkConfig.L1.chainId, - destinationChainId: networkConfig.L2.chainId - })) - } - return txL1pending - } catch (error) { - console.log('TS: fetchL1PendingTx', error) - return txL1pending - } - } - - /** - * @getTransactions - * - loads L1Txs, l2Txs, l0Txs, L1PendingTxs - * - */ - async getTransactions(networkConfig = networkService.networkConfig) { - const networksArray = Array.from(Object.values(AllNetworkConfigs)) - - const networkConfigsArray = networksArray.flatMap((network) => { - return [network.Testnet, network.Mainnet] - }) - - const allNetworksTransactions = await Promise.all(networkConfigsArray.flatMap((config) => { - return [this.fetchL2Tx(config), - this.fetchL1PendingTx(config), - this.fetchTeleportationTransactions(config)] - } - )) - const filteredResults = allNetworksTransactions.reduce((acc, res) => [...acc, ...res], []) - return filteredResults?.filter((transaction) => transaction.hash) - } - - async fetchTeleportationTransactions(networkConfig = networkService.networkConfig) { - let rawTx = [] - - const contractL1 = networkService.getTeleportationContract(networkConfig.L1.chainId) - const contractL2 = networkService.getTeleportationContract(networkConfig.L2.chainId) - - const mapEventToTransaction = async (sendEvent, disburseEvent, contract) => { - const txReceipt = await contract.provider.getTransactionReceipt(sendEvent.txHash) - let crossDomainMessageFinalize - - if (disburseEvent) { - crossDomainMessageFinalize = disburseEvent.blockTimestamp - } - - const crossDomainMessage = { - crossDomainMessage: disburseEvent?.depositId, - crossDomainMessageEstimateFinalizedTime: crossDomainMessageFinalize ?? (parseInt(sendEvent.blockTimestamp) + 180), // should never take longer than a few minutes - crossDomainMessageFinalize, - crossDomainMessageSendTime: sendEvent.blockTimestamp, - fromHash: sendEvent.txHash, - } - - let status = txReceipt?.status ? TRANSACTION_STATUS.Pending : TRANSACTION_STATUS.Failed - if (disburseEvent && status === TRANSACTION_STATUS.Pending) { - const rpc = new providers.JsonRpcProvider(getRpcUrlByChainId(sendEvent.toChainId)) - const disburseTxReceipt = await rpc.getTransactionReceipt(disburseEvent.txHash) - status = disburseTxReceipt.status === 1 ? TRANSACTION_STATUS.Succeeded : TRANSACTION_STATUS.Failed - if (status === TRANSACTION_STATUS.Succeeded && disburseEvent.__typename === "TeleportationDisbursementFailedEvent") { - // won't go in here if already retried - status = TRANSACTION_STATUS.Failed // TODO: but can be retried - } - crossDomainMessage.toHash = disburseEvent.txHash - } - - const action = { - amount: sendEvent.amount?.toString(), - sender: sendEvent.emitter, - status, - to: sendEvent.emitter, - token: sendEvent.token, - } - const networkConfigForChainId = CHAIN_ID_LIST[sendEvent.sourceChainId] - return { - ...sendEvent, - ...txReceipt, - disburseEvent, - timeStamp: sendEvent.blockTimestamp, - layer: networkConfigForChainId.layer, - chainName: networkConfigForChainId.name, - originChainId: sendEvent.sourceChainId, - destinationChainId: sendEvent.toChainId, - UserFacingStatus: status, - contractAddress: contract.address, - hash: sendEvent.txHash, - crossDomainMessage, - contractName: 'Teleportation', - from: sendEvent.emitter, - to: sendEvent.emitter, - action, - isTeleportation: true, - }; - } - - const _getTeleportationSupportedDestChainTokenAddrBySourceChainTokenAddr = (sourceChainTokenAddr, sourceChainId, destChainId) => { - const srcChainTokenSymbol = BobaChains[parseInt(sourceChainId)].supportedAssets[sourceChainTokenAddr?.toLowerCase()] - - const supportedAsset = Object.entries(BobaChains[parseInt(destChainId)].supportedAssets).find( - ([address, tokenSymbol]) => { - return tokenSymbol === srcChainTokenSymbol - } - ) - if (!supportedAsset) { - console.error( - `Asset ${srcChainTokenSymbol} on chain destinationChain not configured but possibly supported on-chain` - ) - return; - } - return supportedAsset[0] // return only address - } - - const getEventsForTeleportation = async (contract, sourceChainId) => { - if (contract) { - let sentEvents = [] - try { - sentEvents = await teleportationGraphQLService.queryAssetReceivedEvent(networkService.account, sourceChainId) - } catch (err) { - console.log(err?.message) - } - - if (!sentEvents || !sentEvents?.length) return [] - return await Promise.all(sentEvents.map(async sentEvent => { - let receiveEvent = await teleportationGraphQLService.queryDisbursementSuccessEvent(networkService.account, sentEvent.sourceChainId, sentEvent.toChainId, _getTeleportationSupportedDestChainTokenAddrBySourceChainTokenAddr(sentEvent.token, sentEvent.sourceChainId, sentEvent.toChainId), sentEvent.amount, sentEvent.depositId) - if (!receiveEvent && sentEvent.token === ethers.constants.AddressZero) { - // Native assets can fail and retried - receiveEvent = await teleportationGraphQLService.queryDisbursementFailedEvent(networkService.account, sentEvent.sourceChainId, sentEvent.toChainId, sentEvent.amount, sentEvent.depositId) - if (receiveEvent) { - // check if successfully retried - receiveEvent = await teleportationGraphQLService.queryDisbursementRetrySuccessEvent(networkService.account, sentEvent.sourceChainId, sentEvent.toChainId, sentEvent.amount, sentEvent.depositId) - } - if (receiveEvent) { - // do in both cases, receiveEvent may still be undefined - receiveEvent.token = ethers.constants.AddressZero - } - } - return await mapEventToTransaction(sentEvent, receiveEvent, contract) - })) - } else if (isDevBuild()) { - console.log("DEV: Teleportation not supported on network") - } - return [] - } - - rawTx = rawTx.concat(await getEventsForTeleportation(contractL1, networkConfig.L1.chainId)) - return rawTx.concat(await getEventsForTeleportation(contractL2, networkConfig.L2.chainId)) - } -} - -const transactionService = new TransactionService() - -export default transactionService diff --git a/packages/boba/gateway/src/services/verifier.service.js b/packages/boba/gateway/src/services/verifier.service.js deleted file mode 100644 index fc9d2e7499..0000000000 --- a/packages/boba/gateway/src/services/verifier.service.js +++ /dev/null @@ -1,31 +0,0 @@ - - -import verifierWatcherAxiosInstance from "api/verifierWatcherAxios"; -import networkService from "./networkService"; - - -class VerifierService { - - /** - * @getVerifierStatus - */ - - async getVerifierStatus() { - const response = await verifierWatcherAxiosInstance( - networkService.networkConfig - ).post('/', { jsonrpc: "2.0", method: "status", id: 1 }) - - if (response.status === 200) { - const status = response.data.result - return status - } else { - console.log("VS: Bad verifier response") - return false - } - } - -} - -const verifierService = new VerifierService(); - -export default verifierService; diff --git a/packages/boba/gateway/src/services/wallet.service.js b/packages/boba/gateway/src/services/wallet.service.js deleted file mode 100644 index 5de24f7d5f..0000000000 --- a/packages/boba/gateway/src/services/wallet.service.js +++ /dev/null @@ -1,218 +0,0 @@ -/* eslint-disable quotes */ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - - import { providers, utils } from "ethers" - import WalletConnectProvider from "@walletconnect/web3-provider" - import { rpcUrls } from 'util/network/network.util' - import store from 'store' - import { CHAIN_ID_LIST, NetworkList } from 'util/network/network.util' -import { setActiveNetwork, setNetwork } from 'actions/networkAction' - - class WalletService { - constructor() { - this.provider = null - this.account = null - - this.walletConnectProvider = null - this.walletType = null - } - - - - async connectMetaMask() { - try { - await window.ethereum.request({ method: 'eth_requestAccounts' }) - this.provider = new providers.Web3Provider(window.ethereum, 'any') - this.account = await this.provider.getSigner().getAddress() - this.walletType = 'metamask' - return true - } catch (e) { - console.log(`Error connecting wallet: ${e}`) - return false - } - } - - async disconnectMetaMask() { - try { - await window.ethereum.request({ method: "eth_requestAccounts", params: [{ eth_accounts: {} }] }) - return true - } catch (e) { - console.log(`Error disconnecting wallet: ${e}`) - return false - } - } - - async listenMetaMask() { - window.ethereum.on('accountsChanged', () => { - window.location.reload() - }) - - window.ethereum.on('chainChanged', (chainId) => { - const { networkType, chain } = CHAIN_ID_LIST[Number(chainId)] - const { - chain: network, - icon: networkIcon, - name - } = NetworkList[ networkType ].find(network => network.chain === chain); - store.dispatch({ type: 'SETUP/CHAINIDCHANGED/SET', payload: Number(chainId) }) - store.dispatch( - setNetwork({ - networkType, - network, - networkIcon, - name - }) - ) - store.dispatch(setActiveNetwork()) - }) - } - - async connectWalletConnect() { - try { - this.walletConnectProvider = new WalletConnectProvider({ - rpc: rpcUrls - }) - await this.walletConnectProvider.enable() - this.provider = new providers.Web3Provider(this.walletConnectProvider, 'any') - this.account = await this.provider.getSigner().getAddress() - this.walletType = 'walletconnect' - return true - } catch (e) { - console.log(`Error connecting WalletConnect: ${e}`) - return false - } - } - - async disconnectWalletConnect() { - try { - await this.walletConnectProvider.disconnect() - return true - } catch (e) { - console.log(`Error disconnecting WalletConnect: ${e}`) - return false - } - } - - async listenWalletConnect() { - this.walletConnectProvider.on("accountsChanged", (accounts) => { - if (utils.getAddress(this.account) !== utils.getAddress(accounts[0])) { - window.location.reload() - } - }); - - this.walletConnectProvider.on("chainChanged", (chainId) => { - console.log(`WalletConnect chain changed to: ${chainId}`) - store.dispatch({ type: 'SETUP/CHAINIDCHANGED/SET', payload: chainId }) - }); - } - - async switchChain(chainId, chainInfo) { - const provider = this.walletType === 'metamask' ? window.ethereum : this.walletConnectProvider - try { - await provider.request({ - method: "wallet_switchEthereumChain", - params: [{ chainId }], - }) - return true - } catch (error) { - if (error.code === 4902 || this.walletType === 'walletconnect') { - try { - await provider.request({ - method: "wallet_addEthereumChain", - params: [chainInfo, this.account], - }) - // After adding the chain, we need to call switchEthereumChain again to finish the process for WalletConnect - if (this.walletType === 'walletconnect') { - await provider.request({ - method: "wallet_switchEthereumChain", - params: [{ chainId }], - }) - } - return true - } catch (addError) { - console.log(`Error adding chain: ${addError}`) - return false - } - } else { - console.log(`Error switching chain: ${error?.message}`) - return false - } - } - } - - async connectWallet(type) { - if (type === 'metamask') { - return await this.connectMetaMask() - } - if (type === 'walletconnect') { - return await this.connectWalletConnect() - } - } - - async addTokenToMetaMask(token) { - const {address,symbol,decimals,logoURI,chain} = token; - return window.ethereum - .request({ - method: "wallet_watchAsset", - params: { - type: "ERC20", - options: { - address, - symbol, - decimals, - image: logoURI, - chainId: chain, - }, - }, - }) - .catch((error) => { - console.error(error); - }); - } - - async disconnectWallet() { - let result = false - if (this.walletType === 'metamask') { - result = await this.disconnectMetaMask() - } - if (this.walletType === 'walletconnect') { - result = await this.disconnectWalletConnect() - } - this.resetValues() - return result - } - - bindProviderListeners() { - if (this.walletType === 'metamask') { - this.listenMetaMask() - } - if (this.walletType === 'walletconnect') { - this.listenWalletConnect() - } - } - - resetValues() { - this.walletConnectProvider = null - this.provider = null - this.account = null - this.walletType = null - store.dispatch({ type: 'SETUP/CHAINIDCHANGED/RESET' }) - } - } - - const walletService = new WalletService(); - - export default walletService; diff --git a/packages/boba/gateway/src/setupTests.ts b/packages/boba/gateway/src/setupTests.ts deleted file mode 100644 index 2eb59b05d8..0000000000 --- a/packages/boba/gateway/src/setupTests.ts +++ /dev/null @@ -1,5 +0,0 @@ -// jest-dom adds custom jest matchers for asserting on DOM nodes. -// allows you to do things like: -// expect(element).toHaveTextContent(/react/i) -// learn more: https://github.com/testing-library/jest-dom -import '@testing-library/jest-dom/extend-expect' diff --git a/packages/boba/gateway/src/store/index.js b/packages/boba/gateway/src/store/index.js deleted file mode 100644 index 83303ad9d2..0000000000 --- a/packages/boba/gateway/src/store/index.js +++ /dev/null @@ -1,41 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import { createStore , applyMiddleware } from 'redux' -import RootReducer from 'reducers' -import reduxThunk from 'redux-thunk' -import persistReducer from 'redux-persist/lib/persistReducer' -import storage from 'redux-persist/lib/storage' -import persistStore from 'redux-persist/lib/persistStore' - -const initialState = {} - -const persistConfig = { - key: 'root', - storage, - whitelist: ['network'] -} - -const persistedReducer = persistReducer(persistConfig, RootReducer) - -export const store = createStore( - persistedReducer, - initialState, - applyMiddleware(reduxThunk) -) - -export default store; - -export const persistor = persistStore(store) diff --git a/packages/boba/gateway/src/stories/ColorPalette.stories.tsx b/packages/boba/gateway/src/stories/ColorPalette.stories.tsx deleted file mode 100644 index 08f361204f..0000000000 --- a/packages/boba/gateway/src/stories/ColorPalette.stories.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import React from 'react' -import styled, { useTheme } from 'styled-components' - -export default { - title: 'Theme/Color Palette', -} - -const ColorBox = styled.div` - display: flex; - border-radius: 8px; - width: 100px; - height: 100px; - margin: 10px 0px; -` - -const Title = styled.p` - font-size: ${(props) => props.theme.titles.heading1}; - color: ${(props) => props.theme.defaultColorText}; - font-weight: bold; - text-transform: capitalize; -` - -const Item = styled.p` - font-size: ${(props) => props.theme.text.body2}; - color: ${(props) => props.theme.defaultColorText}; -` - -const SubTitle = styled.p` - font-size: ${(props) => props.theme.text.body1}; - font-weight: bold; - color: ${(props) => props.theme.defaultColorText}; -` -const ColorContainer = styled.div` - padding: 25px 0px; -` - -export const Palette = () => { - const theme = useTheme() as any - const colors = theme.colors - return ( - - {Object.keys(colors).map((currentColor) => { - return ( - <> - {currentColor}s -
- {typeof colors[currentColor] === 'object' ? ( - Object.entries(colors[currentColor]).map(([name, color]) => ( -
- - {name} - {color} -
- )) - ) : ( -
- - {currentColor} - {colors[currentColor]} -
- )} -
- - ) - })} -
- ) -} diff --git a/packages/boba/gateway/src/stories/Introduction.mdx b/packages/boba/gateway/src/stories/Introduction.mdx deleted file mode 100644 index 247c660869..0000000000 --- a/packages/boba/gateway/src/stories/Introduction.mdx +++ /dev/null @@ -1,130 +0,0 @@ -import { Meta } from '@storybook/blocks'; -import Code from './assets/code-brackets.svg'; -import Colors from './assets/colors.svg'; -import Comments from './assets/comments.svg'; -import Direction from './assets/direction.svg'; -import Flow from './assets/flow.svg'; -import Plugin from './assets/plugin.svg'; -import Repo from './assets/repo.svg'; -import StackAlt from './assets/stackalt.svg'; - - - - - -# Welcome, fearless developers, to the wonderful adventure of Storybook in the universe of Boba Network! - -In this exciting journey, you will discover how Storybook, the crown jewel of Boba Network, can revolutionize your UI development lives. With the powerful magic of Storybook, you can solve problems that keep you up at night, such as duplicate components and errors that should never exist. -Are you tired of dealing with the nightmare of maintaining multiple versions of components? Storybook is your masked superhero! It offers you a unique visual library where you can store and organize all your precious components. Say goodbye to duplication and chaos. Say hello to efficiency and order! - -But that's not all. Storybook, with its brilliant layer of superpowers, allows you to explore, test, and debug each component in a safe and isolated environment. The dreaded errors vanish like magic, and you can focus on creating mind-blowing user experiences. - -And here comes the most exciting part: Storybook is not just a tool, it is part of the incredible Boba Network. In this big family, you will find unconditional support and a community of passionate developers who will accompany you on your journey. Together, we will overcome challenges, share knowledge, and take our creations to new heights. - -So, brave developers, get ready to conquer the UI world with Storybook and Boba Network by your side. Leave your problems behind, embrace innovation, and discover a universe of possibilities. The adventure is about to begin! - -Welcome to the magical world of Storybook in Boba Network, where problems vanish and solutions come to life! \ No newline at end of file diff --git a/packages/boba/gateway/src/stories/assets/code-brackets.svg b/packages/boba/gateway/src/stories/assets/code-brackets.svg deleted file mode 100644 index 73de947760..0000000000 --- a/packages/boba/gateway/src/stories/assets/code-brackets.svg +++ /dev/null @@ -1 +0,0 @@ -illustration/code-brackets \ No newline at end of file diff --git a/packages/boba/gateway/src/stories/assets/colors.svg b/packages/boba/gateway/src/stories/assets/colors.svg deleted file mode 100644 index 17d58d516e..0000000000 --- a/packages/boba/gateway/src/stories/assets/colors.svg +++ /dev/null @@ -1 +0,0 @@ -illustration/colors \ No newline at end of file diff --git a/packages/boba/gateway/src/stories/assets/comments.svg b/packages/boba/gateway/src/stories/assets/comments.svg deleted file mode 100644 index 6493a139f5..0000000000 --- a/packages/boba/gateway/src/stories/assets/comments.svg +++ /dev/null @@ -1 +0,0 @@ -illustration/comments \ No newline at end of file diff --git a/packages/boba/gateway/src/stories/assets/direction.svg b/packages/boba/gateway/src/stories/assets/direction.svg deleted file mode 100644 index 65676ac272..0000000000 --- a/packages/boba/gateway/src/stories/assets/direction.svg +++ /dev/null @@ -1 +0,0 @@ -illustration/direction \ No newline at end of file diff --git a/packages/boba/gateway/src/stories/assets/flow.svg b/packages/boba/gateway/src/stories/assets/flow.svg deleted file mode 100644 index 8ac27db403..0000000000 --- a/packages/boba/gateway/src/stories/assets/flow.svg +++ /dev/null @@ -1 +0,0 @@ -illustration/flow \ No newline at end of file diff --git a/packages/boba/gateway/src/stories/assets/plugin.svg b/packages/boba/gateway/src/stories/assets/plugin.svg deleted file mode 100644 index 29e5c690c0..0000000000 --- a/packages/boba/gateway/src/stories/assets/plugin.svg +++ /dev/null @@ -1 +0,0 @@ -illustration/plugin \ No newline at end of file diff --git a/packages/boba/gateway/src/stories/assets/repo.svg b/packages/boba/gateway/src/stories/assets/repo.svg deleted file mode 100644 index f386ee902c..0000000000 --- a/packages/boba/gateway/src/stories/assets/repo.svg +++ /dev/null @@ -1 +0,0 @@ -illustration/repo \ No newline at end of file diff --git a/packages/boba/gateway/src/stories/assets/stackalt.svg b/packages/boba/gateway/src/stories/assets/stackalt.svg deleted file mode 100644 index 9b7ad27435..0000000000 --- a/packages/boba/gateway/src/stories/assets/stackalt.svg +++ /dev/null @@ -1 +0,0 @@ -illustration/stackalt \ No newline at end of file diff --git a/packages/boba/gateway/src/stories/header.css b/packages/boba/gateway/src/stories/header.css deleted file mode 100644 index f08a483bee..0000000000 --- a/packages/boba/gateway/src/stories/header.css +++ /dev/null @@ -1,31 +0,0 @@ -.storybook-header { - border-bottom: 1px solid rgba(0, 0, 0, 0.1); - padding: 15px 20px; - display: flex; - align-items: center; - justify-content: space-between; -} - -.storybook-header svg { - display: inline-block; - vertical-align: top; -} - -.storybook-header h1 { - font-weight: 700; - font-size: 20px; - line-height: 1; - margin: 6px 0 6px 10px; - display: inline-block; - vertical-align: top; -} - -.storybook-header button + button { - margin-left: 10px; -} - -.storybook-header .welcome { - color: #333; - font-size: 14px; - margin-right: 10px; -} diff --git a/packages/boba/gateway/src/themes/dark.ts b/packages/boba/gateway/src/themes/dark.ts deleted file mode 100644 index 7b43bb336e..0000000000 --- a/packages/boba/gateway/src/themes/dark.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { defaultTypography } from './default' -import { screen } from './screens' - -const dark = { - name: 'dark', - primarybg: '#BAE21A', //cyan - primaryfg: '#000000', //cyan - screen, - warning: 'yellow', - border: 'solid 1px #2d2f3a', - bg: { - glassy: 'rgba(255, 255, 255, 0.04)', - secondary: 'rgba(255, 255, 255, 0.14)', - }, - //new code - background: '#191919', - color: '#EEEEEE', - colors: { - modalTransparent: 'transparent', - danger: 'red', - success: 'green', - info: 'blue', - warning: 'yellow', - box: { - background: - 'linear-gradient(129deg, rgba(48, 48, 48, 0.60) 0%, rgba(48, 48, 48, 0.60) 46.35%, rgba(37, 37, 37, 0.60) 94.51%)', - border: 'rgba(84, 84, 84, 1)', - }, - popup: - 'linear-gradient(129deg, rgba(48, 48, 48, 0.70) 0%, rgba(48, 48, 48, 0.70) 46.35%, rgba(37, 37, 37, 0.70) 94.51%)', - gray: { - 50: '#EEEEEE', - 100: '#A8A8A8', - 200: '#5F5F5F', - 300: '#545454', - 400: '#393939', - 500: '#262626', - 600: '#191919', - 700: '#5E6058', - 800: '#22221E', - }, - green: { - 50: '#EFF8CC', - 100: '#CEE967', - 200: '#BEE234', - 300: '#AEDB01', - 400: '#90B406', - 500: '#637A0D', - 600: '#232C00', - }, - red: { - 50: '#F7DCDC', - 100: '#EFB9B9', - 200: '#E07272', - 300: '#D84F4F', - 400: '#822F2F', - 500: '#562020', - 600: '#2B1010', - }, - yellow: { - 50: '#FDF0D9', - 100: '#F9D28D', - 200: '#F7C367', - 300: '#F5B441', - 400: '#936C27', - 500: '#62481A', - 600: '#31240D', - }, - blue: { - 50: '#DBE3F8', - 100: '#B7C7F0', - 200: '#6E8EE1', - 300: '#4A72DA', - 400: '#3B5BAE', - 500: '#1E2E57', - 600: '#0F172C', - }, - }, - boxShadow: 'none', - ...defaultTypography, -} - -export default dark diff --git a/packages/boba/gateway/src/themes/default.ts b/packages/boba/gateway/src/themes/default.ts deleted file mode 100644 index fd55d23f83..0000000000 --- a/packages/boba/gateway/src/themes/default.ts +++ /dev/null @@ -1,14 +0,0 @@ -export const defaultTypography = { - titles: { - heading1: '36px', - heading2: '24px', - heading3: '18px', - heading4: '13px', - }, - text: { - heading1: '18px', - body1: '16px', - body2: '14px', - body3: '12px', - }, -} diff --git a/packages/boba/gateway/src/themes/globalStyle.ts b/packages/boba/gateway/src/themes/globalStyle.ts deleted file mode 100644 index e03170acbc..0000000000 --- a/packages/boba/gateway/src/themes/globalStyle.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { createGlobalStyle } from 'styled-components' - -export interface DefaultThemeProps { - background: string - color: string -} - -export const GlobalStyle = createGlobalStyle<{ theme: DefaultThemeProps }>` - - html, body, div, span, applet, object, iframe, - h1, h2, h3, h4, h5, h6, p, blockquote, pre, - a, abbr, acronym, address, big, cite, code, - del, dfn, em, img, ins, kbd, q, s, samp, - small, strike, strong, sub, sup, tt, var, - b, u, i, center, - dl, dt, dd, ol, ul, li, - fieldset, form, label, legend, - table, caption, tbody, tfoot, thead, tr, th, td, - article, aside, canvas, details, embed, - figure, figcaption, footer, header, hgroup, - menu, nav, output, ruby, section, summary, - time, mark, audio, video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; - } - /* HTML5 display-role reset for older browsers */ - article, aside, details, figcaption, figure, - footer, header, hgroup, menu, nav, section { - display: block; - } - body { - line-height: 1; - } - ol, ul { - list-style: none; - } - blockquote, q { - quotes: none; - } - blockquote:before, blockquote:after, - q:before, q:after { - content: ''; - content: none; - } - table { - border-collapse: collapse; - border-spacing: 0; - } - - body { - font-family: 'Roboto', sans-serif; - background: ${({ theme }) => theme.background} !important; - color: ${({ theme }) => theme.color} !important; - } - - h1, h2, h3, h4, h5, h6 { - font-family: 'Montserrat'; - } - - -` diff --git a/packages/boba/gateway/src/themes/index.tsx b/packages/boba/gateway/src/themes/index.tsx deleted file mode 100644 index 8a7879598f..0000000000 --- a/packages/boba/gateway/src/themes/index.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { ThemeProvider } from 'styled-components' - -import React, { ReactNode, useEffect, useState } from 'react' -import { useSelector } from 'react-redux' -import { selectTheme } from 'selectors' -import light from './light' -import dark from './dark' -import { GlobalStyle } from './globalStyle' - -interface ThemeProps { - children: ReactNode -} - -const CustomThemeProvider = ({ children }: ThemeProps) => { - const [currentTheme, setCurrentTheme] = useState(dark) - const theme = useSelector(selectTheme) - - useEffect(() => { - if (theme === 'light') { - setCurrentTheme(light) - } else { - setCurrentTheme(dark) - } - }, [theme]) - - return ( - - - {children} - - ) -} - -export default CustomThemeProvider diff --git a/packages/boba/gateway/src/themes/light.ts b/packages/boba/gateway/src/themes/light.ts deleted file mode 100644 index 431d4cb00e..0000000000 --- a/packages/boba/gateway/src/themes/light.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { defaultTypography } from './default' -import { screen } from './screens' - -const light = { - name: 'light', - primarybg: '#1CD6D1', //cyan - primaryfg: '#000000', - screen, - warning: 'yellow', - border: 'solid 1px rgba(0, 0, 0, 0.12)', - bg: { - glassy: 'rgba(0,0,0, 0.09)', - secondary: 'rgba(0, 0, 0, 0.08)', - }, - //new code - background: '#FFFFFF', - color: '#22221E', - colors: { - modalTransparent: '#fff', - danger: '#FF0000', - success: 'green', - info: 'blue', - warning: 'yellow', - box: { - background: 'rgba(253, 255, 248, 0.9)', - border: '#DEE0D8', - }, - popup: 'rgba(253, 255, 248, 0.90)', - gray: { - 50: 'rgba(253, 255, 248, 0.9)', - 100: '#F0F1EA', - 200: '#E5E5E1', - 300: '#E1E2D8', - 400: '#DEE0D8', - 500: '#C8CAC2', - 600: '#8F9288', - 700: '#5E6058', - 800: '#22221E', - }, - green: { - 50: '#EFF8CC', - 100: '#CEE967', - 200: '#BEE234', - 300: '#AEDB01', - 400: '#90B406', - 500: '#637A0D', - 600: '#232C00', - }, - red: { - 50: '#F3D8DB', - 100: '#EEC8CC', - 200: '#C97973', - 300: '#A52015', - 400: '#841A11', - 500: '#692327', - 600: '#210604', - }, - yellow: { - 50: '#FDF0D9', - 100: '#F9D28D', - 200: '#F7C367', - 300: '#F5B441', - 400: '#936C27', - 500: '#62481A', - 600: '#31240D', - }, - blue: { - 50: '#DBE3F8', - 100: '#B7C7F0', - 200: '#6E8EE1', - 300: '#4A72DA', - 400: '#3B5BAE', - 500: '#1E2E57', - 600: '#0F172C', - }, - }, - boxShadow: '2px 2px 30px rgba(0, 0, 0, 0.15)', - ...defaultTypography, -} - -export default light diff --git a/packages/boba/gateway/src/themes/screens.ts b/packages/boba/gateway/src/themes/screens.ts deleted file mode 100644 index 872d8d3594..0000000000 --- a/packages/boba/gateway/src/themes/screens.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { css } from 'styled-components' - -const size = { - mobile: '767px', - tablet: '980px', - smallDesktop: '1023px', - desktop: '1200px', -} - -export const screen = { - mobile: `(max-width : ${size.mobile})`, - tablet: `(max-width : ${size.tablet})`, - smallDesktop: `(max-width : ${size.smallDesktop})`, - laptop: `(max-width : ${size.desktop})`, -} - -export const mobile = (inner: any) => css` - @media (max-width: ${size.mobile}) { - ${inner}; - } -` -export const tablet = (inner: any) => css` - @media (max-width: ${size.tablet}) { - ${inner}; - } -` -export const sdesktop = (inner: any) => css` - @media (max-width: ${size.smallDesktop}) { - ${inner}; - } -` -export const desktop = (inner: any) => css` - @media (max-width: ${size.desktop}) { - ${inner}; - } -` diff --git a/packages/boba/gateway/src/types/custom.d.ts b/packages/boba/gateway/src/types/custom.d.ts deleted file mode 100644 index 43539bf034..0000000000 --- a/packages/boba/gateway/src/types/custom.d.ts +++ /dev/null @@ -1,44 +0,0 @@ -declare module '*.png' { - const src: string - export default src -} -declare module '*.jpg' { - const src: string - export default src -} -declare module '*.jpeg' { - const src: string - export default src -} -declare module '*.jfif' { - const src: string - export default src -} -declare module '*.pjpeg' { - const src: string - export default src -} -declare module '*.pjp' { - const src: string - export default src -} -declare module '*.gif' { - const src: string - export default src -} -declare module '*.svg' { - const src: string - export default src -} -declare module '*.ico' { - const src: string - export default src -} -declare module '*.webp' { - const src: string - export default src -} -declare module '*.avif' { - const src: string - export default src -} diff --git a/packages/boba/gateway/src/util/amountConvert.js b/packages/boba/gateway/src/util/amountConvert.js deleted file mode 100644 index 2e2b1f95c6..0000000000 --- a/packages/boba/gateway/src/util/amountConvert.js +++ /dev/null @@ -1,89 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -// we use BigNumber here for decimal support -import BigNumber from 'bignumber.js'; - -export function logAmount(amount, power, truncate = 0) { - // toString as some methods seem to supply BigNumber - const x = new BigNumber(amount?.toString()); - const exp = new BigNumber(10).pow(power); - - const calculated = x.div(exp); - - if (truncate > 0) - return calculated.toFixed(truncate); - else - return calculated.toFixed(); -} - -/*Takes a value such as 3.92 and converts it into -a BigNumber in wei - -Duplicates - -ethers.utils.parseUnits( valueString , decimalsOrUnitName ) => BigNumber -*/ - -export function powAmount(amount, decimals) { - - const x = new BigNumber(amount) - const exp = new BigNumber(10).pow(decimals) - - const calculated = x.multipliedBy(exp) - return calculated.toFixed(0) -} - -/* more clearly named version of this */ -export function toWei_String(amount, decimals) { - - const x = new BigNumber(amount) - const exp = new BigNumber(10).pow(decimals) - - const calculated = x.multipliedBy(exp) - return calculated.toFixed(0) -} - -const amountToUseConfig = { - 'ETH': { provider: 'ethereum' }, - 'BOBA': { provider: 'boba-network' }, - 'OLO': { provider: 'oolongswap' }, - 'OMG': { provider: 'omisego' }, - 'USDC': { provider: 'usd-coin' }, - 'AVAX': { provider: 'avalanche-2' }, - 'BNB': { provider: 'binancecoin' }, - 'tBNB': { provider: 'binancecoin' } -} - -export function amountToUsd(amount, lookupPrice, token) { - const { symbol } = token; - const currencyInfo = amountToUseConfig[symbol]; - if (!!currencyInfo && !!lookupPrice[currencyInfo.provider]) { - return amount * lookupPrice[currencyInfo.provider].usd; - } else if (!!lookupPrice[symbol.toLowerCase()]) { - return amount * lookupPrice[symbol.toLowerCase()].usd; - } else { - return 0; - } -} - - -export const formatLargeNumber = (num) => { - const exp = Math.floor(Math.log10(Math.abs(num)) / 3); - const scaledNum = Math.abs(num) / Math.pow(10, exp * 3); - const formattedNumber = scaledNum.toFixed(2); - const exponent = ['', 'k', 'M', 'B', 'T'][exp] || ''; - return isNaN(formattedNumber) ? '0' : formattedNumber + exponent; -} diff --git a/packages/boba/gateway/src/util/analytics.js b/packages/boba/gateway/src/util/analytics.js deleted file mode 100644 index 2bc22197a2..0000000000 --- a/packages/boba/gateway/src/util/analytics.js +++ /dev/null @@ -1,26 +0,0 @@ -import ReactGA from "react-ga4" -import { GA4_MEASUREMENT_ID } from "./constant"; - -export const init = () => { - if (window.location.hostname === 'localhost') { - return null; - } - if (GA4_MEASUREMENT_ID) { - // init if the GA4 Measurement Id is available. - ReactGA.initialize(GA4_MEASUREMENT_ID); - } -} - -export const sendPageView = (path) => { - ReactGA.send({ - hitType: "pageview", - page: path, - title: path - }); -} - - -export default { - init, - sendPageView -} diff --git a/packages/boba/gateway/src/util/banxa.ts b/packages/boba/gateway/src/util/banxa.ts deleted file mode 100644 index 22fe4f94b5..0000000000 --- a/packages/boba/gateway/src/util/banxa.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { BANXA_URL } from './constant' - -interface Props { - symbol: string - address: string -} - -const FIAT_TYPE: string = 'USD' -const BLOCK_CHAIN: string = 'Boba Network' - -export const prepareBanxaUrl = ({ symbol, address }: Props) => { - const endpoint = BANXA_URL - - return `${endpoint}coinType=${symbol}&fiatType=${FIAT_TYPE}&blockchain=${BLOCK_CHAIN}&walletAddress=${address}` -} diff --git a/packages/boba/gateway/src/util/calculation.js b/packages/boba/gateway/src/util/calculation.js deleted file mode 100644 index d25b569f6b..0000000000 --- a/packages/boba/gateway/src/util/calculation.js +++ /dev/null @@ -1,143 +0,0 @@ -/* - Varna - A Privacy-Preserving Marketplace - Varna uses Fully Homomorphic Encryption to make markets fair. - Copyright (C) 2021 Enya Inc. Palo Alto, CA - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -var accAdd = function(num1, num2) { - num1 = Number(num1); - num2 = Number(num2); - var dec1, dec2, times; - try { dec1 = countDecimals(num1)+1; } catch (e) { dec1 = 0; } - try { dec2 = countDecimals(num2)+1; } catch (e) { dec2 = 0; } - times = Math.pow(10, Math.max(dec1, dec2)); - var result = (accMul(num1, times) + accMul(num2, times)) / times; - return getCorrectResult("add", num1, num2, result); -}; - -var accSub = function(num1, num2) { - num1 = Number(num1); - num2 = Number(num2); - var dec1, dec2, times; - try { dec1 = countDecimals(num1)+1; } catch (e) { dec1 = 0; } - try { dec2 = countDecimals(num2)+1; } catch (e) { dec2 = 0; } - times = Math.pow(10, Math.max(dec1, dec2)); - var result = Number((accMul(num1, times) - accMul(num2, times)) / times); - return getCorrectResult("sub", num1, num2, result); -}; - -var accDiv = function(num1, num2) { - num1 = Number(num1); - num2 = Number(num2); - var t1 = 0, t2 = 0, dec1, dec2; - try { t1 = countDecimals(num1); } catch (e) { } - try { t2 = countDecimals(num2); } catch (e) { } - dec1 = convertToInt(num1); - dec2 = convertToInt(num2); - var result = accMul((dec1 / dec2), Math.pow(10, t2 - t1)); - return getCorrectResult("div", num1, num2, result); -}; - -var accMul = function(num1, num2) { - num1 = Number(num1); - num2 = Number(num2); - var times = 0, s1 = num1.toString(), s2 = num2.toString(); - try { times += countDecimals(s1); } catch (e) { } - try { times += countDecimals(s2); } catch (e) { } - var result = convertToInt(s1) * convertToInt(s2) / Math.pow(10, times); - return getCorrectResult("mul", num1, num2, result); -}; - -var countDecimals = function(num) { - var len = 0; - try { - num = Number(num); - var str = num.toString().toUpperCase(); - if (str.split('E').length === 2) { // scientific notation - var isDecimal = false; - if (str.split('.').length === 2) { - str = str.split('.')[1]; - if (parseInt(str.split('E')[0]) !== 0) { - isDecimal = true; - } - } - let x = str.split('E'); - if (isDecimal) { - len = x[0].length; - } - len -= parseInt(x[1]); - } else if (str.split('.').length === 2) { // decimal - if (parseInt(str.split('.')[1]) !== 0) { - len = str.split('.')[1].length; - } - } - } catch(e) { - throw e; - } finally { - if (isNaN(len) || len < 0) { - len = 0; - } - return len; - } -}; - -var convertToInt = function(num) { - num = Number(num); - var newNum = num; - var times = countDecimals(num); - var temp_num = num.toString().toUpperCase(); - if (temp_num.split('E').length === 2) { - newNum = Math.round(num * Math.pow(10, times)); - } else { - newNum = Number(temp_num.replace(".", "")); - } - return newNum; -}; - -var getCorrectResult = function(type, num1, num2, result) { - var temp_result = 0; - switch (type) { - case "add": - temp_result = num1 + num2; - break; - case "sub": - temp_result = num1 - num2; - break; - case "div": - temp_result = num1 / num2; - break; - case "mul": - temp_result = num1 * num2; - break; - default: - break; - } - if (Math.abs(result - temp_result) > 1) { - return temp_result; - } - return result; -}; - - -export { - accAdd, - accSub, - accDiv, - accMul, - countDecimals, - convertToInt, - getCorrectResult, -} \ No newline at end of file diff --git a/packages/boba/gateway/src/util/chainConfig.ts b/packages/boba/gateway/src/util/chainConfig.ts deleted file mode 100644 index a373c85aed..0000000000 --- a/packages/boba/gateway/src/util/chainConfig.ts +++ /dev/null @@ -1,106 +0,0 @@ -export const BobaChains = { - // TODO: Consider using AddressManager or AddressPackage instead - - //#region boba_networks - 288: { - url: 'https://replica.boba.network', - testnet: false, - name: 'Boba Ethereum Mainnet', - teleportationAddress: '0xd68809330075C792C171C450B983F4D18128e9BF', - height: 873302, - supportedAssets: { - ['0x0000000000000000000000000000000000000000'.toLowerCase()]: 'ETH', - ['0xa18bF3994C0Cc6E3b63ac420308E5383f53120D7'.toLowerCase()]: 'BOBA', - ['0x5DE1677344D3Cb0D7D465c10b72A8f60699C062d'.toLowerCase()]: 'USDT', - ['0x68ac1623ACf9eB9F88b65B5F229fE3e2c0d5789e'.toLowerCase()]: 'BNB', - }, - }, - 56288: { - url: 'https://replica.bnb.boba.network', - testnet: false, - name: 'Boba BNB Mainnet', - teleportationAddress: '0xd68809330075C792C171C450B983F4D18128e9BF', - height: 3393, - supportedAssets: { - ['0x4200000000000000000000000000000000000023'.toLowerCase()]: 'BNB', - ['0x0000000000000000000000000000000000000000'.toLowerCase()]: 'BOBA', - }, - }, - 2888: { - url: 'https://replica.goerli.boba.network', - testnet: true, - name: 'Boba Ethereum Goerli', - teleportationAddress: '0xB43EE846Aa266228FeABaD1191D6cB2eD9808894', - height: 40822, - supportedAssets: { - ['0x0000000000000000000000000000000000000000'.toLowerCase()]: 'ETH', - ['0x4200000000000000000000000000000000000023'.toLowerCase()]: 'BOBA', - }, - }, - 9728: { - url: 'https://replica.testnet.bnb.boba.network', - testnet: true, - name: 'Boba BNB Testnet', - teleportationAddress: '0xf4d179d3a083Fa3Eede935FaF4C679D32d514186', - height: 295353, - supportedAssets: { - ['0x4200000000000000000000000000000000000023'.toLowerCase()]: 'BNB', - ['0x0000000000000000000000000000000000000000'.toLowerCase()]: 'BOBA', - ['0xc614A66f82e71758Fa7735C91dAD1088c8362f15'.toLowerCase()]: 'ETH', - }, - }, - //#endregion - //#region l1 - 1: { - url: 'https://eth.llamarpc.com', - testnet: false, - name: 'Ethereum Mainnet', - teleportationAddress: '0x0', - height: 17565090, - supportedAssets: { - ['0x0000000000000000000000000000000000000000'.toLowerCase()]: 'ETH', - ['0x42bBFa2e77757C645eeaAd1655E0911a7553Efbc'.toLowerCase()]: 'BOBA', - ['0xdAC17F958D2ee523a2206206994597C13D831ec7'.toLowerCase()]: 'USDT', - ['0xB8c77482e45F1F44dE1745F52C74426C631bDD52'.toLowerCase()]: 'BNB', - }, - }, - 56: { - url: 'https://rpc.ankr.com/bsc', - testnet: false, - name: 'BNB Mainnet', - teleportationAddress: '0x0', - height: 30907682, - supportedAssets: { - /*'0x0000000000000000000000000000000000000000': 'ETH', - '0x42bBFa2e77757C645eeaAd1655E0911a7553Efbc': 'BOBA', - '0xdAC17F958D2ee523a2206206994597C13D831ec7': 'USDT', - '0xB8c77482e45F1F44dE1745F52C74426C631bDD52': 'BNB',*/ - }, - }, - 5: { - url: 'https://goerli.gateway.tenderly.co', - testnet: true, - name: 'Goerli Testnet', - teleportationAddress: '0x84b22166366a6f7E0cD0c3ce9998f2913Bf17A13', - height: 9484025, - supportedAssets: { - ['0x0000000000000000000000000000000000000000'.toLowerCase()]: 'ETH', - ['0xC2C527C0CACF457746Bd31B2a698Fe89de2b6d49'.toLowerCase()]: 'USDT', - ['0xFC1C82c5EdeB51082CF30FDDb434D2cBDA1f6924'.toLowerCase()]: 'BNB', - ['0xeCCD355862591CBB4bB7E7dD55072070ee3d0fC1'.toLowerCase()]: 'BOBA', - }, - }, - 97: { - url: 'https://bsc.getblock.io/28c7f0fe-802f-4631-9f45-2df301789ecf/testnet/', - testnet: true, - name: 'BNB Testnet', - teleportationAddress: '0x7f6a32bCaA70c65E08F2f221737612F6fC18347A', - height: 32272487, - supportedAssets: { - ['0x0000000000000000000000000000000000000000'.toLowerCase()]: 'BNB', - ['0x875cD11fDf085e0E11B0EE6b814b6d0b38fA554C'.toLowerCase()]: 'BOBA', - ['0xd66c6B4F0be8CE5b39D52E0Fd1344c389929B378'.toLowerCase()]: 'ETH', // WETH - }, - }, - //#endregion -} diff --git a/packages/boba/gateway/src/util/changeChain.js b/packages/boba/gateway/src/util/changeChain.js deleted file mode 100644 index d441994384..0000000000 --- a/packages/boba/gateway/src/util/changeChain.js +++ /dev/null @@ -1 +0,0 @@ -export const isChangingChain = JSON.parse(localStorage.getItem('changeChain')); diff --git a/packages/boba/gateway/src/util/coinConvert.ts b/packages/boba/gateway/src/util/coinConvert.ts deleted file mode 100644 index a3c11fc3d0..0000000000 --- a/packages/boba/gateway/src/util/coinConvert.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* - OmgX - A Privacy-Preserving Marketplace - OmgX uses Fully Homomorphic Encryption to make markets fair. - Copyright (C) 2021 Enya Inc. Palo Alto, CA - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -type ChartToCodeType = (str: string, index: number) => number -const charToCode: ChartToCodeType = (str, index) => { - if (index >= str.length) { - return 0 - } - return str.toLowerCase().charCodeAt(index) - 97 + 1 -} - -type CodeToCharType = (int: number) => string -const codeToChar: CodeToCharType = (int) => { - if (int === 0) { - return '' - } - return String.fromCharCode(int - 1 + 97).toUpperCase() -} - -type CoinToArrayType = (name: string) => number[] -export const coinToArray: CoinToArrayType = (name) => { - // the length of the name should be 3 or 4 - if (name.length < 3 || name.length > 4) { - return [] - } - - const nameArray: number[] = [] - for (let i = 0; i < 4; i++) { - nameArray.push(charToCode(name, i)) - } - - return nameArray -} - -type ArrayToCoinType = (array: number[]) => string -export const arrayToCoin: ArrayToCoinType = (array) => { - let coin = '' - array.forEach((e) => (coin += codeToChar(e))) - return coin -} diff --git a/packages/boba/gateway/src/util/coinImage.ts b/packages/boba/gateway/src/util/coinImage.ts deleted file mode 100644 index 4e9e3f8872..0000000000 --- a/packages/boba/gateway/src/util/coinImage.ts +++ /dev/null @@ -1,16 +0,0 @@ -import TESTLogo from 'assets/images/test.svg' -import mttLogo from 'assets/images/mtt.png' - -export const getCoinImage = (symbol: string): string => { - const logoURIbase = - 'https://raw.githubusercontent.com/bobanetwork/token-list/main/assets' - let url = `${logoURIbase}/${symbol?.toLowerCase()}.svg` - - if (symbol === 'test') { - url = TESTLogo - } - if (symbol === 'mtt') { - url = mttLogo - } - return url -} diff --git a/packages/boba/gateway/src/util/common.ts b/packages/boba/gateway/src/util/common.ts deleted file mode 100644 index 0ea2c3d914..0000000000 --- a/packages/boba/gateway/src/util/common.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import { logAmount } from './amountConvert' - -type TokenSymbolType = { - tokenSymbol: string -} -type ComparatorType = (a: TokenSymbolType, b: TokenSymbolType) => -1 | 0 | 1 - -const comparator: ComparatorType = (a, b) => { - if (a.tokenSymbol < b.tokenSymbol) { - return -1 - } - - if (a.tokenSymbol > b.tokenSymbol) { - return 1 - } - - return 0 -} - -export const sortRawTokens = (tokens: any) => { - //change any for tokens type after we create the token type - const start = tokens - .filter((d: any) => ['ETH', 'BOBA', 'OMG'].includes(d.tokenSymbol)) - .sort(comparator) - - const last = tokens - .filter((d: any) => !['ETH', 'BOBA', 'OMG'].includes(d.tokenSymbol)) - .sort(comparator) - - return [...start, ...last] -} - -export const formatTokenAmount = (token: any) => { - if (!token) { - return null - } - - const amount: string = - token.symbol === 'ETH' - ? Number(logAmount(token.balance, token.decimals, 4)).toLocaleString( - undefined, - { - minimumFractionDigits: 4, - maximumFractionDigits: 4, - } - ) - : Number(logAmount(token.balance, token.decimals, 4)).toLocaleString( - undefined, - { - minimumFractionDigits: 4, - maximumFractionDigits: 4, - } - ) - - return amount -} diff --git a/packages/boba/gateway/src/util/constant.ts b/packages/boba/gateway/src/util/constant.ts deleted file mode 100644 index afa2890807..0000000000 --- a/packages/boba/gateway/src/util/constant.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { addMonths, Now, addYear, Dayjs } from 'util/dates' - -/************** - * Env Params * - **************/ -/* eslint-disable @typescript-eslint/no-var-requires */ -require('dotenv').config() - -type EnvType = string | number | null | undefined - -export const POLL_INTERVAL: EnvType = - process.env.REACT_APP_POLL_INTERVAL || 20000 -export const GAS_POLL_INTERVAL: EnvType = - process.env.REACT_APP_GAS_POLL_INTERVAL || 40000 -export const GA4_MEASUREMENT_ID: EnvType = - process.env.REACT_APP_GA4_MEASUREMENT_ID || null -export const APP_ENV: EnvType = process.env.REACT_APP_ENV || 'dev' -export const isDevBuild = () => APP_ENV === 'dev' -export const SENTRY_DSN: EnvType = process.env.REACT_APP_SENTRY_DSN || null -export const INFURA_ID: EnvType = process.env.REACT_APP_INFURA_ID -export const MAX_HEALTH_BLOCK_LAG: EnvType = - process.env.REACT_APP_MAX_HEALTH_BLOCK_LAG -export const WALLET_VERSION: EnvType = process.env.REACT_APP_WALLET_VERSION -export const SPEED_CHECK: EnvType = process.env.REACT_APP_SPEED_CHECK -export const TARGET_CHAIN_URL: EnvType = process.env.REACT_APP_TARGET_CHAIN_URL -// VE DAO FLAG -export const DISABLE_VE_DAO: EnvType = process.env.REACT_APP_DISABLE_VE_DAO -// WalletConnect FLAG -export const DISABLE_WALLETCONNECT: EnvType = - process.env.REACT_APP_DISABLE_WALLETCONNECT - -type BridgeType = { - FAST_BRIDGE: string - CLASSIC_BRIDGE: string - MULTI_BRIDGE: string - MULTI_CHAIN_BRIDGE: string -} - -export const BRIDGE_TYPE: BridgeType = { - FAST_BRIDGE: 'FAST_BRIDGE', - CLASSIC_BRIDGE: 'CLASSIC_BRIDGE', - MULTI_BRIDGE: 'MULTI_BRIDGE', //fix me remove me - MULTI_CHAIN_BRIDGE: 'MULTI_CHAIN_BRIDGE', -} - -type ExpiryOptionType = { - value: string | Dayjs - label: string -} - -export const EXPIRY_OPTIONS: ExpiryOptionType[] = [ - { - value: addMonths(Now(), 3, 'YYYY-MM-DD'), - label: '3 Months', - }, - { - value: addMonths(Now(), 7, 'YYYY-MM-DD'), - label: '6 Months', - }, - { - value: addYear(1, 'YYYY-MM-DD'), - label: '1 Year', - }, -] - -/********************* - * Routes Constants ** - *********************/ - -type RoutesPathType = { - BRIDGE: string - HISTORY: string - EARN: string - LOCK: string - STAKE: string - HELP: string - BOBASCOPE: string - VOTE_DAO: string - DAO: string - DEV_TOOLS: string -} - -export const ROUTES_PATH: RoutesPathType = { - BRIDGE: '/bridge', - HISTORY: '/history', - EARN: '/earn', - LOCK: '/lock', - STAKE: '/stake', - HELP: '/help', - BOBASCOPE: '/bobascope', - VOTE_DAO: '/votedao', - DAO: '/DAO', - DEV_TOOLS: '/devtools', -} - -export const PER_PAGE: number = 8 - -type Network = 'ethereum' | 'bnb' | 'avax' //we move this to global network type once we define this -type Page = - | 'Bridge' - | 'Wallet' - | 'History' - | 'Earn' - | 'Stake' - | 'DAO' - | 'Monster' -type PagesByNetworkType = Record - -export const PAGES_BY_NETWORK: PagesByNetworkType = { - ethereum: ['Bridge', 'Wallet', 'History', 'Earn', 'Stake', 'DAO'], - bnb: ['Bridge', 'Wallet', 'Earn', 'History'], - avax: ['Bridge', 'Wallet', 'Earn', 'History'], -} - -export enum Layer { - L1 = 'L1', - L2 = 'L2', -} -export const LAYER: { [key: string]: Layer } = Layer - -type NetworkIconType = 'ethereum' | 'boba' - -type NetworkNameType = { - L1: string - L2: string -} - -type DefaultNetworkType = { - NAME: NetworkNameType - ICON: Record -} - -export const DEFAULT_NETWORK: DefaultNetworkType = { - NAME: { - L1: 'Ethereum', - L2: 'Boba ETH', - }, - ICON: { - L1: 'ethereum', - L2: 'boba', - }, -} - -export const MM_EXTENTION_URL: string = - 'https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=en' - -export const MIN_NATIVE_L1_BALANCE: number = 0.002 - -export const BANXA_URL: string = 'https://boba.banxa.com/?' diff --git a/packages/boba/gateway/src/util/dates.ts b/packages/boba/gateway/src/util/dates.ts deleted file mode 100644 index 576755385b..0000000000 --- a/packages/boba/gateway/src/util/dates.ts +++ /dev/null @@ -1,103 +0,0 @@ -import dayjs, { Dayjs } from 'dayjs' -import localizedFormat from 'dayjs/plugin/localizedFormat' -import isSameOrBefore from 'dayjs/plugin/isSameOrBefore' -import isSameOrAfter from 'dayjs/plugin/isSameOrAfter' -import isBetween from 'dayjs/plugin/isBetween' -import 'dayjs/locale/en' // or the locale of your choice - -dayjs.extend(localizedFormat) -dayjs.extend(isSameOrBefore) -dayjs.extend(isSameOrAfter) -dayjs.extend(isBetween) - -export { Dayjs } - -export const Now = () => { - return dayjs() -} - -type DateFormatType = (date: number, format?: string) => string -export const formatDate: DateFormatType = ( - date, - format = 'MM/DD/YYYY hh:mm a' -) => { - return dayjs.unix(date).format(format) -} - -type ConvertDateType = ( - date: string | Date | Dayjs, - format?: string -) => string | Dayjs -export const convertDate: ConvertDateType = (date, format) => { - return format ? dayjs(date).format(format) : dayjs(date) -} - -type IsSameAfterOrBeforeDateType = (dateA: number, dateB: Dayjs) => boolean -export const isSameOrAfterDate: IsSameAfterOrBeforeDateType = ( - dateA, - dateB -) => { - return dayjs.unix(dateA).isSameOrAfter(dateB) -} - -export const isSameOrBeforeDate: IsSameAfterOrBeforeDateType = ( - dateA, - dateB -) => { - return dayjs.unix(dateA).isSameOrBefore(dateB) -} - -type IsAfterDateType = (date: number) => boolean -export const isAfterDate: IsAfterDateType = (date) => { - return dayjs().isAfter(dayjs.unix(date)) -} - -type AddDaysType = ( - date: string | number | Date | Dayjs, - days: number, - format?: string -) => string | Dayjs -export const addDays: AddDaysType = (date, days, format) => { - return format - ? dayjs(date).add(days, 'days').format(format) - : dayjs(date).add(days, 'days') -} - -type AddMonthsType = ( - date: string | number | Date | Dayjs, - months: number, - format?: string -) => string | Dayjs -export const addMonths: AddMonthsType = (date, months, format) => { - return format - ? dayjs(date).add(months, 'months').format(format) - : dayjs(date).add(months, 'months') -} - -type AddYearType = (year: number, format?: string) => string | Dayjs -export const addYear: AddYearType = (year, format) => { - return format - ? dayjs().add(year, 'year').format(format) - : dayjs().add(year, 'year') -} - -type IsSameMonthOrWeekType = (date: string | number | Date) => boolean -export const isSameMonth: IsSameMonthOrWeekType = (date) => { - return dayjs(date).isSame(Now(), 'month') -} - -export const isSameWeek: IsSameMonthOrWeekType = (date) => { - return dayjs(date).isSame(Now(), 'week') -} - -type isBeforeDateType = (date: string | number | Date) => boolean -export const isBeforeDate: isBeforeDateType = (date) => { - return dayjs(date).isBefore(Now()) -} - -export const diffBetweenTimeStamp = (time1: number, time2: number) => { - const date1 = dayjs.unix(time1) - const date2 = dayjs.unix(time2) - - return date1.diff(date2, 'seconds') -} diff --git a/packages/boba/gateway/src/util/lodash.js b/packages/boba/gateway/src/util/lodash.js deleted file mode 100644 index e572e3cb1c..0000000000 --- a/packages/boba/gateway/src/util/lodash.js +++ /dev/null @@ -1,9 +0,0 @@ -import isEqual from 'lodash/isEqual' -import intersection from 'lodash/intersection' -import orderBy from 'lodash/orderBy' -import groupBy from 'lodash/groupBy' -import keyBy from 'lodash/keyBy' -import flatten from 'lodash/flatten' - - -export { isEqual, intersection, orderBy, groupBy, keyBy, flatten}; diff --git a/packages/boba/gateway/src/util/masterConfig.js b/packages/boba/gateway/src/util/masterConfig.js deleted file mode 100644 index 661c8dc52f..0000000000 --- a/packages/boba/gateway/src/util/masterConfig.js +++ /dev/null @@ -1,35 +0,0 @@ -/* -Copyright 2021-present Boba Network. -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -import { - MAX_HEALTH_BLOCK_LAG, -} from './constant' - -const BaseServices = { - WALLET_SERVICE: `https://api-service.boba.network/`, - //Coing gecko url - COIN_GECKO_URL: `https://api.coingecko.com/api/v3/`, - //ETH gas station - ETH_GAS_STATION_URL: `https://ethgasstation.info/`, - // Mainnet meta transaction - MAINNET_META_TRANSACTION: `https://api-meta-transaction.mainnet.boba.network/`, - // goerli meta transaction - GOERLI_META_TRANSACTION: `https://api-meta-transaction.goerli.boba.network/`, -} - -export function getBaseServices() { - return BaseServices -} - -export function getMaxHealthBlockLag() { - return MAX_HEALTH_BLOCK_LAG || 100 -} diff --git a/packages/boba/gateway/src/util/network/config/avax.js b/packages/boba/gateway/src/util/network/config/avax.js deleted file mode 100644 index 5b9dbfacf4..0000000000 --- a/packages/boba/gateway/src/util/network/config/avax.js +++ /dev/null @@ -1,68 +0,0 @@ - -export const avaxConfig = { - Testnet: { - OMGX_WATCHER_URL: `https://api-watcher.testnet.avax.boba.network/`, - META_TRANSACTION: `https://api-meta-transaction.testnet.avax.boba.network/`, - MM_Label: `Boba Avalanche Testnet`, - addressManager: `0xcE78de95b85212BC348452e91e0e74c17cf37c79`, - L1: { - name: "Avalanche Testnet", - chainId: 43113, - chainIdHex: '0xA869', - rpcUrl: [ - `https://api.avax-test.network/ext/bc/C/rpc`, - `https://rpc.ankr.com/avalanche_fuji`, - ], - transaction: `https://testnet.snowtrace.io/tx/`, - blockExplorerUrl: `https://testnet.snowtrace.io/`, - symbol: "AVAX", - tokenName: "AVAX", - }, - L2: { - name: "Boba Avalanche Testnet", - chainId: 4328, - chainIdHex: '0x10E8', - rpcUrl: `https://testnet.avax.boba.network`, - blockExplorer: `https://blockexplorer.testnet.avax.boba.network/`, - transaction: `https://blockexplorer.testnet.avax.boba.network/tx/`, - blockExplorerUrl: `https://blockexplorer.testnet.avax.boba.network/`, - symbol: "BOBA", - tokenName: "Boba Token", - }, - gasEstimateAccount: `0xdb5a187FED81c735ddB1F6E47F28f2A5F74639b2`, - twitterFaucetPromotionText: `https://twitter.com/intent/tweet?text=I%27m%20developing%20on%20Boba%20Avalanche%20Testnet%20for%20Avalanche%20` - }, - Mainnet: { - OMGX_WATCHER_URL: `https://api-watcher.avax.boba.network/`, - META_TRANSACTION: `https://api-meta-transaction.avax.boba.network/`, - MM_Label: `Boba Avalanche Mainnet`, - addressManager: `0x00220f8ce1c4be8436574e575fE38558d85e2E6b`, - L1: { - name: "Avalanche Mainnet", - chainId: 43114, - chainIdHex: '0xA86A', - rpcUrl: [ - `https://api.avax.network/ext/bc/C/rpc`, - `https://rpc.ankr.com/avalanche`, - `https://1rpc.io/avax/c`, - ], - transaction: `https://snowtrace.io/tx/`, - blockExplorerUrl: `https://snowtrace.io/`, - symbol: "AVAX", - tokenName: "AVAX", - }, - L2: { - name: "Boba Avalanche Mainnet", - chainId: 43288, - chainIdHex: '0xA918', - rpcUrl: `https://avax.boba.network`, - blockExplorer: `https://blockexplorer.avax.boba.network/`, - transaction: `https://blockexplorer.avax.boba.network/tx/`, - blockExplorerUrl: `https://blockexplorer.avax.boba.network`, - symbol: "BOBA", - tokenName: "Boba Token", - }, - gasEstimateAccount: `0xdb5a187FED81c735ddB1F6E47F28f2A5F74639b2`, - twitterFaucetPromotionText: `https://twitter.com/intent/tweet?text=I%27m%20developing%20on%20Boba%20Avalanche%20Testnet%20for%20Avalanche%20` - } -} diff --git a/packages/boba/gateway/src/util/network/config/bnb.js b/packages/boba/gateway/src/util/network/config/bnb.js deleted file mode 100644 index 9697fc9705..0000000000 --- a/packages/boba/gateway/src/util/network/config/bnb.js +++ /dev/null @@ -1,69 +0,0 @@ - -export const bnbConfig = { - Testnet: { - OMGX_WATCHER_URL: `https://api-watcher.testnet.bnb.boba.network/`, - META_TRANSACTION: `https://api-meta-transaction.testnet.bnb.boba.network/`, - MM_Label: `bobaBnbTestnet`, - addressManager: `0xAee1fb3f4353a9060aEC3943fE932b6Efe35CdAa`, - L1: { - name: "BNB Testnet", - chainId: 97, - chainIdHex: '0x61', - rpcUrl: [ - `https://data-seed-prebsc-1-s1.binance.org:8545`, - `https://data-seed-prebsc-2-s1.binance.org:8545`, - `https://bsc-testnet.public.blastapi.io`, - ], - transaction: `https://testnet.bscscan.com/tx/`, - blockExplorerUrl: `https://testnet.bscscan.com/`, - symbol: "tBNB", - tokenName: "tBNB", - }, - L2: { - name: "Boba BNB Testnet", - chainId: 9728, - chainIdHex: '0x2600', - rpcUrl: `https://testnet.bnb.boba.network`, - blockExplorer: `https://blockexplorer.testnet.bnb.boba.network/`, - transaction: `https://blockexplorer.testnet.bnb.boba.network/tx/`, - blockExplorerUrl: `https://blockexplorer.testnet.bnb.boba.network/`, - symbol: "BOBA", - tokenName: "Boba Token", - }, - gasEstimateAccount: `0xdb5a187FED81c735ddB1F6E47F28f2A5F74639b2`, - twitterFaucetPromotionText: `https://twitter.com/intent/tweet?text=I%27m%20developing%20on%20Boba%20BNB%20Testnet%20for%20BNB%20` - }, - Mainnet: { - OMGX_WATCHER_URL: `https://api-watcher.bnb.boba.network/`, - META_TRANSACTION: `https://api-meta-transaction.bnb.boba.network/`, - MM_Label: `bobaBnb`, - addressManager: `0xeb989B25597259cfa51Bd396cE1d4B085EC4c753`, - L1: { - name: "Binance Smart Chain Mainnet", - chainId: 56, - chainIdHex: '0x38', - rpcUrl: [ - `https://bsc-dataseed.binance.org`, - `https://rpc.ankr.com/bsc`, - `https://1rpc.io/bnb`, - ], - transaction: `https://bscscan.com/tx/`, - blockExplorerUrl: `https://bscscan.com/`, - symbol: "BNB", - tokenName: "BNB", - }, - L2: { - name: "Boba BNB Mainnet", - chainId: 56288, - chainIdHex: '0xDBE0', - rpcUrl: `https://bnb.boba.network`, - blockExplorer: `https://blockexplorer.bnb.boba.network/`, - transaction: `https://blockexplorer.bnb.boba.network/tx/`, - blockExplorerUrl: `https://blockexplorer.bnb.boba.network/`, - symbol: "BOBA", - tokenName: "Boba Token", - }, - gasEstimateAccount: `0xdb5a187FED81c735ddB1F6E47F28f2A5F74639b2`, - twitterFaucetPromotionText: `https://twitter.com/intent/tweet?text=I%27m%20developing%20on%20Boba%20BNB%20Testnet%20for%20BNB%20` - } -} diff --git a/packages/boba/gateway/src/util/network/config/ethereum.js b/packages/boba/gateway/src/util/network/config/ethereum.js deleted file mode 100644 index b5f572d060..0000000000 --- a/packages/boba/gateway/src/util/network/config/ethereum.js +++ /dev/null @@ -1,101 +0,0 @@ -import {INFURA_ID } from "util/constant"; - -export const ethereumConfig = { - Testnet: { - OMGX_WATCHER_URL: `https://api-watcher.goerli.boba.network/`, - VERIFIER_WATCHER_URL: `https://api-verifier.goerli.boba.network/`, - META_TRANSACTION: `https://api-meta-transaction.goerli.boba.network/`, - MM_Label: `Goerli`, - addressManager: `0x6FF9c8FF8F0B6a0763a3030540c21aFC721A9148`, - L1: { - name: "Goerli", - chainId: 5, - chainIdHex: '0x5', - rpcUrl: [ - `https://goerli.infura.io/v3/${INFURA_ID}`, - `https://goerli.gateway.tenderly.co`, - `https://rpc.ankr.com/eth_goerli`, - ], - transaction: `https://goerli.etherscan.io/tx/`, - blockExplorerUrl: `https://goerli.etherscan.io/`, - symbol: 'ETH', - tokenName: 'ETH', - }, - L2: { - name: "BOBA Goerli L2", - chainId: 2888, - chainIdHex: '0xB48', - rpcUrl: `https://goerli.boba.network`, - blockExplorer: `https://testnet.bobascan.com/`, - transaction: `https://testnet.bobascan.com/tx/`, - blockExplorerUrl: `https://testnet.bobascan.com/`, - symbol: 'ETH', - tokenName: 'ETH', - }, - payloadForL1SecurityFee: { - from: '0x122816e7A7AeB40601d0aC0DCAA8402F7aa4cDfA', - to: '0x4df04E20cCd9a8B82634754fcB041e86c5FF085A', - value: '0x174876e800', - data: - '0x7ff36ab500000000000000000000000000000000000000000000000003939808cc6852cc0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000122816e7a7aeb40601d0ac0dcaa8402f7aa4cdfa0000000000000000000000000000000000000000000000000000008c14b4a17a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000deaddeaddeaddeaddeaddeaddeaddeaddead00000000000000000000000000004204a0af0991b2066d2d617854d5995714a79132', - }, - payloadForFastDepositBatchCost: { - from: '0x5E7a06025892d8Eef0b5fa263fA0d4d2E5C3B549', - to: '0x12F8d1cD442cf1CF94417cE6309c6D2461Bd91a3', - value: '0x038d7ea4c68000', - data: - '0xa44c80e3000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000020000000000000000000000006a6676813d3d4317442cf84667425c13553f4a760000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038d7ea4c68000' - }, - gasEstimateAccount: `0xdb5a187FED81c735ddB1F6E47F28f2A5F74639b2`, - twitterFaucetPromotionText: "https://twitter.com/intent/tweet?text=I%27m%20developing%20on%20Boba%20Network%20" - }, - Mainnet: { - OMGX_WATCHER_URL: `https://api-watcher.mainnet.boba.network/`, - VERIFIER_WATCHER_URL: `https://api-verifier.mainnet.boba.network/`, - META_TRANSACTION: `https://api-meta-transaction.mainnet.boba.network/`, - MM_Label: `Mainnet`, - addressManager: `0x8376ac6C3f73a25Dd994E0b0669ca7ee0C02F089`, - L1: { - name: "Mainnet", - chainId: 1, - chainIdHex: '0x1', - rpcUrl: [ - `https://mainnet.infura.io/v3/${INFURA_ID}`, - `https://rpc.ankr.com/eth`, - `http://gateway.tenderly.co/public/boba-ethereum`, - `https://cloudflare-eth.com`, - ], - transaction: ` https://etherscan.io/tx/`, - blockExplorerUrl: `https://etherscan.io/`, - symbol: 'ETH', - tokenName: 'ETH', - }, - L2: { - name: "BOBA L2", - chainId: 288, - chainIdHex: '0x120', - rpcUrl: `https://mainnet.boba.network`, - blockExplorer: `https://bobascan.com/`, - transaction: `https://bobascan.com/tx/`, - blockExplorerUrl: `https://bobascan.com/`, - symbol: 'ETH', - tokenName: 'ETH', - }, - payloadForL1SecurityFee: { - from: '0x5E7a06025892d8Eef0b5fa263fA0d4d2E5C3B549', - to: '0x17C83E2B96ACfb5190d63F5E46d93c107eC0b514', - value: '0x38d7ea4c68000', - data: - '0x7ff36ab5000000000000000000000000000000000000000000000000132cc41aecbfbace00000000000000000000000000000000000000000000000000000000000000800000000000000000000000005e7a06025892d8eef0b5fa263fa0d4d2e5c3b54900000000000000000000000000000000000000000000000000000001c73d14500000000000000000000000000000000000000000000000000000000000000002000000000000000000000000deaddeaddeaddeaddeaddeaddeaddeaddead00000000000000000000000000005008f837883ea9a07271a1b5eb0658404f5a9610', - }, - payloadForFastDepositBatchCost: { - from: '0x5E7a06025892d8Eef0b5fa263fA0d4d2E5C3B549', - to: '0x1A26ef6575B7BBB864d984D9255C069F6c361a14', - value: '0x038d7ea4c68000', - data: - '0xa44c80e30000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000042bbfa2e77757c645eeaad1655e0911a7553efbc0000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038d7ea4c68000' - }, - gasEstimateAccount: `0xdb5a187FED81c735ddB1F6E47F28f2A5F74639b2`, - twitterFaucetPromotionText: "https://twitter.com/intent/tweet?text=I%27m%20developing%20on%20Boba%20Network%20" - } -} diff --git a/packages/boba/gateway/src/util/network/config/local.js b/packages/boba/gateway/src/util/network/config/local.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/boba/gateway/src/util/network/network.util.ts b/packages/boba/gateway/src/util/network/network.util.ts deleted file mode 100644 index 126552097c..0000000000 --- a/packages/boba/gateway/src/util/network/network.util.ts +++ /dev/null @@ -1,253 +0,0 @@ -import { BigNumberish, providers } from 'ethers' - -import EthereumIcon from 'components/icons/chain/L1/EthereumIcon' -import BNBIcon from 'components/icons/chain/L1/BNBIcon' -import AvalancheIcon from 'components/icons/chain/L1/AvalancheIcon' - -import BobaIcon from 'components/icons/chain/L2/BobaIcon' -import BobaBNBIcon from 'components/icons/chain/L2/BobaBNBIcon' -import BobaAvaxIcon from 'components/icons/chain/L2/BobaAvaxIcon' - -import { ethereumConfig } from './config/ethereum' -import { bnbConfig } from './config/bnb' -import { avaxConfig } from './config/avax' -import { Layer, LAYER } from 'util/constant' - -export const L1_ICONS = { - ethereum: EthereumIcon, - bnb: BNBIcon, - avax: AvalancheIcon, -} - -export const L2_ICONS = { - ethereum: BobaIcon, - bnb: BobaBNBIcon, - avax: BobaAvaxIcon, -} - -export const NETWORK_TYPE = { - MAINNET: 'Mainnet', - TESTNET: 'Testnet', -} - -export const NETWORK = { - ETHEREUM: 'ETHEREUM', - BNB: 'BNB', - AVAX: 'AVAX', -} - -export const CHAIN_ID_LIST = { - 5: { - networkType: NETWORK_TYPE.TESTNET, - chain: NETWORK.ETHEREUM, - layer: LAYER.L1, - name: 'Goerli', - }, - 2888: { - networkType: NETWORK_TYPE.TESTNET, - chain: NETWORK.ETHEREUM, - layer: LAYER.L2, - name: 'Boba Goerli', - }, - 1: { - networkType: NETWORK_TYPE.MAINNET, - chain: NETWORK.ETHEREUM, - layer: LAYER.L1, - name: 'Ethereum', - }, - 288: { - networkType: NETWORK_TYPE.MAINNET, - chain: NETWORK.ETHEREUM, - layer: LAYER.L2, - name: 'Boba Eth', - }, - // TODO: Remove Avax once down - 43113: { - networkType: NETWORK_TYPE.TESTNET, - chain: NETWORK.AVAX, - layer: LAYER.L1, - name: 'Fuji', - }, - 4328: { - networkType: NETWORK_TYPE.TESTNET, - chain: NETWORK.AVAX, - layer: LAYER.L2, - name: 'Boba Fuji', - }, - 43114: { - networkType: NETWORK_TYPE.MAINNET, - chain: NETWORK.AVAX, - layer: LAYER.L1, - name: 'Avax', - }, - 43288: { - networkType: NETWORK_TYPE.MAINNET, - chain: NETWORK.AVAX, - layer: LAYER.L2, - name: 'Boba Avax', - }, - 97: { - networkType: NETWORK_TYPE.TESTNET, - chain: NETWORK.BNB, - layer: LAYER.L1, - name: 'Bnb Testnet', - }, - 9728: { - networkType: NETWORK_TYPE.TESTNET, - chain: NETWORK.BNB, - layer: LAYER.L2, - name: 'Boba Bnb Testnet', - }, - 56: { - networkType: NETWORK_TYPE.MAINNET, - chain: NETWORK.BNB, - layer: LAYER.L1, - name: 'Bnb', - }, - 56288: { - networkType: NETWORK_TYPE.MAINNET, - chain: NETWORK.BNB, - layer: LAYER.L2, - name: 'Boba Bnb', - }, -} - -export interface INetwork { - icon: string - chain: string - label: string - key: string - name: { l1: string; l2: string } - chainId: { [Layer.L1]: BigNumberish; [Layer.L2]: BigNumberish } -} - -export const NetworkList: { Mainnet: INetwork[]; Testnet: INetwork[] } = { - Mainnet: [ - { - icon: 'ethereum', - chain: NETWORK.ETHEREUM, - label: 'Ethereum <> Boba ETH', - key: 'ethereum', - name: { - l1: 'Ethereum', - l2: 'Boba ETH', - }, - chainId: { [Layer.L1]: '1', [Layer.L2]: '288' }, - }, - { - icon: 'bnb', - chain: NETWORK.BNB, - label: 'BNB <> Boba', - key: 'bnb', - name: { - l1: 'Binance Smart Chain', - l2: 'Boba BNB', - }, - chainId: { [Layer.L1]: '56', [Layer.L2]: '56288' }, - }, - { - icon: 'avax', - chain: NETWORK.AVAX, - label: 'Avalanche <> Boba', - key: 'avax', - name: { - l1: 'Avalanche Mainnet C-Chain', - l2: 'Boba Avalanche', - }, - chainId: { [Layer.L1]: '43114', [Layer.L2]: '43288' }, - }, - ], - Testnet: [ - { - icon: 'ethereum', - chain: NETWORK.ETHEREUM, - label: 'Ethereum (Goerli) <> Boba (Goerli)', - key: 'ethereum', - name: { - l1: 'Ethereum (Goerli)', - l2: 'Boba (Goerli)', - }, - chainId: { [Layer.L1]: '5', [Layer.L2]: '2888' }, - }, - { - icon: 'bnb', - chain: NETWORK.BNB, - label: 'BNB (Testnet) <> Boba', - key: 'bnb', - name: { - l1: 'BNB Testnet', - l2: 'Boba BNB Testnet', - }, - chainId: { [Layer.L1]: '97', [Layer.L2]: '9728' }, - }, - { - icon: 'avax', - chain: NETWORK.AVAX, - label: 'Fuji (Testnet) <> Boba', - key: 'avax', - name: { - l1: 'Fuji Testnet', - l2: 'Boba Fuji Testnet', - }, - chainId: { [Layer.L1]: '43113', [Layer.L2]: '4328' }, - }, - ], -} - -export const AllNetworkConfigs = { - [NETWORK.ETHEREUM]: ethereumConfig, - [NETWORK.BNB]: bnbConfig, - [NETWORK.AVAX]: avaxConfig, -} - -export const rpcUrls = Object.values(AllNetworkConfigs).reduce( - (networkConfigs, networkConfig) => { - networkConfigs[networkConfig.Mainnet.L1.chainId] = - networkConfig.Mainnet.L1.rpcUrl[0] - networkConfigs[networkConfig.Mainnet.L2.chainId] = - networkConfig.Mainnet.L2.rpcUrl - networkConfigs[networkConfig.Testnet.L1.chainId] = - networkConfig.Testnet.L1.rpcUrl[0] - networkConfigs[networkConfig.Testnet.L2.chainId] = - networkConfig.Testnet.L2.rpcUrl - return networkConfigs - }, - {} -) - -export const getNetworkDetail = ({ network, networkType }) => { - return AllNetworkConfigs[network][networkType] -} - -export const getRpcUrlByChainId = (chainId): string => { - const network = CHAIN_ID_LIST[chainId] - return getRpcUrl({ - network: network.chain, - layer: network.layer, - networkType: network.networkType, - }) -} - -export const getRpcUrl = ({ network, networkType, layer }): string => { - const rpcs = AllNetworkConfigs[network][networkType][layer]?.rpcUrl - let randomRpc = rpcs - if (Array.isArray(rpcs)) { - randomRpc = rpcs[Math.floor(Math.random() * rpcs.length)] - } - return randomRpc -} - -export const getBlockExplorerUrl = ({ network, networkType, layer }) => { - return AllNetworkConfigs[network][networkType][layer]?.blockExplorerUrl -} - -export const pingRpcUrl = async (rpcUrl) => { - const provider = new providers.JsonRpcProvider(rpcUrl) - try { - await provider.getBlockNumber() - return true - } catch (e) { - console.log(`Error pinging Rpc Url: ${rpcUrl}`) - return false - } -} diff --git a/packages/boba/gateway/src/util/nftImage.js b/packages/boba/gateway/src/util/nftImage.js deleted file mode 100644 index a7516ff6cb..0000000000 --- a/packages/boba/gateway/src/util/nftImage.js +++ /dev/null @@ -1,86 +0,0 @@ -/* eslint-disable quotes */ -/* -Copyright 2021-present Boba Network. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ -import axios from 'axios'; - -const isIpfsUrl = (url) =>{ - return !!url.includes('ipfs://') -} - -const getIpfsUrl = (url) => { - let payload = url.split('://')[1]; - return `https://ipfs.io/ipfs/${payload}` -} - -export const getNftImageUrl = async (url) => { - - try { - - if(url.substring(0,29) === 'data:application/json;base64,') { // we have an svg - const json = Buffer.from(url.substring(29), "base64").toString() - const resultSVG = JSON.parse(json) - return { - url: resultSVG.image_data, - meta: { - attributes: resultSVG.attributes, - traits: [], - collection: resultSVG.description, - rank: '', - id: '', - rarity_score: '', - name: resultSVG.name, - } - } - } - - let URL = !!isIpfsUrl(url) ? getIpfsUrl(url) : url - let res = await axios.get(URL) - - if (res.headers && res.headers['content-type'].includes('application/json')) { - - const { - image, - attributes = [], - traits = [], - collection = '', - rank = '', - id = '', - rarity_score = '', - name = '' - } = res.data - - return { - url: !!isIpfsUrl(image) ? getIpfsUrl(image) : image, - meta: { - attributes, - traits, - collection, - rank, - id, - rarity_score, - name - } - } - - } else { - return { url } - } - } catch (error) { - // In case of error returning same url - // As seems like some time it can be cors for images. - console.log('Error while loading NFT image url', error.message); - return { url } - } -} diff --git a/packages/boba/gateway/src/util/objectManipulation.ts b/packages/boba/gateway/src/util/objectManipulation.ts deleted file mode 100644 index a9d01b21e3..0000000000 --- a/packages/boba/gateway/src/util/objectManipulation.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const ValidValuesFromArray = (array: any): any[] => { - return array.filter((element: any) => element) -} diff --git a/packages/boba/gateway/src/util/poolDetails.js b/packages/boba/gateway/src/util/poolDetails.js deleted file mode 100644 index 6a66878f7e..0000000000 --- a/packages/boba/gateway/src/util/poolDetails.js +++ /dev/null @@ -1,23 +0,0 @@ -const POOL_DETAIL_MAPPING = { - "0xcd14af5d13c91316127a0234c4fE7d72dA9D76e8": { - name: 'BOBA-ETH', - description: 'olongswap LP', - }, - "0xE20EFfA9eDC92ef5a5Cf715b2f11f7Eaa0Ea40FB": { - name: 'BOBA-ETH', - description: 'olongswap LP', - }, - "0x2d537a22a44999Bf150b71dC6CBb7aBE94797636": { - name: 'BOBA-ETH', - description: 'olongswap LP', - }, - "0xbD20F6F5F1616947a39E11926E78ec94817B3931": { - name: 'BOBA-ETH', - description: 'olongswap LP', - }, -} - - -export const getPoolDetail = (poolId) => { - return POOL_DETAIL_MAPPING[ poolId ] -} diff --git a/packages/boba/gateway/tsconfig.json b/packages/boba/gateway/tsconfig.json deleted file mode 100644 index ccf5b36a6c..0000000000 --- a/packages/boba/gateway/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "compilerOptions": { - "target": "es2016", - "module": "esnext", - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "strict": true, - "skipLibCheck": true, - "lib": [ - "dom", - "dom.iterable", - "esnext", - ], - "allowJs": true, - "allowSyntheticDefaultImports": true, - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "noImplicitAny": false, - "jsx": "react", - "baseUrl": "src", - "types": ["jest", "testing-library__jest-dom"], - }, - "exclude": [ - "node_modules", - "types/custom.d.ts", - ], - "include": [ - "src" - ] -} diff --git a/packages/boba/register/bin/deploy.ts b/packages/boba/register/bin/deploy.ts index e526238fd1..bd38d36ff1 100644 --- a/packages/boba/register/bin/deploy.ts +++ b/packages/boba/register/bin/deploy.ts @@ -1,5 +1,5 @@ import { Wallet, providers } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { DeployFunction, DeploymentSubmission } from 'hardhat-deploy/dist/types' import { Contract, ContractFactory } from 'ethers' import { Provider } from '@ethersproject/abstract-provider' diff --git a/packages/boba/register/package.json b/packages/boba/register/package.json index f56762cbe1..cc3017de83 100644 --- a/packages/boba/register/package.json +++ b/packages/boba/register/package.json @@ -1,8 +1,8 @@ { - "name": "@boba/register", - "version": "0.0.1", + "name": "@bobanetwork/register", + "version": "0.0.2", "description": "BOBA Smart Contracts Registration", - "private": true, + "private": false, "author": "OMG", "license": "MIT", "scripts": { @@ -11,7 +11,7 @@ "deploy": "ts-node \"./bin/deploy.ts\"" }, "dependencies": { - "@eth-optimism/contracts": "0.5.11", + "@bobanetwork/core_contracts": "0.5.13", "@eth-optimism/core-utils": "^0.8.1", "@ethersproject/abstract-provider": "^5.5.0", "@ethersproject/abstract-signer": "^5.5.0", diff --git a/packages/boba/teleportation/.env.example b/packages/boba/teleportation/.env.example index f9418d3a29..d8ed3df937 100644 --- a/packages/boba/teleportation/.env.example +++ b/packages/boba/teleportation/.env.example @@ -9,6 +9,13 @@ TELEPORTATION_AWS_KMS_SECRET_KEY= TELEPORTATION_AWS_KMS_KEY_ID= TELEPORTATION_AWS_KMS_ENDPOINT= TELEPORTATION_AWS_KMS_REGION= +# TBD best amount to airdrop +TELEPORTATION_AIRDROP_GAS_AMOUNT_WEI=500000000000000 +# TBD min Usd value +TELEPORTATION_AIRDROP_MIN_USD_VALUE=15 +# TBD +TELEPORTATION_AIRDROP_COOLDOWN_SECONDS=86400 +TELEPORTATION_AIRDROP_ENABLED=false # Optional TELEPORTATION_POLLING_INTERVAL= TELEPORTATION_BLOCK_RANGE_PER_POLLING= diff --git a/packages/boba/teleportation/README.md b/packages/boba/teleportation/README.md index 93c18e3eda..80d725a4d4 100644 --- a/packages/boba/teleportation/README.md +++ b/packages/boba/teleportation/README.md @@ -60,3 +60,23 @@ Audits outstanding. ## User flow / Dev flow: ![TeleportationFlow](https://github.com/bobanetwork/boba/assets/28724551/1c5fceb8-126d-42d1-92b4-59ec5ed9ad71) + +--- + +## Contract params +This section describes how whitelisted routes between networks can be configured. By default no asset can be bridged, not even the native asset - all need to be explicitly whitelisted. + +Asset support is configured on-chain on the Teleportation contract via +`function addSupportedToken(address _token, uint32 _toChainId, uint256 _minDepositAmount, uint256 _maxDepositAmount, uint256 _maxTransferAmountPerDay)`. + +### Indicate support +Support for an asset can be shut down and re-activated at any time (yes|no value). + +### Minimum Deposit Amount +The minimum amount that needs to be deposited in order to be bridged. The value refers to the asset to be bridged (e.g. ETH or BOBA tokens) and will revert for transactions that do not exceed this threshold (>=). + +### Maximum Deposit Amount +The maximum amount that can be deposited within one single bridge operation. The value refers to the asset that is being bridged and will revert for transactions that exceed this value. + +### Maximum Amount Per Day +The maximum amount per day limits how many units of the asset to be bridged can be moved to the corresponding network per day. diff --git a/packages/boba/teleportation/SECURITY.md b/packages/boba/teleportation/SECURITY.md new file mode 100644 index 0000000000..6d07ca8b83 --- /dev/null +++ b/packages/boba/teleportation/SECURITY.md @@ -0,0 +1,23 @@ +# Light Bridge +**How does the light bridge work currently?** +Currently, the funds are distributed on the destination network when the backend service on AWS calls a smart contract function. At this time, the funds are then being transferred from the EOA/Disburser wallet that is the same account calling the smart contract function.The private key of this account is currently managed through AWS KMS: +[![](https://a0.awsstatic.com/libra-css/images/site/fav/favicon.ico) AWS Key Management Service](https://aws.amazon.com/de/kms/) + +**What's the issue?** +With the multi-sig approach Ocean suggested, we would need to rewrite the already audited Teleportation contract as well as the backend service. + +**Why did we choose AWS KMS over other approaches?** +We already had a version of Teleportation before that was using a regular EOA for distribution. Early on, it was decided to move this key into AWS KMS to sign transactions. + +**What are the options?** +An acceptable option could be to use the multi-sigs to manage the allocated bridge funds as extra layer of security. Depending on the use of the Light bridge we will transfer some lower amount to that AWS KMS secured EOAccount.Feedback welcome! + +**Disburser Wallet vs. Owner wallet** +Ensure Disburser wallet and Owner wallet are not the same accounts. The disburser wallet is responsible for distributing funds, the owner wallet for withdrawing user funds. + +## FAQ +- An important factor is the ability to quickly pull funds if any issues come up. Also, if it’s pulled, where will it be sent to? +- The backend service is basically watching the network for new user deposits and takes a chunk of these events and then calls the smart contract function to distribute the funds accordingly.If we have multi-sigs managing e.g. 80% of the allocated funds (or whatever percentage is the best trade off), then these funds would be independently secured from the bridge to provide an extra layer of security. +- The funds that are send from this multi-sig to the EOA/Disburser wallet are then secured through the key management system of Amazon (KMS).Basically, if any issues arise we are always at maximum at risk of the AWS KMS managed account (this private key is also not owned by anyone) and is directly used for signing on the backend service. +- User deposits are moved to the Teleportation contract itself, and can be pulled by a separate owner account. +- Funds on the disburser wallet can also be pulled any time if we want to, since we can sign transactions with AWS KMS. Could even prepare a quick script for that so that we can react quickly. diff --git a/packages/boba/teleportation/package.json b/packages/boba/teleportation/package.json index 34318fa3e7..4fbb9e919e 100644 --- a/packages/boba/teleportation/package.json +++ b/packages/boba/teleportation/package.json @@ -1,5 +1,5 @@ { - "name": "@boba/teleportation", + "name": "@bobanetwork/teleportation", "version": "1.0.0", "description": "The teleportation between L2s and L1s", "main": "dist/src/index", @@ -20,7 +20,7 @@ }, "license": "MIT", "devDependencies": { - "@boba/contracts": "0.0.1", + "@bobanetwork/contracts": "0.0.2", "@eth-optimism/core-utils": "0.8.1", "@nomiclabs/hardhat-ethers": "^2.0.2", "@nomiclabs/hardhat-waffle": "^2.0.1", @@ -37,9 +37,9 @@ "dependencies": { "@aws-sdk/client-kms": "^3.363.0", "@eth-optimism/common-ts": "0.2.2", - "@eth-optimism/contracts": "0.5.11", + "@bobanetwork/core_contracts": "0.5.12", + "@ethereumjs/common": "^3.2.0", "@ethereumjs/tx": "4.2.0", - "@ethereumjs/common": "^3.2.0", "@ethersproject/keccak256": "^5.7.0", "asn1.js": "^5.4.1", "bcfg": "^0.2.1", diff --git a/packages/boba/teleportation/src/data-source.ts b/packages/boba/teleportation/src/data-source.ts index 02d529e66d..d8fcdc8e5c 100644 --- a/packages/boba/teleportation/src/data-source.ts +++ b/packages/boba/teleportation/src/data-source.ts @@ -4,6 +4,7 @@ import { HistoryData } from './entities/HistoryData.entity' import * as postgres from 'pg' // keep depcheck (db driver) import dotenv from 'dotenv' +import {LastAirdrop} from "./entities/LastAirdrop.entity"; dotenv.config() @@ -16,9 +17,10 @@ export const AppDataSource = new DataSource({ database: process.env.TELEPORTATION_POSTGRES_DB ?? 'postgres', synchronize: false, logging: false, - entities: [HistoryData], + entities: [HistoryData, LastAirdrop], migrations: [], subscribers: [], }) export const historyDataRepository = AppDataSource.getRepository(HistoryData) +export const lastAirdropRepository = AppDataSource.getRepository(LastAirdrop) diff --git a/packages/boba/teleportation/src/entities/LastAirdrop.entity.ts b/packages/boba/teleportation/src/entities/LastAirdrop.entity.ts new file mode 100644 index 0000000000..499ad1a769 --- /dev/null +++ b/packages/boba/teleportation/src/entities/LastAirdrop.entity.ts @@ -0,0 +1,12 @@ +import { Entity, Column } from 'typeorm' +import { PrimaryColumn } from 'typeorm/decorator/columns/PrimaryColumn' + +@Entity({ name: 'last_airdrop' }) +export class LastAirdrop { + /** @dev Chain independent to be more resilient */ + @PrimaryColumn({ type: 'varchar', name: 'wallet_addr' }) + walletAddr: string + + @Column({ type: 'int', name: 'block_timestamp' }) + blockTimestamp: number +} diff --git a/packages/boba/teleportation/src/exec/run.ts b/packages/boba/teleportation/src/exec/run.ts index 4fde48be34..8c8b9d3905 100644 --- a/packages/boba/teleportation/src/exec/run.ts +++ b/packages/boba/teleportation/src/exec/run.ts @@ -14,6 +14,8 @@ import { ChainInfo, SupportedAssets } from '../utils/types' import { AppDataSource } from '../data-source' import { HistoryData } from '../entities/HistoryData.entity' import { Init1687802800701 } from '../migrations/1687802800701-00_Init' +import {LastAirdrop} from "../entities/LastAirdrop.entity"; +import {LastAirdrop1687802800701} from "../migrations/1687802800701-01_LastAirdrop"; dotenv.config() @@ -23,8 +25,8 @@ const main = async () => { migrationsRun: true, logging: false, synchronize: false, - entities: [HistoryData], - migrations: [Init1687802800701], + entities: [HistoryData, LastAirdrop], + migrations: [Init1687802800701, LastAirdrop1687802800701], }) await AppDataSource.initialize() // initialize DB connection } @@ -60,6 +62,22 @@ const main = async () => { 'teleportation-aws-kms-endpoint', env.TELEPORTATION_AWS_KMS_ENDPOINT ) + const TELEPORTATION_AIRDROP_GAS_AMOUNT_WEI = config.str( + 'teleportation-airdrop-gas-amount-wei', + env.TELEPORTATION_AIRDROP_GAS_AMOUNT_WEI || '100000000000000' // 0.0001 eth + ) + const TELEPORTATION_AIRDROP_MIN_USD_VALUE = config.str( + 'teleportation-airdrop-min-usd-value', + env.TELEPORTATION_AIRDROP_MIN_USD_VALUE || '15' + ) + const TELEPORTATION_AIRDROP_COOLDOWN_SECONDS = config.str( + 'teleportation-airdrop-cooldown-seconds', + env.TELEPORTATION_AIRDROP_COOLDOWN_SECONDS || '86400' + ) + const TELEPORTATION_AIRDROP_ENABLED = config.bool( + 'teleportation-airdrop-enabled', + env.TELEPORTATION_AIRDROP_ENABLED.toLowerCase() === "true" || false + ) // Optional const POLLING_INTERVAL = config.uint( @@ -122,6 +140,11 @@ const main = async () => { awsKmsRegion: TELEPORTATION_AWS_KMS_REGION, awsKmsEndpoint: TELEPORTATION_AWS_KMS_ENDPOINT }, + airdropConfig: { + airdropAmountWei: TELEPORTATION_AIRDROP_GAS_AMOUNT_WEI, + airdropCooldownSeconds: TELEPORTATION_AIRDROP_COOLDOWN_SECONDS, + airdropEnabled: TELEPORTATION_AIRDROP_ENABLED, + } }) await service.start() diff --git a/packages/boba/teleportation/src/migrations/1687802800701-01_LastAirdrop.ts b/packages/boba/teleportation/src/migrations/1687802800701-01_LastAirdrop.ts new file mode 100644 index 0000000000..89d58de672 --- /dev/null +++ b/packages/boba/teleportation/src/migrations/1687802800701-01_LastAirdrop.ts @@ -0,0 +1,11 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class LastAirdrop1687802800701 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`CREATE TABLE IF NOT EXISTS last_airdrop (wallet_addr varchar NOT NULL, block_timestamp int NULL, PRIMARY KEY (wallet_addr))`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropTable('last_airdrop', true) + } +} diff --git a/packages/boba/teleportation/src/service.ts b/packages/boba/teleportation/src/service.ts index 718cbb973b..147764b52d 100644 --- a/packages/boba/teleportation/src/service.ts +++ b/packages/boba/teleportation/src/service.ts @@ -1,20 +1,20 @@ /* Imports: External */ import { - BigNumber, + BigNumber, BigNumberish, constants as ethersConstants, - Contract, - EventFilter, + Contract, ethers, + EventFilter, PopulatedTransaction, providers, Wallet, } from 'ethers' -import { orderBy } from 'lodash' +import {orderBy} from 'lodash' import 'reflect-metadata' /* Imports: Internal */ -import { sleep } from '@eth-optimism/core-utils' -import { BaseService } from '@eth-optimism/common-ts' -import { getContractFactory } from '@eth-optimism/contracts' -import { getBobaContractAt } from '@boba/contracts' +import {sleep} from '@eth-optimism/core-utils' +import {BaseService} from '@eth-optimism/common-ts' +import {getContractFactory} from '@bobanetwork/core_contracts' +import {getBobaContractAt} from '@bobanetwork/contracts' /* Imports: Interface */ import { @@ -24,9 +24,11 @@ import { Disbursement, SupportedAssets, } from './utils/types' -import { HistoryData } from './entities/HistoryData.entity' -import { historyDataRepository } from './data-source' -import { IKMSSignerConfig, KMSSigner } from './utils/kms-signing' +import {HistoryData} from './entities/HistoryData.entity' +import {historyDataRepository, lastAirdropRepository} from './data-source' +import {IKMSSignerConfig, KMSSigner} from './utils/kms-signing' +import {Asset, BobaChains} from "./utils/chains"; +import {LastAirdrop} from "./entities/LastAirdrop.entity"; interface TeleportationOptions { l2RpcProvider: providers.StaticJsonRpcProvider @@ -47,6 +49,15 @@ interface TeleportationOptions { blockRangePerPolling: number awsConfig: IKMSSignerConfig + + airdropConfig?: { + /** Amount of native gas airdropped to user when conditions are met */ + airdropAmountWei?: BigNumberish, + /** Amount of seconds to wait after previous airdrop */ + airdropCooldownSeconds?: BigNumberish, + /** Define if airdrop is enabled on this network */ + airdropEnabled: boolean + } } const optionSettings = {} @@ -88,7 +99,7 @@ export class TeleportationService extends BaseService { // check the disburser wallet is the disburser of the contract const disburserAddress = await this.state.Teleportation.disburser() const kmsSignerAddress = await this.state.KMSSigner.getSignerAddr() - if (disburserAddress.toLowerCase() !== kmsSignerAddress.toLowerCase()) { + if (!this.options.awsConfig.disableDisburserCheck && disburserAddress.toLowerCase() !== kmsSignerAddress.toLowerCase()) { throw new Error( `Disburser wallet ${kmsSignerAddress} is not the disburser of the contract ${disburserAddress}` ) @@ -101,8 +112,11 @@ export class TeleportationService extends BaseService { this.state.supportedChains = [] this.state.depositTeleportations = [] const bobaTokenContractAddr = Object.keys(this.options.ownSupportedAssets).find( - (k) => this.options.ownSupportedAssets[k?.toLowerCase()] === 'BOBA' + (k) => this.options.ownSupportedAssets[k?.toLowerCase()] === Asset.BOBA ) + if (!bobaTokenContractAddr) { + this.logger.error(`Could not find BOBA contract address to check for support: ${JSON.stringify(this.options.ownSupportedAssets)}`) + } for (const chain of this.options.selectedBobaChains) { try { @@ -335,7 +349,7 @@ export class TeleportationService extends BaseService { const disburseTxUnsigned = await this.state.Teleportation.populateTransaction.disburseAsset( slicedDisbursement, - { value: nativeValue } + {value: nativeValue} ) const disburseTx = await this.state.KMSSigner.sendTxViaKMS( this.state.Teleportation.provider, @@ -353,12 +367,78 @@ export class TeleportationService extends BaseService { disbursement )} - latestBlock: ${latestBlock}` ) + await this._putDepositInfo(chainId, latestBlock) + + // Only do on boba l2 + if (this.options.airdropConfig?.airdropEnabled) { + await this._airdropGas(disbursement, latestBlock) + } else { + this.logger.info(`Gas airdrop is disabled on chainId: ${chainId}.`) + } } catch (e) { this.logger.error(e) } } + /** @dev Checks if major airdrop eligibility criteria has been met such as not bridging native, has no gas on destination network, bridges enough value, .. */ + async _fulfillsAirdropConditions(disbursement: Disbursement) { + const nativeBalance = await this.state.Teleportation.provider.getBalance(disbursement.addr) + if (nativeBalance.gt(this.options.airdropConfig.airdropAmountWei)) { + this.logger.info(`Not airdropping as wallet has native balance on destination network: ${nativeBalance}, wallet: ${disbursement.addr}`) + return false; + } + if (disbursement.token === ethers.constants.AddressZero) { + this.logger.info(`Not airdropping as wallet is briding asset that is used to pay for gas on the destination network: ${disbursement.token}, wallet: ${disbursement.addr}`) + return false; + } + this.logger.info(`Airdropping for: ${JSON.stringify(disbursement)}`) + return true; + } + + async _airdropGas(disbursements: Disbursement[], latestBlock: number) { + const provider = this.state.Teleportation.provider + + for (const disbursement of disbursements) { + + if (await this._fulfillsAirdropConditions(disbursement)) { + const lastAirdrop = await lastAirdropRepository.findOneBy({walletAddr: disbursement.addr}) + const unixTimestamp = Math.floor(Date.now() / 1000) + + const airdropCooldownSeconds = this.options.airdropConfig?.airdropCooldownSeconds ?? '86400' + if (!lastAirdrop || BigNumber.from(airdropCooldownSeconds).lt(unixTimestamp - lastAirdrop.blockTimestamp)) { + + let nativeAmount = this.options.airdropConfig?.airdropAmountWei + if (!nativeAmount) { + // default + nativeAmount = ethers.utils.parseEther('0.0005') + } + + const airdropTx = await this.state.KMSSigner.sendTxViaKMS( + provider, + disbursement.addr, + BigNumber.from(nativeAmount.toString()), // native amount, converge types + {data: '0x'} as PopulatedTransaction // native transfer + ) + await airdropTx.wait() + + // Save to db + const blockNumber = (await this.state.Teleportation.provider.getBlock('latest'))?.timestamp + const newAirdrop = new LastAirdrop(); + newAirdrop.blockTimestamp = blockNumber; + newAirdrop.walletAddr = disbursement.addr; + await lastAirdropRepository.save(newAirdrop) + + this.logger.info(`Successfully airdropped gas to ${disbursement.addr}, amount: ${nativeAmount}.`) + } else { + this.logger.info(`Cool down, user already got an airdrop within the cool down period with this wallet: ${disbursement.addr}.`) + } + } else { + this.logger.info(`Not airdropping to ${disbursement.addr} as not eligible: ${JSON.stringify(disbursement)}`) + } + } + } + // get events from the contract async _getEvents( contract: Contract, @@ -428,10 +508,10 @@ export class TeleportationService extends BaseService { historyData.chainId = chainId historyData.blockNo = latestBlock if ( - await historyDataRepository.findOneBy({ chainId: historyData.chainId }) + await historyDataRepository.findOneBy({chainId: historyData.chainId}) ) { await historyDataRepository.update( - { chainId: historyData.chainId }, + {chainId: historyData.chainId}, historyData ) } else { diff --git a/packages/boba/teleportation/src/utils/chains.ts b/packages/boba/teleportation/src/utils/chains.ts index 51dbe8f339..e49880a615 100644 --- a/packages/boba/teleportation/src/utils/chains.ts +++ b/packages/boba/teleportation/src/utils/chains.ts @@ -11,6 +11,13 @@ export interface IBobaChains { } } +export enum Asset { + ETH = 'ethereum', + BOBA = 'boba-network', + USDT = 'tether', + BNB = 'binancecoin', +} + /** * @dev Chain configs * @property supportedAssets: BOBA as fee token only supported for EOAs, since Teleporter consists of a contract & the disburser wallet (assuming ETH fee) everything with 0x0 should be fine. @@ -20,27 +27,27 @@ export const BobaChains: IBobaChains = { //#region boba_networks 288: { - url: 'https://replica.boba.network', + url: 'https://boba-ethereum.gateway.tenderly.co/1clfZoq7qEGyF4SQvF8gvI', testnet: false, name: 'Boba Ethereum Mainnet', teleportationAddress: '0xd68809330075C792C171C450B983F4D18128e9BF', height: 873302, supportedAssets: { - ['0x0000000000000000000000000000000000000000'.toLowerCase()]: 'ETH', - ['0xa18bF3994C0Cc6E3b63ac420308E5383f53120D7'.toLowerCase()]: 'BOBA', - ['0x5DE1677344D3Cb0D7D465c10b72A8f60699C062d'.toLowerCase()]: 'USDT', - ['0x68ac1623ACf9eB9F88b65B5F229fE3e2c0d5789e'.toLowerCase()]: 'BNB', + ['0x0000000000000000000000000000000000000000'.toLowerCase()]: Asset.ETH, + ['0xa18bF3994C0Cc6E3b63ac420308E5383f53120D7'.toLowerCase()]: Asset.BOBA, + ['0x5DE1677344D3Cb0D7D465c10b72A8f60699C062d'.toLowerCase()]: Asset.USDT, + ['0x68ac1623ACf9eB9F88b65B5F229fE3e2c0d5789e'.toLowerCase()]: Asset.BNB, }, }, 56288: { - url: 'https://replica.bnb.boba.network', + url: 'https://boba-bnb.gateway.tenderly.co/1clfZoq7qEGyF4SQvF8gvI', testnet: false, name: 'Boba BNB Mainnet', teleportationAddress: '0xd68809330075C792C171C450B983F4D18128e9BF', height: 3393, supportedAssets: { - ['0x4200000000000000000000000000000000000023'.toLowerCase()]: 'BNB', - ['0x0000000000000000000000000000000000000000'.toLowerCase()]: 'BOBA', + ['0x4200000000000000000000000000000000000023'.toLowerCase()]: Asset.BNB, + ['0x0000000000000000000000000000000000000000'.toLowerCase()]: Asset.BOBA, }, }, 2888: { @@ -50,35 +57,35 @@ export const BobaChains: IBobaChains = { teleportationAddress: '0xB43EE846Aa266228FeABaD1191D6cB2eD9808894', height: 40822, supportedAssets: { - ['0x0000000000000000000000000000000000000000'.toLowerCase()]: 'ETH', - ['0x4200000000000000000000000000000000000023'.toLowerCase()]: 'BOBA', + ['0x0000000000000000000000000000000000000000'.toLowerCase()]: Asset.ETH, + ['0x4200000000000000000000000000000000000023'.toLowerCase()]: Asset.BOBA, }, }, 9728: { - url: 'https://replica.testnet.bnb.boba.network', + url: 'https://boba-bnb-testnet.gateway.tenderly.co/1clfZoq7qEGyF4SQvF8gvI', testnet: true, name: 'Boba BNB Testnet', teleportationAddress: '0xf4d179d3a083Fa3Eede935FaF4C679D32d514186', height: 295353, supportedAssets: { - ['0x4200000000000000000000000000000000000023'.toLowerCase()]: 'BNB', - ['0x0000000000000000000000000000000000000000'.toLowerCase()]: 'BOBA', - ['0xc614A66f82e71758Fa7735C91dAD1088c8362f15'.toLowerCase()]: 'ETH', + ['0x4200000000000000000000000000000000000023'.toLowerCase()]: Asset.BNB, + ['0x0000000000000000000000000000000000000000'.toLowerCase()]: Asset.BOBA, + ['0xc614A66f82e71758Fa7735C91dAD1088c8362f15'.toLowerCase()]: Asset.ETH, }, }, //#endregion //#region l1 1: { - url: 'https://eth.llamarpc.com', + url: 'https://mainnet.gateway.tenderly.co/1clfZoq7qEGyF4SQvF8gvI', testnet: false, name: 'Ethereum Mainnet', teleportationAddress: '0x0', height: 17565090, supportedAssets: { - ['0x0000000000000000000000000000000000000000'.toLowerCase()]: 'ETH', - ['0x42bBFa2e77757C645eeaAd1655E0911a7553Efbc'.toLowerCase()]: 'BOBA', - ['0xdAC17F958D2ee523a2206206994597C13D831ec7'.toLowerCase()]: 'USDT', - ['0xB8c77482e45F1F44dE1745F52C74426C631bDD52'.toLowerCase()]: 'BNB', + ['0x0000000000000000000000000000000000000000'.toLowerCase()]: Asset.ETH, + ['0x42bBFa2e77757C645eeaAd1655E0911a7553Efbc'.toLowerCase()]: Asset.BOBA, + ['0xdAC17F958D2ee523a2206206994597C13D831ec7'.toLowerCase()]: Asset.USDT, + ['0xB8c77482e45F1F44dE1745F52C74426C631bDD52'.toLowerCase()]: Asset.BNB, }, }, 56: { @@ -101,10 +108,10 @@ export const BobaChains: IBobaChains = { teleportationAddress: '0x84b22166366a6f7E0cD0c3ce9998f2913Bf17A13', height: 9484025, supportedAssets: { - ['0x0000000000000000000000000000000000000000'.toLowerCase()]: 'ETH', - ['0xC2C527C0CACF457746Bd31B2a698Fe89de2b6d49'.toLowerCase()]: 'USDT', - ['0xFC1C82c5EdeB51082CF30FDDb434D2cBDA1f6924'.toLowerCase()]: 'BNB', - ['0xeCCD355862591CBB4bB7E7dD55072070ee3d0fC1'.toLowerCase()]: 'BOBA', + ['0x0000000000000000000000000000000000000000'.toLowerCase()]: Asset.ETH, + ['0xC2C527C0CACF457746Bd31B2a698Fe89de2b6d49'.toLowerCase()]: Asset.USDT, + ['0xFC1C82c5EdeB51082CF30FDDb434D2cBDA1f6924'.toLowerCase()]: Asset.BNB, + ['0xeCCD355862591CBB4bB7E7dD55072070ee3d0fC1'.toLowerCase()]: Asset.BOBA, }, }, 97: { @@ -114,9 +121,9 @@ export const BobaChains: IBobaChains = { teleportationAddress: '0x7f6a32bCaA70c65E08F2f221737612F6fC18347A', height: 32272487, supportedAssets: { - ['0x0000000000000000000000000000000000000000'.toLowerCase()]: 'BNB', - ['0x875cD11fDf085e0E11B0EE6b814b6d0b38fA554C'.toLowerCase()]: 'BOBA', - ['0xd66c6B4F0be8CE5b39D52E0Fd1344c389929B378'.toLowerCase()]: 'ETH', // WETH + ['0x0000000000000000000000000000000000000000'.toLowerCase()]: Asset.BNB, + ['0x875cD11fDf085e0E11B0EE6b814b6d0b38fA554C'.toLowerCase()]: Asset.BOBA, + ['0xd66c6B4F0be8CE5b39D52E0Fd1344c389929B378'.toLowerCase()]: Asset.ETH, // WETH }, }, //#endregion diff --git a/packages/boba/teleportation/src/utils/kms-signing.ts b/packages/boba/teleportation/src/utils/kms-signing.ts index e2fd97e81b..c40e5b73b7 100644 --- a/packages/boba/teleportation/src/utils/kms-signing.ts +++ b/packages/boba/teleportation/src/utils/kms-signing.ts @@ -13,6 +13,8 @@ export interface IKMSSignerConfig { awsKmsAccessKey: string awsKmsSecretKey: string awsKmsKeyId: string + /** @dev Should always be enabled, but can be helpful for debugging and unit tests, .. */ + disableDisburserCheck?: boolean } export class KMSSigner { diff --git a/packages/boba/turing/package.json b/packages/boba/turing/package.json index 001ed79865..24bbe953e5 100644 --- a/packages/boba/turing/package.json +++ b/packages/boba/turing/package.json @@ -1,5 +1,5 @@ { - "name": "@boba/turing-hybrid-compute", + "name": "@bobanetwork/turing-hybrid-compute", "version": "0.2.0", "description": "Hybrid Compute for Ethereum prototype", "main": "index.js", diff --git a/packages/boba/ve-boba/package.json b/packages/boba/ve-boba/package.json index d7c534b255..24e8efbee1 100644 --- a/packages/boba/ve-boba/package.json +++ b/packages/boba/ve-boba/package.json @@ -1,5 +1,5 @@ { - "name": "@boba/ve-boba", + "name": "@bobanetwork/ve-boba", "version": "0.0.1", "repository": "https://github.com/bobanetwork/boba/packages/boba/ve-boba", "author": "", diff --git a/packages/boba/ve-boba/veDao_changes/deploy/013-BobaDao.deploy.ts b/packages/boba/ve-boba/veDao_changes/deploy/013-BobaDao.deploy.ts index c0e4d29f61..b97f569325 100644 --- a/packages/boba/ve-boba/veDao_changes/deploy/013-BobaDao.deploy.ts +++ b/packages/boba/ve-boba/veDao_changes/deploy/013-BobaDao.deploy.ts @@ -1,5 +1,5 @@ /* Imports: External */ -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { DeployFunction, DeploymentSubmission } from 'hardhat-deploy/dist/types' import { Contract, ContractFactory, utils, BigNumber } from 'ethers' import { registerBobaAddress } from './000-Messenger.deploy' diff --git a/packages/boba/ve-boba/veDao_changes/integration-tests/pool_dao_actions.spec.ts b/packages/boba/ve-boba/veDao_changes/integration-tests/pool_dao_actions.spec.ts index b6d4e45caf..e26f2f1abc 100644 --- a/packages/boba/ve-boba/veDao_changes/integration-tests/pool_dao_actions.spec.ts +++ b/packages/boba/ve-boba/veDao_changes/integration-tests/pool_dao_actions.spec.ts @@ -3,22 +3,22 @@ import chaiAsPromised from 'chai-as-promised' chai.use(chaiAsPromised) import { Contract, ContractFactory, BigNumber, utils, ethers } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' -import L1BobaJson from '@boba/contracts/artifacts/contracts/DAO/governance-token/BOBA.sol/BOBA.json' -import L2BobaJson from '@boba/contracts/artifacts/contracts/standards/L2GovernanceERC20.sol/L2GovernanceERC20.json' -import xBobaJson from '@boba/contracts/artifacts/contracts/standards/xL2GovernanceERC20.sol/xL2GovernanceERC20.json' +import L1BobaJson from '@bobanetwork/contracts/artifacts/contracts/DAO/governance-token/BOBA.sol/BOBA.json' +import L2BobaJson from '@bobanetwork/contracts/artifacts/contracts/standards/L2GovernanceERC20.sol/L2GovernanceERC20.json' +import xBobaJson from '@bobanetwork/contracts/artifacts/contracts/standards/xL2GovernanceERC20.sol/xL2GovernanceERC20.json' -import L1LiquidityPoolJson from '@boba/contracts/artifacts/contracts/LP/L1LiquidityPool.sol/L1LiquidityPool.json' -import L2LiquidityPoolJson from '@boba/contracts/artifacts/contracts/LP/L2LiquidityPool.sol/L2LiquidityPool.json' +import L1LiquidityPoolJson from '@bobanetwork/contracts/artifacts/contracts/LP/L1LiquidityPool.sol/L1LiquidityPool.json' +import L2LiquidityPoolJson from '@bobanetwork/contracts/artifacts/contracts/LP/L2LiquidityPool.sol/L2LiquidityPool.json' // use a mock contract only to adjust time params freely import GovernorBravoDelegateJson from '../../artifacts/contracts/MockGovernorBravoDelegate.sol/MockGovernorBravoDelegate.json' import TimelockJson from '../../artifacts/contracts/MockTimelock.sol/MockTimelock.json' -import GovernorBravoDelegatorJson from '@boba/contracts/artifacts/contracts/DAO/governance/GovernorBravoDelegator.sol/GovernorBravoDelegator.json' +import GovernorBravoDelegatorJson from '@bobanetwork/contracts/artifacts/contracts/DAO/governance/GovernorBravoDelegator.sol/GovernorBravoDelegator.json' -import VeJson from '@boba/ve-boba/artifacts/contracts/ve.sol/ve.json' +import VeJson from '@bobanetwork/ve-boba/artifacts/contracts/ve.sol/ve.json' import { OptimismEnv } from './shared/env' diff --git a/packages/contracts/.depcheckrc b/packages/contracts/.depcheckrc index 42e4225d37..40a566d507 100644 --- a/packages/contracts/.depcheckrc +++ b/packages/contracts/.depcheckrc @@ -10,5 +10,5 @@ ignores: [ "yargs", "@ethersproject/abi", "@ethersproject/providers", - "@boba/turing-hybrid-compute" + "@bobanetwork/turing-hybrid-compute" ] diff --git a/packages/contracts/bin/take-dump.ts b/packages/contracts/bin/take-dump.ts index 21d7fc758c..66d1dbee27 100644 --- a/packages/contracts/bin/take-dump.ts +++ b/packages/contracts/bin/take-dump.ts @@ -4,7 +4,7 @@ import * as path from 'path' import * as mkdirp from 'mkdirp' import { utils, Wallet, providers } from 'ethers' -import TuringHelperJson from '@boba/turing-hybrid-compute/artifacts/contracts/TuringHelper.sol/TuringHelper.json' +import TuringHelperJson from '@bobanetwork/turing-hybrid-compute/artifacts/contracts/TuringHelper.sol/TuringHelper.json' const ensure = (value, key) => { if (typeof value === 'undefined' || value === null || Number.isNaN(value)) { diff --git a/packages/contracts/contracts/L2/predeploys/BobaTuringCredit.sol b/packages/contracts/contracts/L2/predeploys/BobaTuringCredit.sol index 8a6d776214..d34fb23011 100644 --- a/packages/contracts/contracts/L2/predeploys/BobaTuringCredit.sol +++ b/packages/contracts/contracts/L2/predeploys/BobaTuringCredit.sol @@ -6,7 +6,7 @@ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol"; /* Interface */ -import "@boba/turing-hybrid-compute/contracts/ITuringHelper.sol"; +import "@bobanetwork/turing-hybrid-compute/contracts/ITuringHelper.sol"; /** * @title BobaTuringCredit diff --git a/packages/contracts/contracts/L2/predeploys/BobaTuringCreditAltL1.sol b/packages/contracts/contracts/L2/predeploys/BobaTuringCreditAltL1.sol index 75a2cbdfa9..28180432df 100644 --- a/packages/contracts/contracts/L2/predeploys/BobaTuringCreditAltL1.sol +++ b/packages/contracts/contracts/L2/predeploys/BobaTuringCreditAltL1.sol @@ -6,7 +6,7 @@ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol"; /* Interface */ -import "@boba/turing-hybrid-compute/contracts/ITuringHelper.sol"; +import "@bobanetwork/turing-hybrid-compute/contracts/ITuringHelper.sol"; /** * @title BobaTuringCreditAltL1 diff --git a/packages/contracts/package.json b/packages/contracts/package.json index a71ee2771e..dc69917923 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -1,18 +1,22 @@ { - "name": "@eth-optimism/contracts", - "version": "0.5.11", - "description": "[Optimism] L1 and L2 smart contracts for Optimism", + "name": "@bobanetwork/core_contracts", + "version": "0.5.13", + "description": "[Optimism and Boba Network] L1 and L2 smart contracts for Optimism and Boba Network", "main": "dist/index", "types": "dist/index", "files": [ "dist/**/*.js", "dist/**/*.d.ts", "dist/types", + "deployments/", + "deployments/**/*.json", "artifacts/contracts/chugsplash/**/*.json", "artifacts/contracts/L1/**/*.json", "artifacts/contracts/L2/**/*.json", "artifacts/contracts/libraries/**/*.json", "artifacts/contracts/standards/**/*.json", + "artifacts/contracts/test-libraries/**/*.json", + "artifacts/contracts/test-helpers/**/*.json", "chugsplash", "L1", "L2", @@ -68,7 +72,7 @@ "@ethersproject/hardware-wallets": "^5.5.0" }, "devDependencies": { - "@boba/turing-hybrid-compute": "^0.2.0", + "@bobanetwork/turing-hybrid-compute": "^0.2.0", "@openzeppelin/contracts": "4.3.2", "@openzeppelin/contracts-upgradeable": "4.3.2", "@codechecks/client": "^0.1.11", diff --git a/packages/data-transport-layer/package.json b/packages/data-transport-layer/package.json index 7ae1c30c6c..a862bb413b 100644 --- a/packages/data-transport-layer/package.json +++ b/packages/data-transport-layer/package.json @@ -37,9 +37,9 @@ }, "dependencies": { "@eth-optimism/common-ts": "0.2.2", - "@eth-optimism/contracts": "0.5.11", + "@bobanetwork/core_contracts": "0.5.12", "@eth-optimism/core-utils": "0.8.1", - "@eth-optimism/sdk": "1.0.1", + "@bobanetwork/sdk": "1.0.7", "@ethersproject/providers": "^5.5.0", "@ethersproject/transactions": "^5.5.0", "@sentry/node": "^7.30.0", diff --git a/packages/data-transport-layer/src/services/l1-ingestion/handlers/sequencer-batch-appended.ts b/packages/data-transport-layer/src/services/l1-ingestion/handlers/sequencer-batch-appended.ts index 53635e1130..3ceae33018 100644 --- a/packages/data-transport-layer/src/services/l1-ingestion/handlers/sequencer-batch-appended.ts +++ b/packages/data-transport-layer/src/services/l1-ingestion/handlers/sequencer-batch-appended.ts @@ -1,6 +1,6 @@ /* Imports: External */ import { BigNumber, ethers, constants } from 'ethers' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { serialize } from '@ethersproject/transactions' import { toHexString, @@ -9,7 +9,7 @@ import { add0x, SequencerBatch, } from '@eth-optimism/core-utils' -import { SequencerBatchAppendedEvent } from '@eth-optimism/contracts/dist/types/contracts/L1/rollup/CanonicalTransactionChain' +import { SequencerBatchAppendedEvent } from '@bobanetwork/core_contracts/dist/types/contracts/L1/rollup/CanonicalTransactionChain' /* Imports: Internal */ import { MissingElementError } from './errors' diff --git a/packages/data-transport-layer/src/services/l1-ingestion/handlers/state-batch-appended.ts b/packages/data-transport-layer/src/services/l1-ingestion/handlers/state-batch-appended.ts index 19ee33ff3a..a4bd38da08 100644 --- a/packages/data-transport-layer/src/services/l1-ingestion/handlers/state-batch-appended.ts +++ b/packages/data-transport-layer/src/services/l1-ingestion/handlers/state-batch-appended.ts @@ -1,6 +1,6 @@ /* Imports: External */ -import { StateBatchAppendedEvent } from '@eth-optimism/contracts/dist/types/contracts/L1/rollup/StateCommitmentChain' -import { getContractFactory } from '@eth-optimism/contracts' +import { StateBatchAppendedEvent } from '@bobanetwork/core_contracts/dist/types/contracts/L1/rollup/StateCommitmentChain' +import { getContractFactory } from '@bobanetwork/core_contracts' import { BigNumber } from 'ethers' /* Imports: Internal */ diff --git a/packages/data-transport-layer/src/services/l1-ingestion/handlers/transaction-enqueued.ts b/packages/data-transport-layer/src/services/l1-ingestion/handlers/transaction-enqueued.ts index 4d9dabdc24..48ab0ba135 100644 --- a/packages/data-transport-layer/src/services/l1-ingestion/handlers/transaction-enqueued.ts +++ b/packages/data-transport-layer/src/services/l1-ingestion/handlers/transaction-enqueued.ts @@ -1,6 +1,6 @@ /* Imports: External */ import { BigNumber } from 'ethers' -import { TransactionEnqueuedEvent } from '@eth-optimism/contracts/dist/types/contracts/L1/rollup/CanonicalTransactionChain' +import { TransactionEnqueuedEvent } from '@bobanetwork/core_contracts/dist/types/contracts/L1/rollup/CanonicalTransactionChain' /* Imports: Internal */ import { MissingElementError } from './errors' diff --git a/packages/data-transport-layer/src/services/l1-ingestion/service.ts b/packages/data-transport-layer/src/services/l1-ingestion/service.ts index 147f3d2205..0e8793b54e 100644 --- a/packages/data-transport-layer/src/services/l1-ingestion/service.ts +++ b/packages/data-transport-layer/src/services/l1-ingestion/service.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { fromHexString, FallbackProvider } from '@eth-optimism/core-utils' import { BaseService, LegacyMetrics } from '@eth-optimism/common-ts' -import { TypedEvent } from '@eth-optimism/contracts/dist/types/common' +import { TypedEvent } from '@bobanetwork/core_contracts/dist/types/common' import { BaseProvider } from '@ethersproject/providers' import { LevelUp } from 'levelup' import { constants, Event } from 'ethers' @@ -11,7 +11,7 @@ import { isChainIDForGraph, getLatestConfirmedBlock, isMoonbeamL1, -} from '@eth-optimism/sdk' +} from '@bobanetwork/sdk' import { orderBy } from 'lodash' /* Imports: Internal */ diff --git a/packages/data-transport-layer/src/types/event-handler-types.ts b/packages/data-transport-layer/src/types/event-handler-types.ts index 6da8522e75..825ce02bd7 100644 --- a/packages/data-transport-layer/src/types/event-handler-types.ts +++ b/packages/data-transport-layer/src/types/event-handler-types.ts @@ -1,6 +1,6 @@ import { BaseProvider } from '@ethersproject/providers' import { BigNumber } from 'ethers' -import { TypedEvent } from '@eth-optimism/contracts/dist/types/common' +import { TypedEvent } from '@bobanetwork/core_contracts/dist/types/common' import { TransactionBatchEntry, diff --git a/packages/data-transport-layer/src/utils/contracts.ts b/packages/data-transport-layer/src/utils/contracts.ts index 1456321356..8d0cfbb64b 100644 --- a/packages/data-transport-layer/src/utils/contracts.ts +++ b/packages/data-transport-layer/src/utils/contracts.ts @@ -1,7 +1,7 @@ /* Imports: External */ import { constants, Contract, Signer } from 'ethers' import { BaseProvider } from '@ethersproject/providers' -import { getContractInterface } from '@eth-optimism/contracts' +import { getContractInterface } from '@bobanetwork/core_contracts' export const loadContract = ( name: string, diff --git a/packages/message-relayer/package.json b/packages/message-relayer/package.json index 2c284f786c..f8a9e94492 100644 --- a/packages/message-relayer/package.json +++ b/packages/message-relayer/package.json @@ -34,7 +34,7 @@ "@eth-optimism/common-ts": "^0.2.2", "@eth-optimism/core-utils": "^0.8.1", "@eth-optimism/ynatm": "^0.2.2", - "@eth-optimism/sdk": "1.0.1", + "@bobanetwork/sdk": "1.0.7", "@sentry/node": "^7.30.0", "bcfg": "^0.2.1", "dotenv": "^10.0.0", diff --git a/packages/message-relayer/src/service.ts b/packages/message-relayer/src/service.ts index afe5bbea56..47c7d9efb8 100644 --- a/packages/message-relayer/src/service.ts +++ b/packages/message-relayer/src/service.ts @@ -8,7 +8,7 @@ import { CrossChainMessenger, MessageStatus, ProviderLike, -} from '@eth-optimism/sdk' +} from '@bobanetwork/sdk' interface MessageRelayerOptions { /** diff --git a/packages/regenesis-surgery/package.json b/packages/regenesis-surgery/package.json index de3c1727ca..447e927e61 100644 --- a/packages/regenesis-surgery/package.json +++ b/packages/regenesis-surgery/package.json @@ -21,9 +21,9 @@ "typescript": "^4.3.5" }, "dependencies": { - "@boba/register": "0.0.1", + "@bobanetwork/register": "0.0.2", "@discoveryjs/json-ext": "^0.5.3", - "@eth-optimism/contracts": "0.5.11", + "@bobanetwork/core_contracts": "0.5.12", "@uniswap/v3-core-optimism": "^1.0.0-rc.0", "chalk": "^5.3.0", "dotenv": "^10.0.0", diff --git a/packages/regenesis-surgery/scripts/boba-contracts-verifier.ts b/packages/regenesis-surgery/scripts/boba-contracts-verifier.ts index 3bad5ce286..7e14bbe062 100644 --- a/packages/regenesis-surgery/scripts/boba-contracts-verifier.ts +++ b/packages/regenesis-surgery/scripts/boba-contracts-verifier.ts @@ -1,7 +1,7 @@ import { ethers } from 'ethers' import dotenv from 'dotenv' import * as fs from 'fs' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import chalk from 'chalk' // load token details diff --git a/packages/regenesis-surgery/scripts/boba-regenesis.ts b/packages/regenesis-surgery/scripts/boba-regenesis.ts index 788805ff92..9f0ff78f73 100644 --- a/packages/regenesis-surgery/scripts/boba-regenesis.ts +++ b/packages/regenesis-surgery/scripts/boba-regenesis.ts @@ -6,13 +6,13 @@ import chalk from 'chalk' // Load state dump from `geth dump` - format should be [{},{},{}] import rawStateDump from '../deployment/state-dump.raw.json' // State dump from /packages/contracts -import coreStateDump from '@eth-optimism/contracts/dist/dumps/state-dump.latest.json' +import coreStateDump from '@bobanetwork/core_contracts/dist/dumps/state-dump.latest.json' // Load the bytecodes of Boba and xBoba token with the correct OFFSET value import BobaAndXBobaContract from '../BobaAndXBobaContract.json' // Get contract list -import deployedContractList from '@boba/register/addresses/addressesRinkeby_0x93A96D6A5beb1F661cf052722A1424CDDA3e9418.json' +import deployedContractList from '@bobanetwork/register/addresses/addressesRinkeby_0x93A96D6A5beb1F661cf052722A1424CDDA3e9418.json' dotenv.config() diff --git a/packages/regenesis-surgery/scripts/core-contracts-verifier.ts b/packages/regenesis-surgery/scripts/core-contracts-verifier.ts index 8a12dd096e..b328930916 100644 --- a/packages/regenesis-surgery/scripts/core-contracts-verifier.ts +++ b/packages/regenesis-surgery/scripts/core-contracts-verifier.ts @@ -1,7 +1,7 @@ import { ethers } from 'ethers' import dotenv from 'dotenv' import * as fs from 'fs' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import chalk from 'chalk' dotenv.config() diff --git a/packages/regenesis-surgery/scripts/event-indexer.ts b/packages/regenesis-surgery/scripts/event-indexer.ts index df5b6bfeae..674beb97e5 100644 --- a/packages/regenesis-surgery/scripts/event-indexer.ts +++ b/packages/regenesis-surgery/scripts/event-indexer.ts @@ -3,7 +3,7 @@ import { createWriteStream } from 'fs' import dotenv from 'dotenv' import { stringifyStream } from '@discoveryjs/json-ext' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { abi as FACTORY_ABI } from '@uniswap/v3-core-optimism/artifacts-ovm/contracts/UniswapV3Factory.sol/UniswapV3Factory.json' dotenv.config() diff --git a/packages/sdk/README.md b/packages/sdk/README.md index 829d89b1b2..5e42d7e936 100644 --- a/packages/sdk/README.md +++ b/packages/sdk/README.md @@ -1,11 +1,11 @@ -# @eth-optimism/sdk +# @bobanetwork/sdk -The `@eth-optimism/sdk` package provides a set of tools for interacting with Optimism. +The `@bobanetwork/sdk` package provides a set of tools for interacting with Optimism. ## Installation ``` -npm install @eth-optimism/sdk +npm install @bobanetwork/sdk ``` ## Docs @@ -16,7 +16,7 @@ You can find auto-generated API documentation over at [sdk.optimism.io](https:// ### CrossChainMessenger -The [`CrossChainMessenger`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/sdk/src/cross-chain-messenger.ts) class simplifies the process of moving assets and data between Ethereum and Optimism. +The [`CrossChainMessenger`](https://github.com/bobanetwork/boba/blob/develop/packages/sdk/src/cross-chain-messenger.ts) class simplifies the process of moving assets and data between Ethereum and Optimism. You can use this class to, for example, initiate a withdrawal of ERC20 tokens from Optimism back to Ethereum, accurately track when the withdrawal is ready to be finalized on Ethereum, and execute the finalization transaction after the challenge period has elapsed. The `CrossChainMessenger` can handle deposits and withdrawals of ETH and any ERC20-compatible token. Detailed API descriptions can be found at [sdk.optimism.io](https://sdk.optimism.io/classes/crosschainmessenger). diff --git a/packages/sdk/package.json b/packages/sdk/package.json index d94bb22cb7..56d77d8dc9 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,7 +1,7 @@ { - "name": "@eth-optimism/sdk", - "version": "1.0.1", - "description": "[Optimism] Tools for working with Optimism", + "name": "@bobanetwork/sdk", + "version": "1.0.7", + "description": "Tools for working with Optimism and Bobanetwork", "main": "dist/index", "types": "dist/index", "files": [ @@ -32,32 +32,32 @@ "url": "https://github.com/ethereum-optimism/optimism.git" }, "devDependencies": { + "@babel/eslint-parser": "^7.18.2", "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/transactions": "^5.7.0", "@nomiclabs/hardhat-ethers": "^2.0.2", "@nomiclabs/hardhat-waffle": "^2.0.1", - "chai-as-promised": "^7.1.1", - "ethereum-waffle": "^3.4.0", - "ethers": "^5.7.0", - "hardhat": "^2.12.5", - "nyc": "^15.1.0", - "typedoc": "^0.24.7", - "mocha": "^10.0.0", - "chai": "^4.3.4", - "@babel/eslint-parser": "^7.18.2", "@typescript-eslint/eslint-plugin": "^5.45.1", "@typescript-eslint/parser": "^5.45.1", + "chai": "^4.3.4", + "chai-as-promised": "^7.1.1", "eslint-config-prettier": "^8.3.0", + "eslint-plugin-import": "^2.26.0", "eslint-plugin-jsdoc": "^46.2.6", "eslint-plugin-prefer-arrow": "^1.2.3", - "eslint-plugin-import": "^2.26.0", "eslint-plugin-prettier": "^3.4.0", "eslint-plugin-react": "^7.24.0", - "eslint-plugin-unicorn": "^32.0.1" + "eslint-plugin-unicorn": "^32.0.1", + "ethereum-waffle": "^3.4.0", + "ethers": "^5.7.0", + "hardhat": "^2.12.5", + "mocha": "^10.0.0", + "nyc": "^15.1.0", + "typedoc": "^0.24.7" }, "dependencies": { - "@eth-optimism/contracts": "0.5.11", + "@bobanetwork/core_contracts": "0.5.13", "@eth-optimism/core-utils": "0.8.1", "lodash": "^4.17.21", "merkletreejs": "^0.2.27", diff --git a/packages/sdk/src/adapters/eth-bridge.ts b/packages/sdk/src/adapters/eth-bridge.ts index 116f050a63..1cc0b24f2a 100644 --- a/packages/sdk/src/adapters/eth-bridge.ts +++ b/packages/sdk/src/adapters/eth-bridge.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ import { ethers, Overrides, BigNumber } from 'ethers' import { TransactionRequest, BlockTag } from '@ethersproject/abstract-provider' -import { predeploys } from '@eth-optimism/contracts' +import { predeploys } from '@bobanetwork/core_contracts' import { hexStringEquals } from '@eth-optimism/core-utils' import { diff --git a/packages/sdk/src/adapters/standard-bridge.ts b/packages/sdk/src/adapters/standard-bridge.ts index 17c87853d9..1e335b98c0 100644 --- a/packages/sdk/src/adapters/standard-bridge.ts +++ b/packages/sdk/src/adapters/standard-bridge.ts @@ -5,7 +5,7 @@ import { TransactionResponse, BlockTag, } from '@ethersproject/abstract-provider' -import { getContractInterface, predeploys } from '@eth-optimism/contracts' +import { getContractInterface, predeploys } from '@bobanetwork/core_contracts' import { hexStringEquals } from '@eth-optimism/core-utils' import { diff --git a/packages/sdk/src/cross-chain-messenger.ts b/packages/sdk/src/cross-chain-messenger.ts index 690ecbf8ec..91ef567912 100644 --- a/packages/sdk/src/cross-chain-messenger.ts +++ b/packages/sdk/src/cross-chain-messenger.ts @@ -9,7 +9,7 @@ import { import { Signer } from '@ethersproject/abstract-signer' import { ethers, BigNumber, Overrides } from 'ethers' import { sleep, remove0x } from '@eth-optimism/core-utils' -import { predeploys } from '@eth-optimism/contracts' +import { predeploys } from '@bobanetwork/core_contracts' import { ICrossChainMessenger, diff --git a/packages/sdk/src/l2-provider.ts b/packages/sdk/src/l2-provider.ts index 515afd3322..b0cf9bf050 100644 --- a/packages/sdk/src/l2-provider.ts +++ b/packages/sdk/src/l2-provider.ts @@ -1,7 +1,7 @@ import { Provider, TransactionRequest } from '@ethersproject/abstract-provider' import { serialize } from '@ethersproject/transactions' import { Contract, BigNumber } from 'ethers' -import { predeploys, getContractInterface } from '@eth-optimism/contracts' +import { predeploys, getContractInterface } from '@bobanetwork/core_contracts' import cloneDeep from 'lodash/cloneDeep' import { L2Provider, ProviderLike, NumberLike } from './interfaces' diff --git a/packages/sdk/src/utils/contracts.ts b/packages/sdk/src/utils/contracts.ts index 683a27b798..925da884a1 100644 --- a/packages/sdk/src/utils/contracts.ts +++ b/packages/sdk/src/utils/contracts.ts @@ -1,4 +1,4 @@ -import { getContractInterface, predeploys } from '@eth-optimism/contracts' +import { getContractInterface, predeploys } from '@bobanetwork/core_contracts' import { ethers, Contract } from 'ethers' import { toAddress } from './coercion' diff --git a/packages/sdk/src/utils/message-encoding.ts b/packages/sdk/src/utils/message-encoding.ts index 4915946928..354ea44860 100644 --- a/packages/sdk/src/utils/message-encoding.ts +++ b/packages/sdk/src/utils/message-encoding.ts @@ -1,4 +1,4 @@ -import { getContractInterface } from '@eth-optimism/contracts' +import { getContractInterface } from '@bobanetwork/core_contracts' import { ethers } from 'ethers' import { CoreCrossChainMessage } from '../interfaces' diff --git a/packages/sdk/test/cross-chain-messenger.spec.ts b/packages/sdk/test/cross-chain-messenger.spec.ts index 5d417456e1..577ca6db7d 100644 --- a/packages/sdk/test/cross-chain-messenger.spec.ts +++ b/packages/sdk/test/cross-chain-messenger.spec.ts @@ -1,6 +1,6 @@ import { Provider } from '@ethersproject/abstract-provider' import { expectApprox } from '@eth-optimism/core-utils' -import { predeploys } from '@eth-optimism/contracts' +import { predeploys } from '@bobanetwork/core_contracts' import { Contract } from 'ethers' import { ethers } from 'hardhat' diff --git a/packages/sdk/test/utils/message-encoding.spec.ts b/packages/sdk/test/utils/message-encoding.spec.ts index 232cefb22a..530510cb74 100644 --- a/packages/sdk/test/utils/message-encoding.spec.ts +++ b/packages/sdk/test/utils/message-encoding.spec.ts @@ -1,6 +1,6 @@ import { Contract, Signer } from 'ethers' import { ethers } from 'hardhat' -import { getContractFactory } from '@eth-optimism/contracts' +import { getContractFactory } from '@bobanetwork/core_contracts' import { expect } from '../setup' import { diff --git a/yarn.lock b/yarn.lock index 26b4aed67f..64f69539ae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,16 +2,6 @@ # yarn lockfile v1 -"@adobe/css-tools@^4.0.1": - version "4.2.0" - resolved "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.2.0.tgz" - integrity sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA== - -"@alloc/quick-lru@^5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" - integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== - "@ampproject/remapping@^2.1.0": version "2.2.0" resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" @@ -20,49 +10,6 @@ "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" -"@ampproject/remapping@^2.2.0": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.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== - dependencies: - json-schema "^0.4.0" - jsonpointer "^5.0.0" - leven "^3.1.0" - -"@apollo/client@^3.5.10": - version "3.7.16" - resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.7.16.tgz#418cb23566a6d52e9e22d34484167149269efd40" - integrity sha512-rdhoc7baSD7ZzcjavEpYN8gZJle1KhjEKj4SJeMgBpcnO4as7oXUVU4LtFpotzZdFlo57qaLrNzfvppSTsKvZQ== - dependencies: - "@graphql-typed-document-node/core" "^3.1.1" - "@wry/context" "^0.7.0" - "@wry/equality" "^0.5.0" - "@wry/trie" "^0.4.0" - graphql-tag "^2.12.6" - hoist-non-react-statics "^3.3.2" - optimism "^0.16.2" - prop-types "^15.7.2" - response-iterator "^0.2.6" - symbol-observable "^4.0.0" - ts-invariant "^0.10.3" - tslib "^2.3.0" - zen-observable-ts "^1.2.5" - -"@aw-web-design/x-default-browser@1.4.126": - version "1.4.126" - resolved "https://registry.yarnpkg.com/@aw-web-design/x-default-browser/-/x-default-browser-1.4.126.tgz#43e4bd8f0314ed907a8718d7e862a203af79bc16" - integrity sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug== - dependencies: - default-browser-id "3.0.0" - "@aws-crypto/crc32@3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-3.0.0.tgz#07300eca214409c33e3ff769cd5697b57fdd38fa" @@ -489,43 +436,19 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== dependencies: "@babel/highlight" "^7.18.6" -"@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.21.4": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz" - integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/code-frame@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" - integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ== - dependencies: - "@babel/highlight" "^7.22.5" - -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5": +"@babel/compat-data@^7.20.5": version "7.20.10" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz" integrity sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg== -"@babel/compat-data@^7.22.0", "@babel/compat-data@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.3.tgz#cd502a6a0b6e37d7ad72ce7e71a7160a3ae36f7e" - integrity sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ== - -"@babel/compat-data@^7.22.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" - integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== - -"@babel/core@^7.1.0", "@babel/core@^7.12.16", "@babel/core@^7.16.0", "@babel/core@^7.7.5": +"@babel/core@^7.12.16", "@babel/core@^7.7.5": version "7.20.12" resolved "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz" integrity sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg== @@ -546,49 +469,7 @@ json5 "^2.2.2" semver "^6.3.0" -"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.20.2", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.22.1" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.1.tgz#5de51c5206f4c6f5533562838337a603c1033cfd" - integrity sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.22.0" - "@babel/helper-compilation-targets" "^7.22.1" - "@babel/helper-module-transforms" "^7.22.1" - "@babel/helpers" "^7.22.0" - "@babel/parser" "^7.22.0" - "@babel/template" "^7.21.9" - "@babel/traverse" "^7.22.1" - "@babel/types" "^7.22.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.2" - semver "^6.3.0" - -"@babel/core@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.9.tgz#bd96492c68822198f33e8a256061da3cf391f58f" - integrity sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.22.5" - "@babel/generator" "^7.22.9" - "@babel/helper-compilation-targets" "^7.22.9" - "@babel/helper-module-transforms" "^7.22.9" - "@babel/helpers" "^7.22.6" - "@babel/parser" "^7.22.7" - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.8" - "@babel/types" "^7.22.5" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.2" - semver "^6.3.1" - -"@babel/eslint-parser@^7.12.16", "@babel/eslint-parser@^7.16.3", "@babel/eslint-parser@^7.18.2": +"@babel/eslint-parser@^7.12.16", "@babel/eslint-parser@^7.18.2": version "7.19.1" resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz" integrity sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ== @@ -597,16 +478,6 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.12.11", "@babel/generator@^7.21.5", "@babel/generator@^7.22.0", "@babel/generator@^7.22.3", "@babel/generator@^7.7.2": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.3.tgz#0ff675d2edb93d7596c5f6728b52615cfc0df01e" - integrity sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A== - dependencies: - "@babel/types" "^7.22.3" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - "@babel/generator@^7.20.7": version "7.20.7" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz" @@ -616,66 +487,7 @@ "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" -"@babel/generator@^7.21.4": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz" - integrity sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA== - dependencies: - "@babel/types" "^7.21.4" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/generator@^7.22.7", "@babel/generator@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.9.tgz#572ecfa7a31002fa1de2a9d91621fd895da8493d" - integrity sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw== - dependencies: - "@babel/types" "^7.22.5" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/generator@~7.21.1": - version "7.21.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.9.tgz#3a1b706e07d836e204aee0650e8ee878d3aaa241" - integrity sha512-F3fZga2uv09wFdEjEQIJxXALXfz0+JaOb7SabvVMmjHxeVTuGW8wgE8Vp1Hd7O+zMTYtcfEISGRzPkeiaPPsvg== - dependencies: - "@babel/types" "^7.21.5" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.18.6": - 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== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-annotate-as-pure@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" - integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - 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== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.18.6" - "@babel/types" "^7.18.9" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz#a3f4758efdd0190d8927fcffd261755937c71878" - integrity sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0", "@babel/helper-compilation-targets@^7.20.7": +"@babel/helper-compilation-targets@^7.20.7": version "7.20.7" resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz" integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== @@ -686,156 +498,12 @@ lru-cache "^5.1.1" semver "^6.3.0" -"@babel/helper-compilation-targets@^7.22.1": - version "7.22.1" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.1.tgz#bfcd6b7321ffebe33290d68550e2c9d7eb7c7a58" - integrity sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ== - dependencies: - "@babel/compat-data" "^7.22.0" - "@babel/helper-validator-option" "^7.21.0" - browserslist "^4.21.3" - lru-cache "^5.1.1" - semver "^6.3.0" - -"@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz#f9d0a7aaaa7cd32a3f31c9316a69f5a9bcacb892" - integrity sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw== - dependencies: - "@babel/compat-data" "^7.22.9" - "@babel/helper-validator-option" "^7.22.5" - browserslist "^4.21.9" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.20.5", "@babel/helper-create-class-features-plugin@^7.20.7": - version "7.20.12" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz" - integrity sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ== - 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.20.7" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.20.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/helper-split-export-declaration" "^7.18.6" - -"@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.22.1": - version "7.22.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.1.tgz#ae3de70586cc757082ae3eba57240d42f468c41b" - integrity sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.22.1" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-member-expression-to-functions" "^7.22.0" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.22.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/helper-split-export-declaration" "^7.18.6" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.22.5", "@babel/helper-create-class-features-plugin@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz#c36ea240bb3348f942f08b0fbe28d6d979fab236" - integrity sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.5" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - semver "^6.3.1" - -"@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.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz" - integrity sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - regexpu-core "^5.2.1" - -"@babel/helper-create-regexp-features-plugin@^7.22.1": - version "7.22.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.1.tgz#a7ed9a8488b45b467fca353cd1a44dc5f0cf5c70" - integrity sha512-WWjdnfR3LPIe+0EY8td7WmjhytxXtjKAEpnAxun/hkNiyOaPlvGK+NZaBFIdi9ndYV3Gav7BpFvtUwnaJlwi1w== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - regexpu-core "^5.3.1" - semver "^6.3.0" - -"@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz#9d8e61a8d9366fe66198f57c40565663de0825f6" - integrity sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - regexpu-core "^5.3.1" - semver "^6.3.1" - -"@babel/helper-define-polyfill-provider@^0.3.3": - 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== - 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" - -"@babel/helper-define-polyfill-provider@^0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz#487053f103110f25b9755c5980e031e93ced24d8" - integrity sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg== - 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" - -"@babel/helper-define-polyfill-provider@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz#82c825cadeeeee7aad237618ebbe8fa1710015d7" - integrity sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw== - dependencies: - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-plugin-utils" "^7.22.5" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - "@babel/helper-environment-visitor@^7.18.9": 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-environment-visitor@^7.21.5", "@babel/helper-environment-visitor@^7.22.1": - version "7.22.1" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.1.tgz#ac3a56dbada59ed969d712cf527bd8271fe3eba8" - integrity sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA== - -"@babel/helper-environment-visitor@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" - integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== - -"@babel/helper-explode-assignable-expression@^7.18.6": - 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== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": +"@babel/helper-function-name@^7.19.0": 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== @@ -843,22 +511,6 @@ "@babel/template" "^7.18.10" "@babel/types" "^7.19.0" -"@babel/helper-function-name@^7.21.0": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz" - integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== - dependencies: - "@babel/template" "^7.20.7" - "@babel/types" "^7.21.0" - -"@babel/helper-function-name@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" - integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== - dependencies: - "@babel/template" "^7.22.5" - "@babel/types" "^7.22.5" - "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" @@ -866,56 +518,14 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-member-expression-to-functions@^7.20.7": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz" - integrity sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw== - dependencies: - "@babel/types" "^7.20.7" - -"@babel/helper-member-expression-to-functions@^7.22.0": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.3.tgz#4b77a12c1b4b8e9e28736ed47d8b91f00976911f" - integrity sha512-Gl7sK04b/2WOb6OPVeNy9eFKeD3L6++CzL3ykPOWqTn08xgYYK0wz4TUh2feIImDXxcVW3/9WQ1NMKY66/jfZA== - dependencies: - "@babel/types" "^7.22.3" - -"@babel/helper-member-expression-to-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz#0a7c56117cad3372fbf8d2fb4bf8f8d64a1e76b2" - integrity sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.21.4": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz" - integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== - dependencies: - "@babel/types" "^7.21.4" - -"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": +"@babel/helper-module-imports@^7.18.6": 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== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-imports@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" - integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11": +"@babel/helper-module-transforms@^7.20.11": version "7.20.11" resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz" integrity sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg== @@ -929,102 +539,6 @@ "@babel/traverse" "^7.20.10" "@babel/types" "^7.20.7" -"@babel/helper-module-transforms@^7.21.5", "@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" - integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-module-imports" "^7.22.5" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.5" - -"@babel/helper-module-transforms@^7.22.1": - version "7.22.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.1.tgz#e0cad47fedcf3cae83c11021696376e2d5a50c63" - integrity sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.1" - "@babel/helper-module-imports" "^7.21.4" - "@babel/helper-simple-access" "^7.21.5" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.21.9" - "@babel/traverse" "^7.22.1" - "@babel/types" "^7.22.0" - -"@babel/helper-optimise-call-expression@^7.18.6": - 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== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-optimise-call-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" - integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== - dependencies: - "@babel/types" "^7.22.5" - -"@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.21.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" - integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== - -"@babel/helper-remap-async-to-generator@^7.18.9": - 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== - 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" - -"@babel/helper-remap-async-to-generator@^7.22.5": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz#53a25b7484e722d7efb9c350c75c032d4628de82" - integrity sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-wrap-function" "^7.22.9" - -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz" - integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.20.7" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.20.7" - "@babel/types" "^7.20.7" - -"@babel/helper-replace-supers@^7.22.1": - version "7.22.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.1.tgz#38cf6e56f7dc614af63a21b45565dd623f0fdc95" - integrity sha512-ut4qrkE4AuSfrwHSps51ekR1ZY/ygrP1tp0WFm8oVq6nzc/hvfV/22JylndIbsf2U2M9LOMwiSddr6y+78j+OQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.1" - "@babel/helper-member-expression-to-functions" "^7.22.0" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/template" "^7.21.9" - "@babel/traverse" "^7.22.1" - "@babel/types" "^7.22.0" - -"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" - integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== - dependencies: - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.5" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-simple-access@^7.20.2": version "7.20.2" resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz" @@ -1032,34 +546,6 @@ dependencies: "@babel/types" "^7.20.2" -"@babel/helper-simple-access@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz#d697a7971a5c39eac32c7e63c0921c06c8a249ee" - integrity sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg== - dependencies: - "@babel/types" "^7.21.5" - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-skip-transparent-expression-wrappers@^7.20.0": - 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== - dependencies: - "@babel/types" "^7.20.0" - -"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" - integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== - dependencies: - "@babel/types" "^7.22.5" - "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" @@ -1067,62 +553,21 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - "@babel/helper-string-parser@^7.19.4": 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-string-parser@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd" - integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w== - -"@babel/helper-string-parser@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" - integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== - "@babel/helper-validator-identifier@^7.15.7", "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": 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-identifier@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" - integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== - -"@babel/helper-validator-option@^7.18.6", "@babel/helper-validator-option@^7.21.0", "@babel/helper-validator-option@^7.22.5": +"@babel/helper-validator-option@^7.18.6": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== -"@babel/helper-wrap-function@^7.18.9": - 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== - dependencies: - "@babel/helper-function-name" "^7.19.0" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.5" - "@babel/types" "^7.20.5" - -"@babel/helper-wrap-function@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz#189937248c45b0182c1dcf32f3444ca153944cb9" - integrity sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q== - dependencies: - "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.5" - "@babel/types" "^7.22.5" - "@babel/helpers@^7.20.7": version "7.20.7" resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz" @@ -1132,24 +577,6 @@ "@babel/traverse" "^7.20.7" "@babel/types" "^7.20.7" -"@babel/helpers@^7.22.0": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.3.tgz#53b74351da9684ea2f694bf0877998da26dd830e" - integrity sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w== - dependencies: - "@babel/template" "^7.21.9" - "@babel/traverse" "^7.22.1" - "@babel/types" "^7.22.3" - -"@babel/helpers@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.6.tgz#8e61d3395a4f0c5a8060f309fb008200969b5ecd" - integrity sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA== - dependencies: - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.6" - "@babel/types" "^7.22.5" - "@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" @@ -1159,25178 +586,15134 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/highlight@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" - integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw== - dependencies: - "@babel/helper-validator-identifier" "^7.22.5" - chalk "^2.0.0" - js-tokens "^4.0.0" - "@babel/parser@7.16.4": version "7.16.4" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz" integrity sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng== -"@babel/parser@^7.1.0", "@babel/parser@^7.16.4", "@babel/parser@^7.20.7": +"@babel/parser@^7.16.4", "@babel/parser@^7.20.7": version "7.20.7" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz" integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg== -"@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.21.5", "@babel/parser@^7.21.9", "@babel/parser@^7.22.0", "@babel/parser@^7.22.4": - version "7.22.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.4.tgz#a770e98fd785c231af9d93f6459d36770993fb32" - integrity sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA== - -"@babel/parser@^7.21.4": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz" - integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw== - -"@babel/parser@^7.22.5", "@babel/parser@^7.22.7": - version "7.22.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" - integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== - -"@babel/parser@~7.21.2": - version "7.21.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.9.tgz#ab18ea3b85b4bc33ba98a8d4c2032c557d23cf14" - integrity sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g== - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": - version "7.22.5" - 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.22.5.tgz#87245a21cd69a73b0b81bcda98d443d6df08f05e" - integrity sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ== +"@babel/runtime@^7.20.1", "@babel/runtime@^7.21.0", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682" + integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + regenerator-runtime "^0.14.0" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": +"@babel/template@^7.18.10", "@babel/template@^7.20.7": version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz" - integrity sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/plugin-proposal-optional-chaining" "^7.20.7" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.3.tgz#a75be1365c0c3188c51399a662168c1c98108659" - integrity sha512-6r4yRwEnorYByILoDRnEqxtojYKuiIv9FojW2E8GUKo9eWBwbKcd9IiZOZpdyXc64RmyGGyPu3/uAcrz/dq2kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/plugin-transform-optional-chaining" "^7.22.3" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz#fef09f9499b1f1c930da8a0c419db42167d792ca" - integrity sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g== + resolved "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz" + integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.5" + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" -"@babel/plugin-proposal-async-generator-functions@^7.20.1": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz" - integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== +"@babel/traverse@^7.12.5", "@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.7": + version "7.20.12" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz" + integrity sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ== dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.7" "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.18.6": - 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== - 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.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz" - integrity sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.20.7" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-decorators@^7.16.4": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.7.tgz" - integrity sha512-JB45hbUweYpwAGjkiM7uCyXMENH2lG+9r3G2E+ttc2PRXAoEkpfd/KW5jDg4j8RS6tLtTG1jZi9LbHZVSfs1/A== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.20.7" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/plugin-syntax-decorators" "^7.19.0" - -"@babel/plugin-proposal-dynamic-import@^7.18.6": - 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== - 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.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz" - integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== - 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.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz" - integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + debug "^4.1.0" + globals "^11.1.0" -"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": +"@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.20.2", "@babel/types@^7.20.7": version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz" - integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== + resolved "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz" + integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - 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== +"@bobanetwork/core_contracts@0.5.12": + version "0.5.12" + resolved "https://registry.yarnpkg.com/@bobanetwork/core_contracts/-/core_contracts-0.5.12.tgz#e77fd7701451ae245aa78971d11312e5bfbb04d0" + integrity sha512-8c000xMwHJSkWMU0XvYNIqDewAcENUNDeA+pS7CmzW8mFY9ZZ2wNAvtI13RYkhaQEAZEVGYR37FE8NjXAVpFKg== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@eth-optimism/core-utils" "0.8.1" + "@ethersproject/abstract-provider" "^5.5.0" + "@ethersproject/abstract-signer" "^5.5.0" + "@ethersproject/hardware-wallets" "^5.5.0" -"@babel/plugin-proposal-numeric-separator@^7.16.0", "@babel/plugin-proposal-numeric-separator@^7.18.6": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" +"@chainlink/contracts@0.3.1": + version "0.3.1" + resolved "https://registry.npmjs.org/@chainlink/contracts/-/contracts-0.3.1.tgz" + integrity sha512-A8DRvmfNCwLS1iduPPj7wNAZJMe9/ZimMhoHhbbBiq+7Vq/HFjiNcdoQ5NinFdXD5aTsoNUGG5pAYKj7YMpm9A== -"@babel/plugin-proposal-object-rest-spread@^7.20.2": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz" - integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== +"@changesets/apply-release-plan@^6.1.3": + version "6.1.3" + resolved "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-6.1.3.tgz" + integrity sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg== dependencies: - "@babel/compat-data" "^7.20.5" - "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.20.7" + "@babel/runtime" "^7.20.1" + "@changesets/config" "^2.3.0" + "@changesets/get-version-range-type" "^0.3.2" + "@changesets/git" "^2.0.0" + "@changesets/types" "^5.2.1" + "@manypkg/get-packages" "^1.1.3" + detect-indent "^6.0.0" + fs-extra "^7.0.1" + lodash.startcase "^4.4.0" + outdent "^0.5.0" + prettier "^2.7.1" + resolve-from "^5.0.0" + semver "^5.4.1" -"@babel/plugin-proposal-optional-catch-binding@^7.18.6": - 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== +"@changesets/assemble-release-plan@^5.2.3": + version "5.2.3" + resolved "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-5.2.3.tgz" + integrity sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/runtime" "^7.20.1" + "@changesets/errors" "^0.1.4" + "@changesets/get-dependents-graph" "^1.3.5" + "@changesets/types" "^5.2.1" + "@manypkg/get-packages" "^1.1.3" + semver "^5.4.1" -"@babel/plugin-proposal-optional-chaining@^7.13.12": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" - integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== +"@changesets/changelog-git@^0.1.14": + version "0.1.14" + resolved "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.1.14.tgz" + integrity sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@changesets/types" "^5.2.1" -"@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.18.9", "@babel/plugin-proposal-optional-chaining@^7.20.7": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz" - integrity sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ== +"@changesets/cli@^2.16.0": + version "2.26.0" + resolved "https://registry.npmjs.org/@changesets/cli/-/cli-2.26.0.tgz" + integrity sha512-0cbTiDms+ICTVtEwAFLNW0jBNex9f5+fFv3I771nBvdnV/mOjd1QJ4+f8KtVSOrwD9SJkk9xbDkWFb0oXd8d1Q== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/runtime" "^7.20.1" + "@changesets/apply-release-plan" "^6.1.3" + "@changesets/assemble-release-plan" "^5.2.3" + "@changesets/changelog-git" "^0.1.14" + "@changesets/config" "^2.3.0" + "@changesets/errors" "^0.1.4" + "@changesets/get-dependents-graph" "^1.3.5" + "@changesets/get-release-plan" "^3.0.16" + "@changesets/git" "^2.0.0" + "@changesets/logger" "^0.0.5" + "@changesets/pre" "^1.0.14" + "@changesets/read" "^0.5.9" + "@changesets/types" "^5.2.1" + "@changesets/write" "^0.2.3" + "@manypkg/get-packages" "^1.1.3" + "@types/is-ci" "^3.0.0" + "@types/semver" "^6.0.0" + ansi-colors "^4.1.3" + chalk "^2.1.0" + enquirer "^2.3.0" + external-editor "^3.1.0" + fs-extra "^7.0.1" + human-id "^1.0.2" + is-ci "^3.0.1" + meow "^6.0.0" + outdent "^0.5.0" + p-limit "^2.2.0" + preferred-pm "^3.0.0" + resolve-from "^5.0.0" + semver "^5.4.1" + spawndamnit "^2.0.0" + term-size "^2.1.0" + tty-table "^4.1.5" -"@babel/plugin-proposal-private-methods@^7.16.0", "@babel/plugin-proposal-private-methods@^7.18.6": - 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== - 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.21.0-placeholder-for-preset-env.2": - version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" - integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== - -"@babel/plugin-proposal-private-property-in-object@^7.18.6": - 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== - 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" - -"@babel/plugin-proposal-private-property-in-object@^7.21.0": - version "7.21.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz#69d597086b6760c4126525cfa154f34631ff272c" - integrity sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.21.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@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.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz" - integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== +"@changesets/config@^2.3.0": + version "2.3.0" + resolved "https://registry.npmjs.org/@changesets/config/-/config-2.3.0.tgz" + integrity sha512-EgP/px6mhCx8QeaMAvWtRrgyxW08k/Bx2tpGT+M84jEdX37v3VKfh4Cz1BkwrYKuMV2HZKeHOh8sHvja/HcXfQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@changesets/errors" "^0.1.4" + "@changesets/get-dependents-graph" "^1.3.5" + "@changesets/logger" "^0.0.5" + "@changesets/types" "^5.2.1" + "@manypkg/get-packages" "^1.1.3" + fs-extra "^7.0.1" + micromatch "^4.0.2" -"@babel/plugin-syntax-async-generators@^7.8.4": - 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== +"@changesets/errors@^0.1.4": + version "0.1.4" + resolved "https://registry.npmjs.org/@changesets/errors/-/errors-0.1.4.tgz" + integrity sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + extendable-error "^0.1.5" -"@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== +"@changesets/get-dependents-graph@^1.3.5": + version "1.3.5" + resolved "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-1.3.5.tgz" + integrity sha512-w1eEvnWlbVDIY8mWXqWuYE9oKhvIaBhzqzo4ITSJY9hgoqQ3RoBqwlcAzg11qHxv/b8ReDWnMrpjpKrW6m1ZTA== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@changesets/types" "^5.2.1" + "@manypkg/get-packages" "^1.1.3" + chalk "^2.1.0" + fs-extra "^7.0.1" + semver "^5.4.1" -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": - 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== +"@changesets/get-release-plan@^3.0.16": + version "3.0.16" + resolved "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-3.0.16.tgz" + integrity sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/runtime" "^7.20.1" + "@changesets/assemble-release-plan" "^5.2.3" + "@changesets/config" "^2.3.0" + "@changesets/pre" "^1.0.14" + "@changesets/read" "^0.5.9" + "@changesets/types" "^5.2.1" + "@manypkg/get-packages" "^1.1.3" -"@babel/plugin-syntax-class-static-block@^7.14.5": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" +"@changesets/get-version-range-type@^0.3.2": + version "0.3.2" + resolved "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.3.2.tgz" + integrity sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg== -"@babel/plugin-syntax-decorators@^7.19.0": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz" - integrity sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ== +"@changesets/git@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@changesets/git/-/git-2.0.0.tgz" + integrity sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A== dependencies: - "@babel/helper-plugin-utils" "^7.19.0" + "@babel/runtime" "^7.20.1" + "@changesets/errors" "^0.1.4" + "@changesets/types" "^5.2.1" + "@manypkg/get-packages" "^1.1.3" + is-subdir "^1.1.1" + micromatch "^4.0.2" + spawndamnit "^2.0.0" -"@babel/plugin-syntax-dynamic-import@^7.8.3": - 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== +"@changesets/logger@^0.0.5": + version "0.0.5" + resolved "https://registry.npmjs.org/@changesets/logger/-/logger-0.0.5.tgz" + integrity sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + chalk "^2.1.0" -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - 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== +"@changesets/parse@^0.3.16": + version "0.3.16" + resolved "https://registry.npmjs.org/@changesets/parse/-/parse-0.3.16.tgz" + integrity sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@changesets/types" "^5.2.1" + js-yaml "^3.13.1" -"@babel/plugin-syntax-flow@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz" - integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A== +"@changesets/pre@^1.0.14": + version "1.0.14" + resolved "https://registry.npmjs.org/@changesets/pre/-/pre-1.0.14.tgz" + integrity sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/runtime" "^7.20.1" + "@changesets/errors" "^0.1.4" + "@changesets/types" "^5.2.1" + "@manypkg/get-packages" "^1.1.3" + fs-extra "^7.0.1" -"@babel/plugin-syntax-import-assertions@^7.20.0": - 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== +"@changesets/read@^0.5.9": + version "0.5.9" + resolved "https://registry.npmjs.org/@changesets/read/-/read-0.5.9.tgz" + integrity sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ== dependencies: - "@babel/helper-plugin-utils" "^7.19.0" + "@babel/runtime" "^7.20.1" + "@changesets/git" "^2.0.0" + "@changesets/logger" "^0.0.5" + "@changesets/parse" "^0.3.16" + "@changesets/types" "^5.2.1" + chalk "^2.1.0" + fs-extra "^7.0.1" + p-filter "^2.1.0" -"@babel/plugin-syntax-import-assertions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" - integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" +"@changesets/types@^4.0.1": + version "4.1.0" + resolved "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz" + integrity sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw== -"@babel/plugin-syntax-import-attributes@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.3.tgz#d7168f22b9b49a6cc1792cec78e06a18ad2e7b4b" - integrity sha512-i35jZJv6aO7hxEbIWQ41adVfOzjm9dcYDNeWlBMd8p0ZQRtNUCBrmGwZt+H5lb+oOC9a3svp956KP0oWGA1YsA== - dependencies: - "@babel/helper-plugin-utils" "^7.21.5" +"@changesets/types@^5.2.1": + version "5.2.1" + resolved "https://registry.npmjs.org/@changesets/types/-/types-5.2.1.tgz" + integrity sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg== -"@babel/plugin-syntax-import-attributes@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" - integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== +"@changesets/write@^0.2.3": + version "0.2.3" + resolved "https://registry.npmjs.org/@changesets/write/-/write-0.2.3.tgz" + integrity sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/runtime" "^7.20.1" + "@changesets/types" "^5.2.1" + fs-extra "^7.0.1" + human-id "^1.0.2" + prettier "^2.7.1" -"@babel/plugin-syntax-import-meta@^7.10.4", "@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== +"@codechecks/client@^0.1.11": + version "0.1.12" + resolved "https://registry.npmjs.org/@codechecks/client/-/client-0.1.12.tgz" + integrity sha512-2GHHvhO3kaOyxFXxOaiznlY8ARmz33/p+WQdhc2y6wzWw5eOl2wSwg1eZxx3LsWlAnB963Y4bd1YjZcGIhKRzA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + bluebird "^3.5.3" + chalk "^2.4.2" + commander "^2.19.0" + debug "^4.1.1" + execa "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.1.15" + js-yaml "^3.13.1" + json5 "^2.1.0" + lodash "^4.17.11" + marked "^0.7.0" + marked-terminal "^3.3.0" + mkdirp "^0.5.1" + ms "^2.1.1" + promise "^8.0.2" + request "^2.88.0" + request-promise "^4.2.2" + ts-essentials "^1.0.2" + ts-node "^8.0.2" + url-join "^4.0.0" -"@babel/plugin-syntax-json-strings@^7.8.3": - 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== +"@cspotcode/source-map-support@^0.8.0": + 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== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@jridgewell/trace-mapping" "0.3.9" -"@babel/plugin-syntax-jsx@^7.18.6", "@babel/plugin-syntax-jsx@^7.21.4", "@babel/plugin-syntax-jsx@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" - integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== +"@defi-wonderland/smock@^2.0.2": + version "2.3.4" + resolved "https://registry.npmjs.org/@defi-wonderland/smock/-/smock-2.3.4.tgz" + integrity sha512-VYJbsoCOdFRyGkAwvaQhQRrU6V8AjK3five8xdbo41DEE9n3qXzUNBUxyD9HhXB/dWWPFWT21IGw5Ztl6Qw3Ew== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@nomicfoundation/ethereumjs-evm" "^1.0.0-rc.3" + "@nomicfoundation/ethereumjs-util" "^8.0.0-rc.3" + "@nomicfoundation/ethereumjs-vm" "^6.0.0-rc.3" + diff "^5.0.0" + lodash.isequal "^4.5.0" + lodash.isequalwith "^4.4.0" + rxjs "^7.2.0" + semver "^7.3.5" -"@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.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" +"@discoveryjs/json-ext@^0.5.0", "@discoveryjs/json-ext@^0.5.3": + version "0.5.7" + resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - 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== +"@ensdomains/address-encoder@^0.1.7": + version "0.1.9" + resolved "https://registry.npmjs.org/@ensdomains/address-encoder/-/address-encoder-0.1.9.tgz" + integrity sha512-E2d2gP4uxJQnDu2Kfg1tHNspefzbLT8Tyjrm5sEuim32UkU2sm5xL4VXtgc2X33fmPEw9+jUMpGs4veMbf+PYg== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + bech32 "^1.1.3" + blakejs "^1.1.0" + bn.js "^4.11.8" + bs58 "^4.0.1" + crypto-addr-codec "^0.1.7" + nano-base32 "^1.0.1" + ripemd160 "^2.0.2" -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": - 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== +"@ensdomains/ens@0.4.5", "@ensdomains/ens@^0.4.4": + version "0.4.5" + resolved "https://registry.npmjs.org/@ensdomains/ens/-/ens-0.4.5.tgz" + integrity sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + bluebird "^3.5.2" + eth-ens-namehash "^2.0.8" + solc "^0.4.20" + testrpc "0.0.1" + web3-utils "^1.0.0-beta.31" -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - 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== +"@ensdomains/ensjs@^2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/@ensdomains/ensjs/-/ensjs-2.1.0.tgz" + integrity sha512-GRbGPT8Z/OJMDuxs75U/jUNEC0tbL0aj7/L/QQznGYKm/tiasp+ndLOaoULy9kKJFC0TBByqfFliEHDgoLhyog== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/runtime" "^7.4.4" + "@ensdomains/address-encoder" "^0.1.7" + "@ensdomains/ens" "0.4.5" + "@ensdomains/resolver" "0.2.4" + content-hash "^2.5.2" + eth-ens-namehash "^2.0.8" + ethers "^5.0.13" + js-sha3 "^0.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" +"@ensdomains/resolver@0.2.4", "@ensdomains/resolver@^0.2.4": + version "0.2.4" + resolved "https://registry.npmjs.org/@ensdomains/resolver/-/resolver-0.2.4.tgz" + integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - 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== +"@es-joy/jsdoccomment@~0.39.4": + version "0.39.4" + resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.39.4.tgz#6b8a62e9b3077027837728818d3c4389a898b392" + integrity sha512-Jvw915fjqQct445+yron7Dufix9A+m9j1fCJYlCo1FWlRvTxa3pjJelxdSTdaLWcTwRU6vbL+NYjO4YuNIS5Qg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + comment-parser "1.3.1" + esquery "^1.5.0" + jsdoc-type-pratt-parser "~4.0.0" -"@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.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" -"@babel/plugin-syntax-typescript@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" - integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== +"@eslint/eslintrc@^1.4.1": + version "1.4.1" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz" + integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + 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" -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz#2751948e9b7c6d771a8efa59340c15d4a2891ff8" - integrity sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA== +"@eth-optimism/contracts@^0.5.11": + version "0.5.40" + resolved "https://registry.yarnpkg.com/@eth-optimism/contracts/-/contracts-0.5.40.tgz#d13a04a15ea947a69055e6fc74d87e215d4c936a" + integrity sha512-MrzV0nvsymfO/fursTB7m/KunkPsCndltVgfdHaT1Aj5Vi6R/doKIGGkOofHX+8B6VMZpuZosKCMQ5lQuqjt8w== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@eth-optimism/core-utils" "0.12.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" - integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== +"@eth-optimism/core-utils@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@eth-optimism/core-utils/-/core-utils-0.12.0.tgz#6337e4599a34de23f8eceb20378de2a2de82b0ea" + integrity sha512-qW+7LZYCz7i8dRa7SRlUKIo1VBU8lvN0HeXCxJR+z+xtMzMQpPds20XJNCMclszxYQHkXY00fOT6GvFw9ZL6nw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/address" "^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/keccak256" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/providers" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bufio "^1.0.7" + chai "^4.3.4" -"@babel/plugin-transform-arrow-functions@^7.18.6": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz" - integrity sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ== +"@eth-optimism/ynatm@^0.2.2": + version "0.2.2" + resolved "https://registry.npmjs.org/@eth-optimism/ynatm/-/ynatm-0.2.2.tgz" + integrity sha512-R/hIAFWEj2sjf3inNEGCffmGofqMFY/7PS/Hh4A/62Kg0wMM8rsyMyW8pXngMnD/EQAjR8WTtKDutq/L5vSMTQ== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + bluebird "^3.7.2" -"@babel/plugin-transform-arrow-functions@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.21.5.tgz#9bb42a53de447936a57ba256fbf537fc312b6929" - integrity sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA== +"@ethereum-waffle/chai@^3.4.4": + version "3.4.4" + resolved "https://registry.npmjs.org/@ethereum-waffle/chai/-/chai-3.4.4.tgz" + integrity sha512-/K8czydBtXXkcM9X6q29EqEkc5dN3oYenyH2a9hF7rGAApAJUpH8QBtojxOY/xQ2up5W332jqgxwp0yPiYug1g== dependencies: - "@babel/helper-plugin-utils" "^7.21.5" + "@ethereum-waffle/provider" "^3.4.4" + ethers "^5.5.2" -"@babel/plugin-transform-arrow-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" - integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== +"@ethereum-waffle/compiler@^3.4.4": + version "3.4.4" + resolved "https://registry.npmjs.org/@ethereum-waffle/compiler/-/compiler-3.4.4.tgz" + integrity sha512-RUK3axJ8IkD5xpWjWoJgyHclOeEzDLQFga6gKpeGxiS/zBu+HB0W2FvsrrLalTFIaPw/CGYACRBSIxqiCqwqTQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@resolver-engine/imports" "^0.3.3" + "@resolver-engine/imports-fs" "^0.3.3" + "@typechain/ethers-v5" "^2.0.0" + "@types/mkdirp" "^0.5.2" + "@types/node-fetch" "^2.5.5" + ethers "^5.0.1" + mkdirp "^0.5.1" + node-fetch "^2.6.1" + solc "^0.6.3" + ts-generator "^0.1.1" + typechain "^3.0.0" -"@babel/plugin-transform-async-generator-functions@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.3.tgz#3ed99924c354fb9e80dabb2cc8d002c702e94527" - integrity sha512-36A4Aq48t66btydbZd5Fk0/xJqbpg/v4QWI4AH4cYHBXy9Mu42UOupZpebKFiCFNT9S9rJFcsld0gsv0ayLjtA== +"@ethereum-waffle/ens@^3.4.4": + version "3.4.4" + resolved "https://registry.npmjs.org/@ethereum-waffle/ens/-/ens-3.4.4.tgz" + integrity sha512-0m4NdwWxliy3heBYva1Wr4WbJKLnwXizmy5FfSSr5PMbjI7SIGCdCB59U7/ZzY773/hY3bLnzLwvG5mggVjJWg== dependencies: - "@babel/helper-environment-visitor" "^7.22.1" - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" + "@ensdomains/ens" "^0.4.4" + "@ensdomains/resolver" "^0.2.4" + ethers "^5.5.2" -"@babel/plugin-transform-async-generator-functions@^7.22.7": - version "7.22.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.7.tgz#053e76c0a903b72b573cb1ab7d6882174d460a1b" - integrity sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg== +"@ethereum-waffle/mock-contract@^3.4.4": + version "3.4.4" + resolved "https://registry.npmjs.org/@ethereum-waffle/mock-contract/-/mock-contract-3.4.4.tgz" + integrity sha512-Mp0iB2YNWYGUV+VMl5tjPsaXKbKo8MDH9wSJ702l9EBjdxFf/vBvnMBAC1Fub1lLtmD0JHtp1pq+mWzg/xlLnA== dependencies: - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.5" - "@babel/plugin-syntax-async-generators" "^7.8.4" + "@ethersproject/abi" "^5.5.0" + ethers "^5.5.2" -"@babel/plugin-transform-async-to-generator@^7.18.6", "@babel/plugin-transform-async-to-generator@^7.20.7": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz" - integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q== +"@ethereum-waffle/provider@^3.4.4": + version "3.4.4" + resolved "https://registry.npmjs.org/@ethereum-waffle/provider/-/provider-3.4.4.tgz" + integrity sha512-GK8oKJAM8+PKy2nK08yDgl4A80mFuI8zBkE0C9GqTRYQqvuxIyXoLmJ5NZU9lIwyWVv5/KsoA11BgAv2jXE82g== dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-remap-async-to-generator" "^7.18.9" + "@ethereum-waffle/ens" "^3.4.4" + ethers "^5.5.2" + ganache-core "^2.13.2" + patch-package "^6.2.2" + postinstall-postinstall "^2.1.0" -"@babel/plugin-transform-async-to-generator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" - integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== +"@ethereumjs/common@2.5.0": + version "2.5.0" + resolved "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz" + integrity sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg== dependencies: - "@babel/helper-module-imports" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.5" + crc-32 "^1.2.0" + ethereumjs-util "^7.1.1" -"@babel/plugin-transform-block-scoped-functions@^7.18.6": - 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== +"@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.4": + version "2.6.5" + resolved "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz" + integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + crc-32 "^1.2.0" + ethereumjs-util "^7.1.5" -"@babel/plugin-transform-block-scoped-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" - integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== +"@ethereumjs/common@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-3.2.0.tgz#b71df25845caf5456449163012074a55f048e0a0" + integrity sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@ethereumjs/util" "^8.1.0" + crc-32 "^1.2.0" -"@babel/plugin-transform-block-scoping@^7.20.2": - version "7.20.11" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz" - integrity sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" +"@ethereumjs/rlp@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" + integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== -"@babel/plugin-transform-block-scoping@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz#e737b91037e5186ee16b76e7ae093358a5634f02" - integrity sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ== +"@ethereumjs/tx@3.3.2": + version "3.3.2" + resolved "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz" + integrity sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@ethereumjs/common" "^2.5.0" + ethereumjs-util "^7.1.2" -"@babel/plugin-transform-block-scoping@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz#8bfc793b3a4b2742c0983fadc1480d843ecea31b" - integrity sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg== +"@ethereumjs/tx@4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-4.2.0.tgz#5988ae15daf5a3b3c815493bc6b495e76009e853" + integrity sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@ethereumjs/common" "^3.2.0" + "@ethereumjs/rlp" "^4.0.1" + "@ethereumjs/util" "^8.1.0" + ethereum-cryptography "^2.0.0" -"@babel/plugin-transform-class-properties@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.3.tgz#3407145e513830df77f0cef828b8b231c166fe4c" - integrity sha512-mASLsd6rhOrLZ5F3WbCxkzl67mmOnqik0zrg5W6D/X0QMW7HtvnoL1dRARLKIbMP3vXwkwziuLesPqWVGIl6Bw== +"@ethereumjs/tx@^3.3.2": + version "3.5.2" + resolved "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz" + integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.1" - "@babel/helper-plugin-utils" "^7.21.5" + "@ethereumjs/common" "^2.6.4" + ethereumjs-util "^7.1.5" -"@babel/plugin-transform-class-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" - integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ== +"@ethereumjs/util@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" + integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@ethereumjs/rlp" "^4.0.1" + ethereum-cryptography "^2.0.0" + micro-ftch "^0.3.1" -"@babel/plugin-transform-class-static-block@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.3.tgz#e352cf33567385c731a8f21192efeba760358773" - integrity sha512-5BirgNWNOx7cwbTJCOmKFJ1pZjwk5MUfMIwiBBvsirCJMZeQgs5pk6i1OlkVg+1Vef5LfBahFOrdCnAWvkVKMw== +"@ethersproject/abi@5.0.0-beta.153": + version "5.0.0-beta.153" + resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz" + integrity sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.1" - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@ethersproject/address" ">=5.0.0-beta.128" + "@ethersproject/bignumber" ">=5.0.0-beta.130" + "@ethersproject/bytes" ">=5.0.0-beta.129" + "@ethersproject/constants" ">=5.0.0-beta.128" + "@ethersproject/hash" ">=5.0.0-beta.128" + "@ethersproject/keccak256" ">=5.0.0-beta.127" + "@ethersproject/logger" ">=5.0.0-beta.129" + "@ethersproject/properties" ">=5.0.0-beta.131" + "@ethersproject/strings" ">=5.0.0-beta.130" -"@babel/plugin-transform-class-static-block@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz#3e40c46f048403472d6f4183116d5e46b1bff5ba" - integrity sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA== +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.0", "@ethersproject/abi@^5.0.0-beta.146", "@ethersproject/abi@^5.0.12", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.4.0", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-class-static-block" "^7.14.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" -"@babel/plugin-transform-classes@^7.20.2": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz" - integrity sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ== +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.5.0", "@ethersproject/abstract-provider@^5.5.1", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-compilation-targets" "^7.20.7" - "@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.20.7" - "@babel/helper-split-export-declaration" "^7.18.6" - globals "^11.1.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" -"@babel/plugin-transform-classes@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz#f469d0b07a4c5a7dbb21afad9e27e57b47031665" - integrity sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ== +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.0.0", "@ethersproject/abstract-signer@^5.4.1", "@ethersproject/abstract-signer@^5.5.0", "@ethersproject/abstract-signer@^5.7.0": + 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== dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-replace-supers" "^7.20.7" - "@babel/helper-split-export-declaration" "^7.18.6" - globals "^11.1.0" - -"@babel/plugin-transform-classes@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz#e04d7d804ed5b8501311293d1a0e6d43e94c3363" - integrity sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - globals "^11.1.0" + "@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" -"@babel/plugin-transform-computed-properties@^7.18.9": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz" - integrity sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ== +"@ethersproject/address@5.7.0", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.0.0", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.4.0", "@ethersproject/address@^5.5.0", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/template" "^7.20.7" + "@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" -"@babel/plugin-transform-computed-properties@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.21.5.tgz#3a2d8bb771cd2ef1cd736435f6552fe502e11b44" - integrity sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q== +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== dependencies: - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/template" "^7.20.7" + "@ethersproject/bytes" "^5.7.0" -"@babel/plugin-transform-computed-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" - integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/template" "^7.22.5" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" -"@babel/plugin-transform-destructuring@^7.20.2": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz" - integrity sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA== +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.0.0", "@ethersproject/bignumber@^5.4.1", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" -"@babel/plugin-transform-destructuring@^7.21.3": - version "7.21.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz#73b46d0fd11cd6ef57dea8a381b1215f4959d401" - integrity sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-destructuring@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz#d3aca7438f6c26c78cdd0b0ba920a336001b27cc" - integrity sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ== +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.0.0", "@ethersproject/bytes@^5.4.0", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@ethersproject/logger" "^5.7.0" -"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": - 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== +"@ethersproject/constants@5.7.0", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.4.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@ethersproject/bignumber" "^5.7.0" -"@babel/plugin-transform-dotall-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" - integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== +"@ethersproject/contracts@5.7.0", "@ethersproject/contracts@^5.0.0", "@ethersproject/contracts@^5.4.1", "@ethersproject/contracts@^5.5.0", "@ethersproject/contracts@^5.7.0": + 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== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@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" -"@babel/plugin-transform-duplicate-keys@^7.18.9": - 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== +"@ethersproject/hardware-wallets@^5.5.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/hardware-wallets/-/hardware-wallets-5.7.0.tgz" + integrity sha512-DjMMXIisRc8xFvEoLoYz1w7JDOYmaz/a0X9sp7Zu668RR8U1zCAyj5ow25HLRW+TCzEC5XiFetTXqS5kXonFCQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@ledgerhq/hw-app-eth" "5.27.2" + "@ledgerhq/hw-transport" "5.26.0" + "@ledgerhq/hw-transport-u2f" "5.26.0" + ethers "^5.7.0" + optionalDependencies: + "@ledgerhq/hw-transport-node-hid" "5.26.0" -"@babel/plugin-transform-duplicate-keys@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" - integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw== +"@ethersproject/hash@5.7.0", "@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@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" -"@babel/plugin-transform-dynamic-import@^7.22.1": - version "7.22.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.1.tgz#6c56afaf896a07026330cf39714532abed8d9ed1" - integrity sha512-rlhWtONnVBPdmt+jeewS0qSnMz/3yLFrqAP8hHC6EDcrYRSyuz9f9yQhHvVn2Ad6+yO9fHXac5piudeYrInxwQ== +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== dependencies: - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@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" -"@babel/plugin-transform-dynamic-import@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz#d6908a8916a810468c4edff73b5b75bda6ad393e" - integrity sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ== +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + 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== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@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" -"@babel/plugin-transform-exponentiation-operator@^7.18.6": - 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== +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" -"@babel/plugin-transform-exponentiation-operator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" - integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" +"@ethersproject/logger@5.7.0", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== -"@babel/plugin-transform-export-namespace-from@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.3.tgz#9b8700aa495007d3bebac8358d1c562434b680b9" - integrity sha512-5Ti1cHLTDnt3vX61P9KZ5IG09bFXp4cDVFJIAeCZuxu9OXXJJZp5iP0n/rzM2+iAutJY+KWEyyHcRaHlpQ/P5g== +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.5.0", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== dependencies: - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@ethersproject/logger" "^5.7.0" -"@babel/plugin-transform-export-namespace-from@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz#57c41cb1d0613d22f548fddd8b288eedb9973a5b" - integrity sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg== +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" -"@babel/plugin-transform-flow-strip-types@^7.16.0": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz" - integrity sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg== +"@ethersproject/properties@5.7.0", "@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-syntax-flow" "^7.18.6" + "@ethersproject/logger" "^5.7.0" -"@babel/plugin-transform-flow-strip-types@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz#6aeca0adcb81dc627c8986e770bfaa4d9812aff5" - integrity sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w== +"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.0.0", "@ethersproject/providers@^5.4.4", "@ethersproject/providers@^5.5.0", "@ethersproject/providers@^5.5.3", "@ethersproject/providers@^5.7.0": + version "5.7.2" + resolved "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-flow" "^7.18.6" + "@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" -"@babel/plugin-transform-for-of@^7.18.8": - 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== +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" -"@babel/plugin-transform-for-of@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.5.tgz#e890032b535f5a2e237a18535f56a9fdaa7b83fc" - integrity sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ== +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== dependencies: - "@babel/helper-plugin-utils" "^7.21.5" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" -"@babel/plugin-transform-for-of@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz#ab1b8a200a8f990137aff9a084f8de4099ab173f" - integrity sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A== +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" -"@babel/plugin-transform-function-name@^7.18.9": - 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== +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + 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== dependencies: - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" + "@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" -"@babel/plugin-transform-function-name@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" - integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== +"@ethersproject/solidity@5.7.0", "@ethersproject/solidity@^5.0.0", "@ethersproject/solidity@^5.0.9", "@ethersproject/solidity@^5.4.0", "@ethersproject/solidity@^5.5.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== dependencies: - "@babel/helper-compilation-targets" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@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" -"@babel/plugin-transform-json-strings@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.3.tgz#a181b8679cf7c93e9d0e3baa5b1776d65be601a9" - integrity sha512-IuvOMdeOOY2X4hRNAT6kwbePtK21BUyrAEgLKviL8pL6AEEVUVcqtRdN/HJXBLGIbt9T3ETmXRnFedRRmQNTYw== +"@ethersproject/strings@5.7.0", "@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== dependencies: - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/plugin-syntax-json-strings" "^7.8.3" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" -"@babel/plugin-transform-json-strings@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz#14b64352fdf7e1f737eed68de1a1468bd2a77ec0" - integrity sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A== +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.0.0", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.4.0", "@ethersproject/transactions@^5.5.0", "@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-json-strings" "^7.8.3" + "@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" -"@babel/plugin-transform-literals@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz" - integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" -"@babel/plugin-transform-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" - integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== +"@ethersproject/wallet@5.7.0", "@ethersproject/wallet@^5.0.0", "@ethersproject/wallet@^5.4.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@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" -"@babel/plugin-transform-logical-assignment-operators@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.3.tgz#9e021455810f33b0baccb82fb759b194f5dc36f0" - integrity sha512-CbayIfOw4av2v/HYZEsH+Klks3NC2/MFIR3QR8gnpGNNPEaq2fdlVCRYG/paKs7/5hvBLQ+H70pGWOHtlNEWNA== +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== dependencies: - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@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" -"@babel/plugin-transform-logical-assignment-operators@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz#66ae5f068fd5a9a5dc570df16f56c2a8462a9d6c" - integrity sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA== +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@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" -"@babel/plugin-transform-member-expression-literals@^7.18.6": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" +"@gar/promisify@^1.0.1", "@gar/promisify@^1.1.3": + version "1.1.3" + resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== -"@babel/plugin-transform-member-expression-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" - integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" +"@gnosis.pm/safe-contracts@^1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@gnosis.pm/safe-contracts/-/safe-contracts-1.3.0.tgz" + integrity sha512-1p+1HwGvxGUVzVkFjNzglwHrLNA67U/axP0Ct85FzzH8yhGJb4t9jDjPYocVMzLorDoWAfKicGy1akPY9jXRVw== -"@babel/plugin-transform-modules-amd@^7.19.6", "@babel/plugin-transform-modules-amd@^7.20.11": - version "7.20.11" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz" - integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g== +"@humanwhocodes/config-array@^0.11.8": + version "0.11.8" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz" + integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== dependencies: - "@babel/helper-module-transforms" "^7.20.11" - "@babel/helper-plugin-utils" "^7.20.2" + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.5" -"@babel/plugin-transform-modules-amd@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz#4e045f55dcf98afd00f85691a68fc0780704f526" - integrity sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ== +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== dependencies: - "@babel/helper-module-transforms" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" -"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.5.tgz#d69fb947eed51af91de82e4708f676864e5e47bc" - integrity sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ== - dependencies: - "@babel/helper-module-transforms" "^7.21.5" - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/helper-simple-access" "^7.21.5" +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@babel/plugin-transform-modules-commonjs@^7.19.6", "@babel/plugin-transform-modules-commonjs@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz#7d9875908d19b8c0536085af7b053fd5bd651bfa" - integrity sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA== - dependencies: - "@babel/helper-module-transforms" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-simple-access" "^7.22.5" +"@humanwhocodes/object-schema@^1.2.0", "@humanwhocodes/object-schema@^1.2.1": + 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== -"@babel/plugin-transform-modules-systemjs@^7.19.6": - version "7.20.11" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz" - integrity sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw== - dependencies: - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.20.11" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-validator-identifier" "^7.19.1" +"@hutson/parse-repository-url@^3.0.0": + version "3.0.2" + resolved "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz" + integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== -"@babel/plugin-transform-modules-systemjs@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.3.tgz#cc507e03e88d87b016feaeb5dae941e6ef50d91e" - integrity sha512-V21W3bKLxO3ZjcBJZ8biSvo5gQ85uIXW2vJfh7JSWf/4SLUSr1tOoHX3ruN4+Oqa2m+BKfsxTR1I+PsvkIWvNw== +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.22.1" - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/helper-validator-identifier" "^7.19.1" + 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" -"@babel/plugin-transform-modules-systemjs@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz#18c31410b5e579a0092638f95c896c2a98a5d496" - integrity sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ== - dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.5" +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@babel/plugin-transform-modules-umd@^7.18.6": - 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== +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" -"@babel/plugin-transform-modules-umd@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" - integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ== +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== dependencies: - "@babel/helper-module-transforms" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" -"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": - 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== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.20.5" - "@babel/helper-plugin-utils" "^7.20.2" +"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== -"@babel/plugin-transform-named-capturing-groups-regex@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.3.tgz#db6fb77e6b3b53ec3b8d370246f0b7cf67d35ab4" - integrity sha512-c6HrD/LpUdNNJsISQZpds3TXvfYIAbo+efE9aWmY/PmSRD0agrJ9cPMt4BmArwUQ7ZymEWTFjTyp+yReLJZh0Q== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.1" - "@babel/helper-plugin-utils" "^7.21.5" +"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== +"@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" -"@babel/plugin-transform-new-target@^7.18.6": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@babel/plugin-transform-new-target@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.3.tgz#deb0377d741cbee2f45305868b9026dcd6dd96e2" - integrity sha512-5RuJdSo89wKdkRTqtM9RVVJzHum9c2s0te9rB7vZC1zKKxcioWIy+xcu4OoIAjyFZhb/bp5KkunuLin1q7Ct+w== +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== dependencies: - "@babel/helper-plugin-utils" "^7.21.5" + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" -"@babel/plugin-transform-new-target@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" - integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw== +"@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": + 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== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" -"@babel/plugin-transform-nullish-coalescing-operator@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.3.tgz#8c519f8bf5af94a9ca6f65cf422a9d3396e542b9" - integrity sha512-CpaoNp16nX7ROtLONNuCyenYdY/l7ZsR6aoVa7rW7nMWisoNoQNIH5Iay/4LDyRjKMuElMqXiBoOQCDLTMGZiw== +"@ledgerhq/cryptoassets@^5.27.2": + version "5.53.0" + resolved "https://registry.npmjs.org/@ledgerhq/cryptoassets/-/cryptoassets-5.53.0.tgz" + integrity sha512-M3ibc3LRuHid5UtL7FI3IC6nMEppvly98QHFoSa7lJU0HDzQxY6zHec/SPM4uuJUC8sXoGVAiRJDkgny54damw== dependencies: - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + invariant "2" -"@babel/plugin-transform-nullish-coalescing-operator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz#f8872c65776e0b552e0849d7596cddd416c3e381" - integrity sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA== +"@ledgerhq/devices@^5.26.0", "@ledgerhq/devices@^5.51.1": + version "5.51.1" + resolved "https://registry.npmjs.org/@ledgerhq/devices/-/devices-5.51.1.tgz" + integrity sha512-4w+P0VkbjzEXC7kv8T1GJ/9AVaP9I6uasMZ/JcdwZBS3qwvKo5A5z9uGhP5c7TvItzcmPb44b5Mw2kT+WjUuAA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@ledgerhq/errors" "^5.50.0" + "@ledgerhq/logs" "^5.50.0" + rxjs "6" + semver "^7.3.5" -"@babel/plugin-transform-numeric-separator@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.3.tgz#02493070ca6685884b0eee705363ee4da2132ab0" - integrity sha512-+AF88fPDJrnseMh5vD9+SH6wq4ZMvpiTMHh58uLs+giMEyASFVhcT3NkoyO+NebFCNnpHJEq5AXO2txV4AGPDQ== - dependencies: - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" +"@ledgerhq/errors@^5.26.0", "@ledgerhq/errors@^5.50.0": + version "5.50.0" + resolved "https://registry.npmjs.org/@ledgerhq/errors/-/errors-5.50.0.tgz" + integrity sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow== -"@babel/plugin-transform-numeric-separator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz#57226a2ed9e512b9b446517ab6fa2d17abb83f58" - integrity sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g== +"@ledgerhq/hw-app-eth@5.27.2": + version "5.27.2" + resolved "https://registry.npmjs.org/@ledgerhq/hw-app-eth/-/hw-app-eth-5.27.2.tgz" + integrity sha512-llNdrE894cCN8j6yxJEUniciyLVcLmu5N0UmIJLOObztG+5rOF4bX54h4SreTWK+E10Z0CzHSeyE5Lz/tVcqqQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@ledgerhq/cryptoassets" "^5.27.2" + "@ledgerhq/errors" "^5.26.0" + "@ledgerhq/hw-transport" "^5.26.0" + bignumber.js "^9.0.1" + rlp "^2.2.6" -"@babel/plugin-transform-object-rest-spread@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.3.tgz#da6fba693effb8c203d8c3bdf7bf4e2567e802e9" - integrity sha512-38bzTsqMMCI46/TQnJwPPpy33EjLCc1Gsm2hRTF6zTMWnKsN61vdrpuzIEGQyKEhDSYDKyZHrrd5FMj4gcUHhw== +"@ledgerhq/hw-transport-node-hid-noevents@^5.26.0": + version "5.51.1" + resolved "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-5.51.1.tgz" + integrity sha512-9wFf1L8ZQplF7XOY2sQGEeOhpmBRzrn+4X43kghZ7FBDoltrcK+s/D7S+7ffg3j2OySyP6vIIIgloXylao5Scg== dependencies: - "@babel/compat-data" "^7.22.3" - "@babel/helper-compilation-targets" "^7.22.1" - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.22.3" + "@ledgerhq/devices" "^5.51.1" + "@ledgerhq/errors" "^5.50.0" + "@ledgerhq/hw-transport" "^5.51.1" + "@ledgerhq/logs" "^5.50.0" + node-hid "2.1.1" -"@babel/plugin-transform-object-rest-spread@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz#9686dc3447df4753b0b2a2fae7e8bc33cdc1f2e1" - integrity sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ== +"@ledgerhq/hw-transport-node-hid@5.26.0": + version "5.26.0" + resolved "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-5.26.0.tgz" + integrity sha512-qhaefZVZatJ6UuK8Wb6WSFNOLWc2mxcv/xgsfKi5HJCIr4bPF/ecIeN+7fRcEaycxj4XykY6Z4A7zDVulfFH4w== dependencies: - "@babel/compat-data" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.22.5" + "@ledgerhq/devices" "^5.26.0" + "@ledgerhq/errors" "^5.26.0" + "@ledgerhq/hw-transport" "^5.26.0" + "@ledgerhq/hw-transport-node-hid-noevents" "^5.26.0" + "@ledgerhq/logs" "^5.26.0" + lodash "^4.17.20" + node-hid "1.3.0" + usb "^1.6.3" -"@babel/plugin-transform-object-super@^7.18.6": - 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== +"@ledgerhq/hw-transport-u2f@5.26.0": + version "5.26.0" + resolved "https://registry.npmjs.org/@ledgerhq/hw-transport-u2f/-/hw-transport-u2f-5.26.0.tgz" + integrity sha512-QTxP1Rsh+WZ184LUOelYVLeaQl3++V3I2jFik+l9JZtakwEHjD0XqOT750xpYNL/vfHsy31Wlz+oicdxGzFk+w== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" + "@ledgerhq/errors" "^5.26.0" + "@ledgerhq/hw-transport" "^5.26.0" + "@ledgerhq/logs" "^5.26.0" + u2f-api "0.2.7" -"@babel/plugin-transform-object-super@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" - integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== +"@ledgerhq/hw-transport@5.26.0": + version "5.26.0" + resolved "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.26.0.tgz" + integrity sha512-NFeJOJmyEfAX8uuIBTpocWHcz630sqPcXbu864Q+OCBm4EK5UOKV1h/pX7e0xgNIKY8zhJ/O4p4cIZp9tnXLHQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.5" + "@ledgerhq/devices" "^5.26.0" + "@ledgerhq/errors" "^5.26.0" + events "^3.2.0" -"@babel/plugin-transform-optional-catch-binding@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.3.tgz#e971a083fc7d209d9cd18253853af1db6d8dc42f" - integrity sha512-bnDFWXFzWY0BsOyqaoSXvMQ2F35zutQipugog/rqotL2S4ciFOKlRYUu9djt4iq09oh2/34hqfRR2k1dIvuu4g== +"@ledgerhq/hw-transport@^5.26.0", "@ledgerhq/hw-transport@^5.51.1": + version "5.51.1" + resolved "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz" + integrity sha512-6wDYdbWrw9VwHIcoDnqWBaDFyviyjZWv6H9vz9Vyhe4Qd7TIFmbTl/eWs6hZvtZBza9K8y7zD8ChHwRI4s9tSw== dependencies: - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@ledgerhq/devices" "^5.51.1" + "@ledgerhq/errors" "^5.50.0" + events "^3.3.0" -"@babel/plugin-transform-optional-catch-binding@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz#842080be3076703be0eaf32ead6ac8174edee333" - integrity sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" +"@ledgerhq/logs@^5.26.0", "@ledgerhq/logs@^5.50.0": + version "5.50.0" + resolved "https://registry.npmjs.org/@ledgerhq/logs/-/logs-5.50.0.tgz" + integrity sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA== -"@babel/plugin-transform-optional-chaining@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.3.tgz#5fd24a4a7843b76da6aeec23c7f551da5d365290" - integrity sha512-63v3/UFFxhPKT8j8u1jTTGVyITxl7/7AfOqK8C5gz1rHURPUGe3y5mvIf68eYKGoBNahtJnTxBKug4BQOnzeJg== +"@lerna/add@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/add/-/add-4.0.0.tgz" + integrity sha512-cpmAH1iS3k8JBxNvnMqrGTTjbY/ZAiKa1ChJzFevMYY3eeqbvhsBKnBcxjRXtdrJ6bd3dCQM+ZtK+0i682Fhng== dependencies: - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@lerna/bootstrap" "4.0.0" + "@lerna/command" "4.0.0" + "@lerna/filter-options" "4.0.0" + "@lerna/npm-conf" "4.0.0" + "@lerna/validation-error" "4.0.0" + dedent "^0.7.0" + npm-package-arg "^8.1.0" + p-map "^4.0.0" + pacote "^11.2.6" + semver "^7.3.4" -"@babel/plugin-transform-optional-chaining@^7.22.5", "@babel/plugin-transform-optional-chaining@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz#4bacfe37001fe1901117672875e931d439811564" - integrity sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg== +"@lerna/bootstrap@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-4.0.0.tgz" + integrity sha512-RkS7UbeM2vu+kJnHzxNRCLvoOP9yGNgkzRdy4UV2hNalD7EP41bLvRVOwRYQ7fhc2QcbhnKNdOBihYRL0LcKtw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@lerna/command" "4.0.0" + "@lerna/filter-options" "4.0.0" + "@lerna/has-npm-version" "4.0.0" + "@lerna/npm-install" "4.0.0" + "@lerna/package-graph" "4.0.0" + "@lerna/pulse-till-done" "4.0.0" + "@lerna/rimraf-dir" "4.0.0" + "@lerna/run-lifecycle" "4.0.0" + "@lerna/run-topologically" "4.0.0" + "@lerna/symlink-binary" "4.0.0" + "@lerna/symlink-dependencies" "4.0.0" + "@lerna/validation-error" "4.0.0" + dedent "^0.7.0" + get-port "^5.1.1" + multimatch "^5.0.0" + npm-package-arg "^8.1.0" + npmlog "^4.1.2" + p-map "^4.0.0" + p-map-series "^2.1.0" + p-waterfall "^2.1.1" + read-package-tree "^5.3.1" + semver "^7.3.4" -"@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.20.7": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz" - integrity sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA== +"@lerna/changed@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/changed/-/changed-4.0.0.tgz" + integrity sha512-cD+KuPRp6qiPOD+BO6S6SN5cARspIaWSOqGBpGnYzLb4uWT8Vk4JzKyYtc8ym1DIwyoFXHosXt8+GDAgR8QrgQ== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@lerna/collect-updates" "4.0.0" + "@lerna/command" "4.0.0" + "@lerna/listable" "4.0.0" + "@lerna/output" "4.0.0" -"@babel/plugin-transform-parameters@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.3.tgz#24477acfd2fd2bc901df906c9bf17fbcfeee900d" - integrity sha512-x7QHQJHPuD9VmfpzboyGJ5aHEr9r7DsAsdxdhJiTB3J3j8dyl+NFZ+rX5Q2RWFDCs61c06qBfS4ys2QYn8UkMw== +"@lerna/check-working-tree@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-4.0.0.tgz" + integrity sha512-/++bxM43jYJCshBiKP5cRlCTwSJdRSxVmcDAXM+1oUewlZJVSVlnks5eO0uLxokVFvLhHlC5kHMc7gbVFPHv6Q== dependencies: - "@babel/helper-plugin-utils" "^7.21.5" + "@lerna/collect-uncommitted" "4.0.0" + "@lerna/describe-ref" "4.0.0" + "@lerna/validation-error" "4.0.0" -"@babel/plugin-transform-parameters@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz#c3542dd3c39b42c8069936e48717a8d179d63a18" - integrity sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg== +"@lerna/child-process@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/child-process/-/child-process-4.0.0.tgz" + integrity sha512-XtCnmCT9eyVsUUHx6y/CTBYdV9g2Cr/VxyseTWBgfIur92/YKClfEtJTbOh94jRT62hlKLqSvux/UhxXVh613Q== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + chalk "^4.1.0" + execa "^5.0.0" + strong-log-transformer "^2.1.0" -"@babel/plugin-transform-private-methods@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.3.tgz#adac38020bab5047482d3297107c1f58e9c574f6" - integrity sha512-fC7jtjBPFqhqpPAE+O4LKwnLq7gGkD3ZmC2E3i4qWH34mH3gOg2Xrq5YMHUq6DM30xhqM1DNftiRaSqVjEG+ug== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.1" - "@babel/helper-plugin-utils" "^7.21.5" - -"@babel/plugin-transform-private-methods@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" - integrity sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA== +"@lerna/clean@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/clean/-/clean-4.0.0.tgz" + integrity sha512-uugG2iN9k45ITx2jtd8nEOoAtca8hNlDCUM0N3lFgU/b1mEQYAPRkqr1qs4FLRl/Y50ZJ41wUz1eazS+d/0osA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@lerna/command" "4.0.0" + "@lerna/filter-options" "4.0.0" + "@lerna/prompt" "4.0.0" + "@lerna/pulse-till-done" "4.0.0" + "@lerna/rimraf-dir" "4.0.0" + p-map "^4.0.0" + p-map-series "^2.1.0" + p-waterfall "^2.1.1" -"@babel/plugin-transform-private-property-in-object@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.3.tgz#031621b02c7b7d95389de1a3dba2fe9e8c548e56" - integrity sha512-C7MMl4qWLpgVCbXfj3UW8rR1xeCnisQ0cU7YJHV//8oNBS0aCIVg1vFnZXxOckHhEpQyqNNkWmvSEWnMLlc+Vw== +"@lerna/cli@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/cli/-/cli-4.0.0.tgz" + integrity sha512-Neaw3GzFrwZiRZv2g7g6NwFjs3er1vhraIniEs0jjVLPMNC4eata0na3GfE5yibkM/9d3gZdmihhZdZ3EBdvYA== dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.22.1" - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@lerna/global-options" "4.0.0" + dedent "^0.7.0" + npmlog "^4.1.2" + yargs "^16.2.0" -"@babel/plugin-transform-private-property-in-object@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz#07a77f28cbb251546a43d175a1dda4cf3ef83e32" - integrity sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ== +"@lerna/collect-uncommitted@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-4.0.0.tgz" + integrity sha512-ufSTfHZzbx69YNj7KXQ3o66V4RC76ffOjwLX0q/ab//61bObJ41n03SiQEhSlmpP+gmFbTJ3/7pTe04AHX9m/g== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@lerna/child-process" "4.0.0" + chalk "^4.1.0" + npmlog "^4.1.2" -"@babel/plugin-transform-property-literals@^7.18.6": - 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== +"@lerna/collect-updates@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-4.0.0.tgz" + integrity sha512-bnNGpaj4zuxsEkyaCZLka9s7nMs58uZoxrRIPJ+nrmrZYp1V5rrd+7/NYTuunOhY2ug1sTBvTAxj3NZQ+JKnOw== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@lerna/child-process" "4.0.0" + "@lerna/describe-ref" "4.0.0" + minimatch "^3.0.4" + npmlog "^4.1.2" + slash "^3.0.0" -"@babel/plugin-transform-property-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" - integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== +"@lerna/command@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/command/-/command-4.0.0.tgz" + integrity sha512-LM9g3rt5FsPNFqIHUeRwWXLNHJ5NKzOwmVKZ8anSp4e1SPrv2HNc1V02/9QyDDZK/w+5POXH5lxZUI1CHaOK/A== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@lerna/child-process" "4.0.0" + "@lerna/package-graph" "4.0.0" + "@lerna/project" "4.0.0" + "@lerna/validation-error" "4.0.0" + "@lerna/write-log-file" "4.0.0" + clone-deep "^4.0.1" + dedent "^0.7.0" + execa "^5.0.0" + is-ci "^2.0.0" + npmlog "^4.1.2" -"@babel/plugin-transform-react-constant-elements@^7.12.1": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.3.tgz#b87a436c3377f29b37409f9c02c99c9ce377909d" - integrity sha512-b5J6muxQYp4H7loAQv/c7GO5cPuRA6H5hx4gO+/Hn+Cu9MRQU0PNiUoWq1L//8sq6kFSNxGXFb2XTaUfa9y+Pg== +"@lerna/conventional-commits@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-4.0.0.tgz" + integrity sha512-CSUQRjJHFrH8eBn7+wegZLV3OrNc0Y1FehYfYGhjLE2SIfpCL4bmfu/ViYuHh9YjwHaA+4SX6d3hR+xkeseKmw== dependencies: - "@babel/helper-plugin-utils" "^7.21.5" + "@lerna/validation-error" "4.0.0" + conventional-changelog-angular "^5.0.12" + conventional-changelog-core "^4.2.2" + conventional-recommended-bump "^6.1.0" + fs-extra "^9.1.0" + get-stream "^6.0.0" + lodash.template "^4.5.0" + npm-package-arg "^8.1.0" + npmlog "^4.1.2" + pify "^5.0.0" + semver "^7.3.4" -"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.18.6": - 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== +"@lerna/create-symlink@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-4.0.0.tgz" + integrity sha512-I0phtKJJdafUiDwm7BBlEUOtogmu8+taxq6PtIrxZbllV9hWg59qkpuIsiFp+no7nfRVuaasNYHwNUhDAVQBig== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + cmd-shim "^4.1.0" + fs-extra "^9.1.0" + npmlog "^4.1.2" -"@babel/plugin-transform-react-jsx-development@^7.18.6": - 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== +"@lerna/create@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/create/-/create-4.0.0.tgz" + integrity sha512-mVOB1niKByEUfxlbKTM1UNECWAjwUdiioIbRQZEeEabtjCL69r9rscIsjlGyhGWCfsdAG5wfq4t47nlDXdLLag== dependencies: - "@babel/plugin-transform-react-jsx" "^7.18.6" + "@lerna/child-process" "4.0.0" + "@lerna/command" "4.0.0" + "@lerna/npm-conf" "4.0.0" + "@lerna/validation-error" "4.0.0" + dedent "^0.7.0" + fs-extra "^9.1.0" + globby "^11.0.2" + init-package-json "^2.0.2" + npm-package-arg "^8.1.0" + p-reduce "^2.1.0" + pacote "^11.2.6" + pify "^5.0.0" + semver "^7.3.4" + slash "^3.0.0" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "^3.0.0" + whatwg-url "^8.4.0" + yargs-parser "20.2.4" -"@babel/plugin-transform-react-jsx@^7.18.6": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.7.tgz" - integrity sha512-Tfq7qqD+tRj3EoDhY00nn2uP2hsRxgYGi5mLQ5TimKav0a9Lrpd4deE+fcLXU8zFYRjlKPHZhpCvfEA6qnBxqQ== +"@lerna/describe-ref@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-4.0.0.tgz" + integrity sha512-eTU5+xC4C5Gcgz+Ey4Qiw9nV2B4JJbMulsYJMW8QjGcGh8zudib7Sduj6urgZXUYNyhYpRs+teci9M2J8u+UvQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-jsx" "^7.18.6" - "@babel/types" "^7.20.7" + "@lerna/child-process" "4.0.0" + npmlog "^4.1.2" -"@babel/plugin-transform-react-jsx@^7.19.0", "@babel/plugin-transform-react-jsx@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.3.tgz#5a1f380df3703ba92eb1a930a539c6d88836f690" - integrity sha512-JEulRWG2f04a7L8VWaOngWiK6p+JOSpB+DAtwfJgOaej1qdbNxqtK7MwTBHjUA10NeFcszlFNqCdbRcirzh2uQ== +"@lerna/diff@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/diff/-/diff-4.0.0.tgz" + integrity sha512-jYPKprQVg41+MUMxx6cwtqsNm0Yxx9GDEwdiPLwcUTFx+/qKCEwifKNJ1oGIPBxyEHX2PFCOjkK39lHoj2qiag== dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-module-imports" "^7.21.4" - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/plugin-syntax-jsx" "^7.21.4" - "@babel/types" "^7.22.3" + "@lerna/child-process" "4.0.0" + "@lerna/command" "4.0.0" + "@lerna/validation-error" "4.0.0" + npmlog "^4.1.2" -"@babel/plugin-transform-react-pure-annotations@^7.18.6": - 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== +"@lerna/exec@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/exec/-/exec-4.0.0.tgz" + integrity sha512-VGXtL/b/JfY84NB98VWZpIExfhLOzy0ozm/0XaS4a2SmkAJc5CeUfrhvHxxkxiTBLkU+iVQUyYEoAT0ulQ8PCw== dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@lerna/child-process" "4.0.0" + "@lerna/command" "4.0.0" + "@lerna/filter-options" "4.0.0" + "@lerna/profiler" "4.0.0" + "@lerna/run-topologically" "4.0.0" + "@lerna/validation-error" "4.0.0" + p-map "^4.0.0" -"@babel/plugin-transform-regenerator@^7.18.6": - 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== +"@lerna/filter-options@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-4.0.0.tgz" + integrity sha512-vV2ANOeZhOqM0rzXnYcFFCJ/kBWy/3OA58irXih9AMTAlQLymWAK0akWybl++sUJ4HB9Hx12TOqaXbYS2NM5uw== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - regenerator-transform "^0.15.1" + "@lerna/collect-updates" "4.0.0" + "@lerna/filter-packages" "4.0.0" + dedent "^0.7.0" + npmlog "^4.1.2" -"@babel/plugin-transform-regenerator@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.21.5.tgz#576c62f9923f94bcb1c855adc53561fd7913724e" - integrity sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w== +"@lerna/filter-packages@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-4.0.0.tgz" + integrity sha512-+4AJIkK7iIiOaqCiVTYJxh/I9qikk4XjNQLhE3kixaqgMuHl1NQ99qXRR0OZqAWB9mh8Z1HA9bM5K1HZLBTOqA== dependencies: - "@babel/helper-plugin-utils" "^7.21.5" - regenerator-transform "^0.15.1" + "@lerna/validation-error" "4.0.0" + multimatch "^5.0.0" + npmlog "^4.1.2" -"@babel/plugin-transform-regenerator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz#cd8a68b228a5f75fa01420e8cc2fc400f0fc32aa" - integrity sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw== +"@lerna/get-npm-exec-opts@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-4.0.0.tgz" + integrity sha512-yvmkerU31CTWS2c7DvmAWmZVeclPBqI7gPVr5VATUKNWJ/zmVcU4PqbYoLu92I9Qc4gY1TuUplMNdNuZTSL7IQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - regenerator-transform "^0.15.1" + npmlog "^4.1.2" -"@babel/plugin-transform-reserved-words@^7.18.6": - 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== +"@lerna/get-packed@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-4.0.0.tgz" + integrity sha512-rfWONRsEIGyPJTxFzC8ECb3ZbsDXJbfqWYyeeQQDrJRPnEJErlltRLPLgC2QWbxFgFPsoDLeQmFHJnf0iDfd8w== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + fs-extra "^9.1.0" + ssri "^8.0.1" + tar "^6.1.0" -"@babel/plugin-transform-reserved-words@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" - integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA== +"@lerna/github-client@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/github-client/-/github-client-4.0.0.tgz" + integrity sha512-2jhsldZtTKXYUBnOm23Lb0Fx8G4qfSXF9y7UpyUgWUj+YZYd+cFxSuorwQIgk5P4XXrtVhsUesIsli+BYSThiw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@lerna/child-process" "4.0.0" + "@octokit/plugin-enterprise-rest" "^6.0.1" + "@octokit/rest" "^18.1.0" + git-url-parse "^11.4.4" + npmlog "^4.1.2" -"@babel/plugin-transform-runtime@^7.16.4": - 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== +"@lerna/gitlab-client@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-4.0.0.tgz" + integrity sha512-OMUpGSkeDWFf7BxGHlkbb35T7YHqVFCwBPSIR6wRsszY8PAzCYahtH3IaJzEJyUg6vmZsNl0FSr3pdA2skhxqA== 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" + node-fetch "^2.6.1" + npmlog "^4.1.2" + whatwg-url "^8.4.0" -"@babel/plugin-transform-runtime@^7.5.5": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.0.tgz" - integrity sha512-ReY6pxwSzEU0b3r2/T/VhqMKg/AkceBT19X0UptA3/tYi5Pe2eXgEUH+NNMC5nok6c6XQz5tyVTUpuezRfSMSg== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.20.2" - 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" +"@lerna/global-options@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/global-options/-/global-options-4.0.0.tgz" + integrity sha512-TRMR8afAHxuYBHK7F++Ogop2a82xQjoGna1dvPOY6ltj/pEx59pdgcJfYcynYqMkFIk8bhLJJN9/ndIfX29FTQ== -"@babel/plugin-transform-shorthand-properties@^7.18.6": - 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== +"@lerna/has-npm-version@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-4.0.0.tgz" + integrity sha512-LQ3U6XFH8ZmLCsvsgq1zNDqka0Xzjq5ibVN+igAI5ccRWNaUsE/OcmsyMr50xAtNQMYMzmpw5GVLAivT2/YzCg== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@lerna/child-process" "4.0.0" + semver "^7.3.4" -"@babel/plugin-transform-shorthand-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" - integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== +"@lerna/import@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/import/-/import-4.0.0.tgz" + integrity sha512-FaIhd+4aiBousKNqC7TX1Uhe97eNKf5/SC7c5WZANVWtC7aBWdmswwDt3usrzCNpj6/Wwr9EtEbYROzxKH8ffg== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@lerna/child-process" "4.0.0" + "@lerna/command" "4.0.0" + "@lerna/prompt" "4.0.0" + "@lerna/pulse-till-done" "4.0.0" + "@lerna/validation-error" "4.0.0" + dedent "^0.7.0" + fs-extra "^9.1.0" + p-map-series "^2.1.0" -"@babel/plugin-transform-spread@^7.19.0", "@babel/plugin-transform-spread@^7.20.7": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz" - integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw== +"@lerna/info@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/info/-/info-4.0.0.tgz" + integrity sha512-8Uboa12kaCSZEn4XRfPz5KU9XXoexSPS4oeYGj76s2UQb1O1GdnEyfjyNWoUl1KlJ2i/8nxUskpXIftoFYH0/Q== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@lerna/command" "4.0.0" + "@lerna/output" "4.0.0" + envinfo "^7.7.4" -"@babel/plugin-transform-spread@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" - integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== +"@lerna/init@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/init/-/init-4.0.0.tgz" + integrity sha512-wY6kygop0BCXupzWj5eLvTUqdR7vIAm0OgyV9WHpMYQGfs1V22jhztt8mtjCloD/O0nEe4tJhdG62XU5aYmPNQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@lerna/child-process" "4.0.0" + "@lerna/command" "4.0.0" + fs-extra "^9.1.0" + p-map "^4.0.0" + write-json-file "^4.3.0" -"@babel/plugin-transform-sticky-regex@^7.18.6": - 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== +"@lerna/link@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/link/-/link-4.0.0.tgz" + integrity sha512-KlvPi7XTAcVOByfaLlOeYOfkkDcd+bejpHMCd1KcArcFTwijOwXOVi24DYomIeHvy6HsX/IUquJ4PPUJIeB4+w== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@lerna/command" "4.0.0" + "@lerna/package-graph" "4.0.0" + "@lerna/symlink-dependencies" "4.0.0" + p-map "^4.0.0" + slash "^3.0.0" -"@babel/plugin-transform-sticky-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" - integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw== +"@lerna/list@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/list/-/list-4.0.0.tgz" + integrity sha512-L2B5m3P+U4Bif5PultR4TI+KtW+SArwq1i75QZ78mRYxPc0U/piau1DbLOmwrdqr99wzM49t0Dlvl6twd7GHFg== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@lerna/command" "4.0.0" + "@lerna/filter-options" "4.0.0" + "@lerna/listable" "4.0.0" + "@lerna/output" "4.0.0" -"@babel/plugin-transform-template-literals@^7.18.9": - 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== +"@lerna/listable@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/listable/-/listable-4.0.0.tgz" + integrity sha512-/rPOSDKsOHs5/PBLINZOkRIX1joOXUXEtyUs5DHLM8q6/RP668x/1lFhw6Dx7/U+L0+tbkpGtZ1Yt0LewCLgeQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@lerna/query-graph" "4.0.0" + chalk "^4.1.0" + columnify "^1.5.4" -"@babel/plugin-transform-template-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" - integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== +"@lerna/log-packed@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-4.0.0.tgz" + integrity sha512-+dpCiWbdzgMAtpajLToy9PO713IHoE6GV/aizXycAyA07QlqnkpaBNZ8DW84gHdM1j79TWockGJo9PybVhrrZQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-typeof-symbol@^7.18.9": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + byte-size "^7.0.0" + columnify "^1.5.4" + has-unicode "^2.0.1" + npmlog "^4.1.2" -"@babel/plugin-transform-typeof-symbol@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" - integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA== +"@lerna/npm-conf@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-4.0.0.tgz" + integrity sha512-uS7H02yQNq3oejgjxAxqq/jhwGEE0W0ntr8vM3EfpCW1F/wZruwQw+7bleJQ9vUBjmdXST//tk8mXzr5+JXCfw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + config-chain "^1.1.12" + pify "^5.0.0" -"@babel/plugin-transform-typescript@^7.22.5": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.9.tgz#91e08ad1eb1028ecc62662a842e93ecfbf3c7234" - integrity sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg== +"@lerna/npm-dist-tag@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-4.0.0.tgz" + integrity sha512-F20sg28FMYTgXqEQihgoqSfwmq+Id3zT23CnOwD+XQMPSy9IzyLf1fFVH319vXIw6NF6Pgs4JZN2Qty6/CQXGw== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.9" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-typescript" "^7.22.5" + "@lerna/otplease" "4.0.0" + npm-package-arg "^8.1.0" + npm-registry-fetch "^9.0.0" + npmlog "^4.1.2" -"@babel/plugin-transform-unicode-escapes@^7.18.10": - 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== +"@lerna/npm-install@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-4.0.0.tgz" + integrity sha512-aKNxq2j3bCH3eXl3Fmu4D54s/YLL9WSwV8W7X2O25r98wzrO38AUN6AB9EtmAx+LV/SP15et7Yueg9vSaanRWg== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@lerna/child-process" "4.0.0" + "@lerna/get-npm-exec-opts" "4.0.0" + fs-extra "^9.1.0" + npm-package-arg "^8.1.0" + npmlog "^4.1.2" + signal-exit "^3.0.3" + write-pkg "^4.0.0" -"@babel/plugin-transform-unicode-escapes@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.21.5.tgz#1e55ed6195259b0e9061d81f5ef45a9b009fb7f2" - integrity sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg== +"@lerna/npm-publish@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-4.0.0.tgz" + integrity sha512-vQb7yAPRo5G5r77DRjHITc9piR9gvEKWrmfCH7wkfBnGWEqu7n8/4bFQ7lhnkujvc8RXOsYpvbMQkNfkYibD/w== dependencies: - "@babel/helper-plugin-utils" "^7.21.5" + "@lerna/otplease" "4.0.0" + "@lerna/run-lifecycle" "4.0.0" + fs-extra "^9.1.0" + libnpmpublish "^4.0.0" + npm-package-arg "^8.1.0" + npmlog "^4.1.2" + pify "^5.0.0" + read-package-json "^3.0.0" -"@babel/plugin-transform-unicode-escapes@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz#ce0c248522b1cb22c7c992d88301a5ead70e806c" - integrity sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg== +"@lerna/npm-run-script@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-4.0.0.tgz" + integrity sha512-Jmyh9/IwXJjOXqKfIgtxi0bxi1pUeKe5bD3S81tkcy+kyng/GNj9WSqD5ZggoNP2NP//s4CLDAtUYLdP7CU9rA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@lerna/child-process" "4.0.0" + "@lerna/get-npm-exec-opts" "4.0.0" + npmlog "^4.1.2" -"@babel/plugin-transform-unicode-property-regex@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.3.tgz#597b6a614dc93eaae605ee293e674d79d32eb380" - integrity sha512-5ScJ+OmdX+O6HRuMGW4kv7RL9vIKdtdAj9wuWUKy1wbHY3jaM/UlyIiC1G7J6UJiiyMukjjK0QwL3P0vBd0yYg== +"@lerna/otplease@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/otplease/-/otplease-4.0.0.tgz" + integrity sha512-Sgzbqdk1GH4psNiT6hk+BhjOfIr/5KhGBk86CEfHNJTk9BK4aZYyJD4lpDbDdMjIV4g03G7pYoqHzH765T4fxw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.1" - "@babel/helper-plugin-utils" "^7.21.5" + "@lerna/prompt" "4.0.0" -"@babel/plugin-transform-unicode-property-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" - integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A== +"@lerna/output@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/output/-/output-4.0.0.tgz" + integrity sha512-Un1sHtO1AD7buDQrpnaYTi2EG6sLF+KOPEAMxeUYG5qG3khTs2Zgzq5WE3dt2N/bKh7naESt20JjIW6tBELP0w== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + npmlog "^4.1.2" -"@babel/plugin-transform-unicode-regex@^7.18.6": - 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== +"@lerna/pack-directory@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-4.0.0.tgz" + integrity sha512-NJrmZNmBHS+5aM+T8N6FVbaKFScVqKlQFJNY2k7nsJ/uklNKsLLl6VhTQBPwMTbf6Tf7l6bcKzpy7aePuq9UiQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@lerna/get-packed" "4.0.0" + "@lerna/package" "4.0.0" + "@lerna/run-lifecycle" "4.0.0" + npm-packlist "^2.1.4" + npmlog "^4.1.2" + tar "^6.1.0" + temp-write "^4.0.0" -"@babel/plugin-transform-unicode-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" - integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg== +"@lerna/package-graph@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-4.0.0.tgz" + integrity sha512-QED2ZCTkfXMKFoTGoccwUzjHtZMSf3UKX14A4/kYyBms9xfFsesCZ6SLI5YeySEgcul8iuIWfQFZqRw+Qrjraw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@lerna/prerelease-id-from-version" "4.0.0" + "@lerna/validation-error" "4.0.0" + npm-package-arg "^8.1.0" + npmlog "^4.1.2" + semver "^7.3.4" -"@babel/plugin-transform-unicode-sets-regex@^7.22.3": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.3.tgz#7c14ee33fa69782b0101d0f7143d3fc73ce00700" - integrity sha512-hNufLdkF8vqywRp+P55j4FHXqAX2LRUccoZHH7AFn1pq5ZOO2ISKW9w13bFZVjBoTqeve2HOgoJCcaziJVhGNw== +"@lerna/package@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/package/-/package-4.0.0.tgz" + integrity sha512-l0M/izok6FlyyitxiQKr+gZLVFnvxRQdNhzmQ6nRnN9dvBJWn+IxxpM+cLqGACatTnyo9LDzNTOj2Db3+s0s8Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.1" - "@babel/helper-plugin-utils" "^7.21.5" - -"@babel/plugin-transform-unicode-sets-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" - integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.21.5": - version "7.22.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.4.tgz#c86a82630f0e8c61d9bb9327b7b896732028cbed" - integrity sha512-c3lHOjbwBv0TkhYCr+XCR6wKcSZ1QbQTVdSkZUaVpLv8CVWotBMArWUi5UAJrcrQaEnleVkkvaV8F/pmc/STZQ== - dependencies: - "@babel/compat-data" "^7.22.3" - "@babel/helper-compilation-targets" "^7.22.1" - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/helper-validator-option" "^7.21.0" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.3" - "@babel/plugin-proposal-private-property-in-object" "^7.21.0" - "@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-import-attributes" "^7.22.3" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.21.5" - "@babel/plugin-transform-async-generator-functions" "^7.22.3" - "@babel/plugin-transform-async-to-generator" "^7.20.7" - "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.21.0" - "@babel/plugin-transform-class-properties" "^7.22.3" - "@babel/plugin-transform-class-static-block" "^7.22.3" - "@babel/plugin-transform-classes" "^7.21.0" - "@babel/plugin-transform-computed-properties" "^7.21.5" - "@babel/plugin-transform-destructuring" "^7.21.3" - "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.9" - "@babel/plugin-transform-dynamic-import" "^7.22.1" - "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-export-namespace-from" "^7.22.3" - "@babel/plugin-transform-for-of" "^7.21.5" - "@babel/plugin-transform-function-name" "^7.18.9" - "@babel/plugin-transform-json-strings" "^7.22.3" - "@babel/plugin-transform-literals" "^7.18.9" - "@babel/plugin-transform-logical-assignment-operators" "^7.22.3" - "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.20.11" - "@babel/plugin-transform-modules-commonjs" "^7.21.5" - "@babel/plugin-transform-modules-systemjs" "^7.22.3" - "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.3" - "@babel/plugin-transform-new-target" "^7.22.3" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.3" - "@babel/plugin-transform-numeric-separator" "^7.22.3" - "@babel/plugin-transform-object-rest-spread" "^7.22.3" - "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-optional-catch-binding" "^7.22.3" - "@babel/plugin-transform-optional-chaining" "^7.22.3" - "@babel/plugin-transform-parameters" "^7.22.3" - "@babel/plugin-transform-private-methods" "^7.22.3" - "@babel/plugin-transform-private-property-in-object" "^7.22.3" - "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.21.5" - "@babel/plugin-transform-reserved-words" "^7.18.6" - "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.20.7" - "@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.21.5" - "@babel/plugin-transform-unicode-property-regex" "^7.22.3" - "@babel/plugin-transform-unicode-regex" "^7.18.6" - "@babel/plugin-transform-unicode-sets-regex" "^7.22.3" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.22.4" - babel-plugin-polyfill-corejs2 "^0.4.3" - babel-plugin-polyfill-corejs3 "^0.8.1" - babel-plugin-polyfill-regenerator "^0.5.0" - core-js-compat "^3.30.2" - semver "^6.3.0" + load-json-file "^6.2.0" + npm-package-arg "^8.1.0" + write-pkg "^4.0.0" -"@babel/preset-env@^7.16.4": - version "7.20.2" - resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz" - integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg== +"@lerna/prerelease-id-from-version@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-4.0.0.tgz" + integrity sha512-GQqguzETdsYRxOSmdFZ6zDBXDErIETWOqomLERRY54f4p+tk4aJjoVdd9xKwehC9TBfIFvlRbL1V9uQGHh1opg== 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" + semver "^7.3.4" -"@babel/preset-env@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.9.tgz#57f17108eb5dfd4c5c25a44c1977eba1df310ac7" - integrity sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g== - dependencies: - "@babel/compat-data" "^7.22.9" - "@babel/helper-compilation-targets" "^7.22.9" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.5" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@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.22.5" - "@babel/plugin-syntax-import-attributes" "^7.22.5" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.22.5" - "@babel/plugin-transform-async-generator-functions" "^7.22.7" - "@babel/plugin-transform-async-to-generator" "^7.22.5" - "@babel/plugin-transform-block-scoped-functions" "^7.22.5" - "@babel/plugin-transform-block-scoping" "^7.22.5" - "@babel/plugin-transform-class-properties" "^7.22.5" - "@babel/plugin-transform-class-static-block" "^7.22.5" - "@babel/plugin-transform-classes" "^7.22.6" - "@babel/plugin-transform-computed-properties" "^7.22.5" - "@babel/plugin-transform-destructuring" "^7.22.5" - "@babel/plugin-transform-dotall-regex" "^7.22.5" - "@babel/plugin-transform-duplicate-keys" "^7.22.5" - "@babel/plugin-transform-dynamic-import" "^7.22.5" - "@babel/plugin-transform-exponentiation-operator" "^7.22.5" - "@babel/plugin-transform-export-namespace-from" "^7.22.5" - "@babel/plugin-transform-for-of" "^7.22.5" - "@babel/plugin-transform-function-name" "^7.22.5" - "@babel/plugin-transform-json-strings" "^7.22.5" - "@babel/plugin-transform-literals" "^7.22.5" - "@babel/plugin-transform-logical-assignment-operators" "^7.22.5" - "@babel/plugin-transform-member-expression-literals" "^7.22.5" - "@babel/plugin-transform-modules-amd" "^7.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.22.5" - "@babel/plugin-transform-modules-systemjs" "^7.22.5" - "@babel/plugin-transform-modules-umd" "^7.22.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.22.5" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.5" - "@babel/plugin-transform-numeric-separator" "^7.22.5" - "@babel/plugin-transform-object-rest-spread" "^7.22.5" - "@babel/plugin-transform-object-super" "^7.22.5" - "@babel/plugin-transform-optional-catch-binding" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.6" - "@babel/plugin-transform-parameters" "^7.22.5" - "@babel/plugin-transform-private-methods" "^7.22.5" - "@babel/plugin-transform-private-property-in-object" "^7.22.5" - "@babel/plugin-transform-property-literals" "^7.22.5" - "@babel/plugin-transform-regenerator" "^7.22.5" - "@babel/plugin-transform-reserved-words" "^7.22.5" - "@babel/plugin-transform-shorthand-properties" "^7.22.5" - "@babel/plugin-transform-spread" "^7.22.5" - "@babel/plugin-transform-sticky-regex" "^7.22.5" - "@babel/plugin-transform-template-literals" "^7.22.5" - "@babel/plugin-transform-typeof-symbol" "^7.22.5" - "@babel/plugin-transform-unicode-escapes" "^7.22.5" - "@babel/plugin-transform-unicode-property-regex" "^7.22.5" - "@babel/plugin-transform-unicode-regex" "^7.22.5" - "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.22.5" - babel-plugin-polyfill-corejs2 "^0.4.4" - babel-plugin-polyfill-corejs3 "^0.8.2" - babel-plugin-polyfill-regenerator "^0.5.1" - core-js-compat "^3.31.0" - semver "^6.3.1" - -"@babel/preset-flow@^7.13.13", "@babel/preset-flow@^7.18.6": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.21.4.tgz#a5de2a1cafa61f0e0b3af9b30ff0295d38d3608f" - integrity sha512-F24cSq4DIBmhq4OzK3dE63NHagb27OPE3eWR+HLekt4Z3Y5MzIIUGF3LlLgV0gN8vzbDViSY7HnrReNVCJXTeA== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-validator-option" "^7.21.0" - "@babel/plugin-transform-flow-strip-types" "^7.21.0" - -"@babel/preset-modules@^0.1.5": - 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== +"@lerna/profiler@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/profiler/-/profiler-4.0.0.tgz" + integrity sha512-/BaEbqnVh1LgW/+qz8wCuI+obzi5/vRE8nlhjPzdEzdmWmZXuCKyWSEzAyHOJWw1ntwMiww5dZHhFQABuoFz9Q== 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" + fs-extra "^9.1.0" + npmlog "^4.1.2" + upath "^2.0.1" -"@babel/preset-react@^7.12.5", "@babel/preset-react@^7.18.6": - version "7.22.3" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.22.3.tgz#2ec7f91d0c924fa2ea0c7cfbbf690bc62b79cd84" - integrity sha512-lxDz1mnZ9polqClBCVBjIVUypoB4qV3/tZUDb/IlYbW1kiiLaXaX+bInbRjl+lNQ/iUZraQ3+S8daEmoELMWug== +"@lerna/project@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/project/-/project-4.0.0.tgz" + integrity sha512-o0MlVbDkD5qRPkFKlBZsXZjoNTWPyuL58564nSfZJ6JYNmgAptnWPB2dQlAc7HWRZkmnC2fCkEdoU+jioPavbg== dependencies: - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/helper-validator-option" "^7.21.0" - "@babel/plugin-transform-react-display-name" "^7.18.6" - "@babel/plugin-transform-react-jsx" "^7.22.3" - "@babel/plugin-transform-react-jsx-development" "^7.18.6" - "@babel/plugin-transform-react-pure-annotations" "^7.18.6" + "@lerna/package" "4.0.0" + "@lerna/validation-error" "4.0.0" + cosmiconfig "^7.0.0" + dedent "^0.7.0" + dot-prop "^6.0.1" + glob-parent "^5.1.1" + globby "^11.0.2" + load-json-file "^6.2.0" + npmlog "^4.1.2" + p-map "^4.0.0" + resolve-from "^5.0.0" + write-json-file "^4.3.0" -"@babel/preset-react@^7.16.0": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz" - integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== +"@lerna/prompt@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/prompt/-/prompt-4.0.0.tgz" + integrity sha512-4Ig46oCH1TH5M7YyTt53fT6TuaKMgqUUaqdgxvp6HP6jtdak6+amcsqB8YGz2eQnw/sdxunx84DfI9XpoLj4bQ== 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" + inquirer "^7.3.3" + npmlog "^4.1.2" -"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.16.0", "@babel/preset-typescript@^7.21.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz#16367d8b01d640e9a507577ed4ee54e0101e51c8" - integrity sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ== +"@lerna/publish@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/publish/-/publish-4.0.0.tgz" + integrity sha512-K8jpqjHrChH22qtkytA5GRKIVFEtqBF6JWj1I8dWZtHs4Jywn8yB1jQ3BAMLhqmDJjWJtRck0KXhQQKzDK2UPg== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.22.5" - "@babel/plugin-transform-typescript" "^7.22.5" + "@lerna/check-working-tree" "4.0.0" + "@lerna/child-process" "4.0.0" + "@lerna/collect-updates" "4.0.0" + "@lerna/command" "4.0.0" + "@lerna/describe-ref" "4.0.0" + "@lerna/log-packed" "4.0.0" + "@lerna/npm-conf" "4.0.0" + "@lerna/npm-dist-tag" "4.0.0" + "@lerna/npm-publish" "4.0.0" + "@lerna/otplease" "4.0.0" + "@lerna/output" "4.0.0" + "@lerna/pack-directory" "4.0.0" + "@lerna/prerelease-id-from-version" "4.0.0" + "@lerna/prompt" "4.0.0" + "@lerna/pulse-till-done" "4.0.0" + "@lerna/run-lifecycle" "4.0.0" + "@lerna/run-topologically" "4.0.0" + "@lerna/validation-error" "4.0.0" + "@lerna/version" "4.0.0" + fs-extra "^9.1.0" + libnpmaccess "^4.0.1" + npm-package-arg "^8.1.0" + npm-registry-fetch "^9.0.0" + npmlog "^4.1.2" + p-map "^4.0.0" + p-pipe "^3.1.0" + pacote "^11.2.6" + semver "^7.3.4" -"@babel/register@^7.13.16": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.21.0.tgz#c97bf56c2472e063774f31d344c592ebdcefa132" - integrity sha512-9nKsPmYDi5DidAqJaQooxIhsLJiNMkGr8ypQ8Uic7cIox7UCDsM7HuUGxdGT7mSDTYbqzIdsOWzfBton/YJrMw== +"@lerna/pulse-till-done@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-4.0.0.tgz" + integrity sha512-Frb4F7QGckaybRhbF7aosLsJ5e9WuH7h0KUkjlzSByVycxY91UZgaEIVjS2oN9wQLrheLMHl6SiFY0/Pvo0Cxg== dependencies: - clone-deep "^4.0.1" - find-cache-dir "^2.0.0" - make-dir "^2.1.0" - pirates "^4.0.5" - source-map-support "^0.5.16" - -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + npmlog "^4.1.2" -"@babel/runtime-corejs3@^7.10.2": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.7.tgz" - integrity sha512-jr9lCZ4RbRQmCR28Q8U8Fu49zvFqLxTY9AMOUz+iyMohMoAgpEcVxY+wJNay99oXOpOcCTODkk70NDN2aaJEeg== +"@lerna/query-graph@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-4.0.0.tgz" + integrity sha512-YlP6yI3tM4WbBmL9GCmNDoeQyzcyg1e4W96y/PKMZa5GbyUvkS2+Jc2kwPD+5KcXou3wQZxSPzR3Te5OenaDdg== dependencies: - core-js-pure "^3.25.1" - regenerator-runtime "^0.13.11" + "@lerna/package-graph" "4.0.0" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.2", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.20.1", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.3", "@babel/runtime@^7.22.6", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682" - integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ== +"@lerna/resolve-symlink@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-4.0.0.tgz" + integrity sha512-RtX8VEUzqT+uLSCohx8zgmjc6zjyRlh6i/helxtZTMmc4+6O4FS9q5LJas2uGO2wKvBlhcD6siibGt7dIC3xZA== dependencies: - regenerator-runtime "^0.14.0" + fs-extra "^9.1.0" + npmlog "^4.1.2" + read-cmd-shim "^2.0.0" -"@babel/template@^7.18.10", "@babel/template@^7.20.7": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz" - integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== +"@lerna/rimraf-dir@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-4.0.0.tgz" + integrity sha512-QNH9ABWk9mcMJh2/muD9iYWBk1oQd40y6oH+f3wwmVGKYU5YJD//+zMiBI13jxZRtwBx0vmBZzkBkK1dR11cBg== dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" + "@lerna/child-process" "4.0.0" + npmlog "^4.1.2" + path-exists "^4.0.0" + rimraf "^3.0.2" -"@babel/template@^7.21.9", "@babel/template@^7.3.3": - version "7.21.9" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.21.9.tgz#bf8dad2859130ae46088a99c1f265394877446fb" - integrity sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ== +"@lerna/run-lifecycle@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-4.0.0.tgz" + integrity sha512-IwxxsajjCQQEJAeAaxF8QdEixfI7eLKNm4GHhXHrgBu185JcwScFZrj9Bs+PFKxwb+gNLR4iI5rpUdY8Y0UdGQ== dependencies: - "@babel/code-frame" "^7.21.4" - "@babel/parser" "^7.21.9" - "@babel/types" "^7.21.5" - -"@babel/template@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" - integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== - dependencies: - "@babel/code-frame" "^7.22.5" - "@babel/parser" "^7.22.5" - "@babel/types" "^7.22.5" - -"@babel/traverse@^7.1.6", "@babel/traverse@^7.22.1", "@babel/traverse@^7.7.2": - version "7.22.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.4.tgz#c3cf96c5c290bd13b55e29d025274057727664c0" - integrity sha512-Tn1pDsjIcI+JcLKq1AVlZEr4226gpuAQTsLMorsYg9tuS/kG7nuwwJ4AB8jfQuEgb/COBwR/DqJxmoiYFu5/rQ== - dependencies: - "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.22.3" - "@babel/helper-environment-visitor" "^7.22.1" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.22.4" - "@babel/types" "^7.22.4" - debug "^4.1.0" - globals "^11.1.0" + "@lerna/npm-conf" "4.0.0" + npm-lifecycle "^3.1.5" + npmlog "^4.1.2" -"@babel/traverse@^7.12.5", "@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7": - version "7.20.12" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz" - integrity sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ== +"@lerna/run-topologically@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-4.0.0.tgz" + integrity sha512-EVZw9hGwo+5yp+VL94+NXRYisqgAlj0jWKWtAIynDCpghRxCE5GMO3xrQLmQgqkpUl9ZxQFpICgYv5DW4DksQA== dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.7" - "@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.7" - "@babel/types" "^7.20.7" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.22.6", "@babel/traverse@^7.22.8": - version "7.22.8" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.8.tgz#4d4451d31bc34efeae01eac222b514a77aa4000e" - integrity sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw== - dependencies: - "@babel/code-frame" "^7.22.5" - "@babel/generator" "^7.22.7" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.22.7" - "@babel/types" "^7.22.5" - debug "^4.1.0" - globals "^11.1.0" + "@lerna/query-graph" "4.0.0" + p-queue "^6.6.2" -"@babel/traverse@^7.4.5": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz" - integrity sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q== +"@lerna/run@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/run/-/run-4.0.0.tgz" + integrity sha512-9giulCOzlMPzcZS/6Eov6pxE9gNTyaXk0Man+iCIdGJNMrCnW7Dme0Z229WWP/UoxDKg71F2tMsVVGDiRd8fFQ== dependencies: - "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.21.4" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.21.4" - "@babel/types" "^7.21.4" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@~7.21.2": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.5.tgz#ad22361d352a5154b498299d523cf72998a4b133" - integrity sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw== - dependencies: - "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.21.5" - "@babel/helper-environment-visitor" "^7.21.5" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.21.5" - "@babel/types" "^7.21.5" - debug "^4.1.0" - globals "^11.1.0" + "@lerna/command" "4.0.0" + "@lerna/filter-options" "4.0.0" + "@lerna/npm-run-script" "4.0.0" + "@lerna/output" "4.0.0" + "@lerna/profiler" "4.0.0" + "@lerna/run-topologically" "4.0.0" + "@lerna/timer" "4.0.0" + "@lerna/validation-error" "4.0.0" + p-map "^4.0.0" -"@babel/types@^7.0.0", "@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.20.7", "@babel/types@^7.3.0", "@babel/types@^7.4.4": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz" - integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg== +"@lerna/symlink-binary@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-4.0.0.tgz" + integrity sha512-zualodWC4q1QQc1pkz969hcFeWXOsVYZC5AWVtAPTDfLl+TwM7eG/O6oP+Rr3fFowspxo6b1TQ6sYfDV6HXNWA== dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" + "@lerna/create-symlink" "4.0.0" + "@lerna/package" "4.0.0" + fs-extra "^9.1.0" + p-map "^4.0.0" -"@babel/types@^7.12.6", "@babel/types@^7.2.0", "@babel/types@^7.21.5", "@babel/types@^7.22.0", "@babel/types@^7.22.3", "@babel/types@^7.22.4", "@babel/types@^7.3.3": - version "7.22.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.4.tgz#56a2653ae7e7591365dabf20b76295410684c071" - integrity sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA== +"@lerna/symlink-dependencies@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-4.0.0.tgz" + integrity sha512-BABo0MjeUHNAe2FNGty1eantWp8u83BHSeIMPDxNq0MuW2K3CiQRaeWT3EGPAzXpGt0+hVzBrA6+OT0GPn7Yuw== dependencies: - "@babel/helper-string-parser" "^7.21.5" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" + "@lerna/create-symlink" "4.0.0" + "@lerna/resolve-symlink" "4.0.0" + "@lerna/symlink-binary" "4.0.0" + fs-extra "^9.1.0" + p-map "^4.0.0" + p-map-series "^2.1.0" -"@babel/types@^7.21.0", "@babel/types@^7.21.4": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz" - integrity sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA== - dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" +"@lerna/timer@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/timer/-/timer-4.0.0.tgz" + integrity sha512-WFsnlaE7SdOvjuyd05oKt8Leg3ENHICnvX3uYKKdByA+S3g+TCz38JsNs7OUZVt+ba63nC2nbXDlUnuT2Xbsfg== -"@babel/types@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" - integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA== +"@lerna/validation-error@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-4.0.0.tgz" + integrity sha512-1rBOM5/koiVWlRi3V6dB863E1YzJS8v41UtsHgMr6gB2ncJ2LsQtMKlJpi3voqcgh41H8UsPXR58RrrpPpufyw== dependencies: - "@babel/helper-string-parser" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.5" - to-fast-properties "^2.0.0" + npmlog "^4.1.2" -"@babel/types@~7.21.2": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" - integrity sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q== +"@lerna/version@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/version/-/version-4.0.0.tgz" + integrity sha512-otUgiqs5W9zGWJZSCCMRV/2Zm2A9q9JwSDS7s/tlKq4mWCYriWo7+wsHEA/nPTMDyYyBO5oyZDj+3X50KDUzeA== dependencies: - "@babel/helper-string-parser" "^7.21.5" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" - -"@base2/pretty-print-object@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4" - integrity sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA== - -"@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== + "@lerna/check-working-tree" "4.0.0" + "@lerna/child-process" "4.0.0" + "@lerna/collect-updates" "4.0.0" + "@lerna/command" "4.0.0" + "@lerna/conventional-commits" "4.0.0" + "@lerna/github-client" "4.0.0" + "@lerna/gitlab-client" "4.0.0" + "@lerna/output" "4.0.0" + "@lerna/prerelease-id-from-version" "4.0.0" + "@lerna/prompt" "4.0.0" + "@lerna/run-lifecycle" "4.0.0" + "@lerna/run-topologically" "4.0.0" + "@lerna/validation-error" "4.0.0" + chalk "^4.1.0" + dedent "^0.7.0" + load-json-file "^6.2.0" + minimatch "^3.0.4" + npmlog "^4.1.2" + p-map "^4.0.0" + p-pipe "^3.1.0" + p-reduce "^2.1.0" + p-waterfall "^2.1.1" + semver "^7.3.4" + slash "^3.0.0" + temp-write "^4.0.0" + write-json-file "^4.3.0" -"@cfx-kit/wallet-avatar@^0.0.5": - version "0.0.5" - resolved "https://registry.yarnpkg.com/@cfx-kit/wallet-avatar/-/wallet-avatar-0.0.5.tgz#c3afe20e1307a6c013a61f2c9162c82f1c586dc0" - integrity sha512-qQjAxtkAWAG2YCUEffFmySVRwFquYCk3fH62dEv0IKnuTHZeqbqmlTgsXPvNUqBo4wPRZt0J4IxxFhykTvFfbA== +"@lerna/write-log-file@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-4.0.0.tgz" + integrity sha512-XRG5BloiArpXRakcnPHmEHJp+4AtnhRtpDIHSghmXD5EichI1uD73J7FgPp30mm2pDRq3FdqB0NbwSEsJ9xFQg== dependencies: - "@types/mersenne-twister" "^1.1.2" - mersenne-twister "^1.1.0" - -"@chainlink/contracts@0.3.1": - version "0.3.1" - resolved "https://registry.npmjs.org/@chainlink/contracts/-/contracts-0.3.1.tgz" - integrity sha512-A8DRvmfNCwLS1iduPPj7wNAZJMe9/ZimMhoHhbbBiq+7Vq/HFjiNcdoQ5NinFdXD5aTsoNUGG5pAYKj7YMpm9A== + npmlog "^4.1.2" + write-file-atomic "^3.0.3" -"@changesets/apply-release-plan@^6.1.3": - version "6.1.3" - resolved "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-6.1.3.tgz" - integrity sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg== +"@manypkg/find-root@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz" + integrity sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA== dependencies: - "@babel/runtime" "^7.20.1" - "@changesets/config" "^2.3.0" - "@changesets/get-version-range-type" "^0.3.2" - "@changesets/git" "^2.0.0" - "@changesets/types" "^5.2.1" - "@manypkg/get-packages" "^1.1.3" - detect-indent "^6.0.0" - fs-extra "^7.0.1" - lodash.startcase "^4.4.0" - outdent "^0.5.0" - prettier "^2.7.1" - resolve-from "^5.0.0" - semver "^5.4.1" + "@babel/runtime" "^7.5.5" + "@types/node" "^12.7.1" + find-up "^4.1.0" + fs-extra "^8.1.0" -"@changesets/assemble-release-plan@^5.2.3": - version "5.2.3" - resolved "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-5.2.3.tgz" - integrity sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g== +"@manypkg/get-packages@^1.1.3": + version "1.1.3" + resolved "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz" + integrity sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A== dependencies: - "@babel/runtime" "^7.20.1" - "@changesets/errors" "^0.1.4" - "@changesets/get-dependents-graph" "^1.3.5" - "@changesets/types" "^5.2.1" - "@manypkg/get-packages" "^1.1.3" - semver "^5.4.1" + "@babel/runtime" "^7.5.5" + "@changesets/types" "^4.0.1" + "@manypkg/find-root" "^1.1.0" + fs-extra "^8.1.0" + globby "^11.0.0" + read-yaml-file "^1.1.0" -"@changesets/changelog-git@^0.1.14": - version "0.1.14" - resolved "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.1.14.tgz" - integrity sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA== +"@metamask/eth-sig-util@^4.0.0": + 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== dependencies: - "@changesets/types" "^5.2.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" -"@changesets/cli@^2.16.0": - version "2.26.0" - resolved "https://registry.npmjs.org/@changesets/cli/-/cli-2.26.0.tgz" - integrity sha512-0cbTiDms+ICTVtEwAFLNW0jBNex9f5+fFv3I771nBvdnV/mOjd1QJ4+f8KtVSOrwD9SJkk9xbDkWFb0oXd8d1Q== +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + version "5.1.1-v1" + resolved "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== dependencies: - "@babel/runtime" "^7.20.1" - "@changesets/apply-release-plan" "^6.1.3" - "@changesets/assemble-release-plan" "^5.2.3" - "@changesets/changelog-git" "^0.1.14" - "@changesets/config" "^2.3.0" - "@changesets/errors" "^0.1.4" - "@changesets/get-dependents-graph" "^1.3.5" - "@changesets/get-release-plan" "^3.0.16" - "@changesets/git" "^2.0.0" - "@changesets/logger" "^0.0.5" - "@changesets/pre" "^1.0.14" - "@changesets/read" "^0.5.9" - "@changesets/types" "^5.2.1" - "@changesets/write" "^0.2.3" - "@manypkg/get-packages" "^1.1.3" - "@types/is-ci" "^3.0.0" - "@types/semver" "^6.0.0" - ansi-colors "^4.1.3" - chalk "^2.1.0" - enquirer "^2.3.0" - external-editor "^3.1.0" - fs-extra "^7.0.1" - human-id "^1.0.2" - is-ci "^3.0.1" - meow "^6.0.0" - outdent "^0.5.0" - p-limit "^2.2.0" - preferred-pm "^3.0.0" - resolve-from "^5.0.0" - semver "^5.4.1" - spawndamnit "^2.0.0" - term-size "^2.1.0" - tty-table "^4.1.5" + eslint-scope "5.1.1" -"@changesets/config@^2.3.0": - version "2.3.0" - resolved "https://registry.npmjs.org/@changesets/config/-/config-2.3.0.tgz" - integrity sha512-EgP/px6mhCx8QeaMAvWtRrgyxW08k/Bx2tpGT+M84jEdX37v3VKfh4Cz1BkwrYKuMV2HZKeHOh8sHvja/HcXfQ== +"@noble/curves@1.1.0", "@noble/curves@~1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.1.0.tgz#f13fc667c89184bc04cccb9b11e8e7bae27d8c3d" + integrity sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA== dependencies: - "@changesets/errors" "^0.1.4" - "@changesets/get-dependents-graph" "^1.3.5" - "@changesets/logger" "^0.0.5" - "@changesets/types" "^5.2.1" - "@manypkg/get-packages" "^1.1.3" - fs-extra "^7.0.1" - micromatch "^4.0.2" + "@noble/hashes" "1.3.1" -"@changesets/errors@^0.1.4": - version "0.1.4" - resolved "https://registry.npmjs.org/@changesets/errors/-/errors-0.1.4.tgz" - integrity sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q== - dependencies: - extendable-error "^0.1.5" +"@noble/hashes@1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz" + integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== -"@changesets/get-dependents-graph@^1.3.5": - version "1.3.5" - resolved "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-1.3.5.tgz" - integrity sha512-w1eEvnWlbVDIY8mWXqWuYE9oKhvIaBhzqzo4ITSJY9hgoqQ3RoBqwlcAzg11qHxv/b8ReDWnMrpjpKrW6m1ZTA== - dependencies: - "@changesets/types" "^5.2.1" - "@manypkg/get-packages" "^1.1.3" - chalk "^2.1.0" - fs-extra "^7.0.1" - semver "^5.4.1" +"@noble/hashes@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" + integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== -"@changesets/get-release-plan@^3.0.16": - version "3.0.16" - resolved "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-3.0.16.tgz" - integrity sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg== - dependencies: - "@babel/runtime" "^7.20.1" - "@changesets/assemble-release-plan" "^5.2.3" - "@changesets/config" "^2.3.0" - "@changesets/pre" "^1.0.14" - "@changesets/read" "^0.5.9" - "@changesets/types" "^5.2.1" - "@manypkg/get-packages" "^1.1.3" +"@noble/hashes@~1.1.1": + version "1.1.5" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.5.tgz" + integrity sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ== -"@changesets/get-version-range-type@^0.3.2": - version "0.3.2" - resolved "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.3.2.tgz" - integrity sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg== +"@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== -"@changesets/git@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@changesets/git/-/git-2.0.0.tgz" - integrity sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A== - dependencies: - "@babel/runtime" "^7.20.1" - "@changesets/errors" "^0.1.4" - "@changesets/types" "^5.2.1" - "@manypkg/get-packages" "^1.1.3" - is-subdir "^1.1.1" - micromatch "^4.0.2" - spawndamnit "^2.0.0" +"@noble/secp256k1@1.6.3", "@noble/secp256k1@~1.6.0": + version "1.6.3" + resolved "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.6.3.tgz" + integrity sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ== -"@changesets/logger@^0.0.5": - version "0.0.5" - resolved "https://registry.npmjs.org/@changesets/logger/-/logger-0.0.5.tgz" - integrity sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw== +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: - chalk "^2.1.0" + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" -"@changesets/parse@^0.3.16": - version "0.3.16" - resolved "https://registry.npmjs.org/@changesets/parse/-/parse-0.3.16.tgz" - integrity sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg== - dependencies: - "@changesets/types" "^5.2.1" - js-yaml "^3.13.1" +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@changesets/pre@^1.0.14": - version "1.0.14" - resolved "https://registry.npmjs.org/@changesets/pre/-/pre-1.0.14.tgz" - integrity sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ== +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: - "@babel/runtime" "^7.20.1" - "@changesets/errors" "^0.1.4" - "@changesets/types" "^5.2.1" - "@manypkg/get-packages" "^1.1.3" - fs-extra "^7.0.1" + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" -"@changesets/read@^0.5.9": - version "0.5.9" - resolved "https://registry.npmjs.org/@changesets/read/-/read-0.5.9.tgz" - integrity sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ== +"@nomicfoundation/ethereumjs-block@^4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-4.0.0.tgz" + integrity sha512-bk8uP8VuexLgyIZAHExH1QEovqx0Lzhc9Ntm63nCRKLHXIZkobaFaeCVwTESV7YkPKUk7NiK11s8ryed4CS9yA== dependencies: - "@babel/runtime" "^7.20.1" - "@changesets/git" "^2.0.0" - "@changesets/logger" "^0.0.5" - "@changesets/parse" "^0.3.16" - "@changesets/types" "^5.2.1" - chalk "^2.1.0" - fs-extra "^7.0.1" - p-filter "^2.1.0" - -"@changesets/types@^4.0.1": - version "4.1.0" - resolved "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz" - integrity sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw== - -"@changesets/types@^5.2.1": - version "5.2.1" - resolved "https://registry.npmjs.org/@changesets/types/-/types-5.2.1.tgz" - integrity sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg== + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-trie" "^5.0.0" + "@nomicfoundation/ethereumjs-tx" "^4.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + ethereum-cryptography "0.1.3" -"@changesets/write@^0.2.3": - version "0.2.3" - resolved "https://registry.npmjs.org/@changesets/write/-/write-0.2.3.tgz" - integrity sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw== +"@nomicfoundation/ethereumjs-blockchain@^6.0.0": + version "6.0.0" + resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-6.0.0.tgz" + integrity sha512-pLFEoea6MWd81QQYSReLlLfH7N9v7lH66JC/NMPN848ySPPQA5renWnE7wPByfQFzNrPBuDDRFFULMDmj1C0xw== dependencies: - "@babel/runtime" "^7.20.1" - "@changesets/types" "^5.2.1" - fs-extra "^7.0.1" - human-id "^1.0.2" - prettier "^2.7.1" + "@nomicfoundation/ethereumjs-block" "^4.0.0" + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-ethash" "^2.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-trie" "^5.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + abstract-level "^1.0.3" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + level "^8.0.0" + lru-cache "^5.1.1" + memory-level "^1.0.0" -"@codechecks/client@^0.1.11": - version "0.1.12" - resolved "https://registry.npmjs.org/@codechecks/client/-/client-0.1.12.tgz" - integrity sha512-2GHHvhO3kaOyxFXxOaiznlY8ARmz33/p+WQdhc2y6wzWw5eOl2wSwg1eZxx3LsWlAnB963Y4bd1YjZcGIhKRzA== +"@nomicfoundation/ethereumjs-common@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-3.0.0.tgz" + integrity sha512-WS7qSshQfxoZOpHG/XqlHEGRG1zmyjYrvmATvc4c62+gZXgre1ymYP8ZNgx/3FyZY0TWe9OjFlKOfLqmgOeYwA== dependencies: - bluebird "^3.5.3" - chalk "^2.4.2" - commander "^2.19.0" - debug "^4.1.1" - execa "^1.0.0" - glob "^7.1.3" - graceful-fs "^4.1.15" - js-yaml "^3.13.1" - json5 "^2.1.0" - lodash "^4.17.11" - marked "^0.7.0" - marked-terminal "^3.3.0" - mkdirp "^0.5.1" - ms "^2.1.1" - promise "^8.0.2" - request "^2.88.0" - request-promise "^4.2.2" - ts-essentials "^1.0.2" - ts-node "^8.0.2" - url-join "^4.0.0" - -"@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== + "@nomicfoundation/ethereumjs-util" "^8.0.0" + crc-32 "^1.2.0" -"@cspotcode/source-map-support@^0.8.0": - 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== +"@nomicfoundation/ethereumjs-ethash@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-2.0.0.tgz" + integrity sha512-WpDvnRncfDUuXdsAXlI4lXbqUDOA+adYRQaEezIkxqDkc+LDyYDbd/xairmY98GnQzo1zIqsIL6GB5MoMSJDew== dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@csstools/normalize.css@*": - version "12.0.0" - resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-12.0.0.tgz#a9583a75c3f150667771f30b60d9f059473e62c4" - integrity sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg== + "@nomicfoundation/ethereumjs-block" "^4.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + abstract-level "^1.0.3" + bigint-crypto-utils "^3.0.23" + ethereum-cryptography "0.1.3" -"@csstools/postcss-cascade-layers@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz#8a997edf97d34071dd2e37ea6022447dd9e795ad" - integrity sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA== +"@nomicfoundation/ethereumjs-evm@1.0.0", "@nomicfoundation/ethereumjs-evm@^1.0.0", "@nomicfoundation/ethereumjs-evm@^1.0.0-rc.3": + version "1.0.0" + resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-1.0.0.tgz" + integrity sha512-hVS6qRo3V1PLKCO210UfcEQHvlG7GqR8iFzp0yyjTg2TmJQizcChKgWo8KFsdMw6AyoLgLhHGHw4HdlP8a4i+Q== dependencies: - "@csstools/selector-specificity" "^2.0.2" - postcss-selector-parser "^6.0.10" + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + "@types/async-eventemitter" "^0.2.1" + async-eventemitter "^0.2.4" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + mcl-wasm "^0.7.1" + rustbn.js "~0.2.0" -"@csstools/postcss-color-function@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz#2bd36ab34f82d0497cfacdc9b18d34b5e6f64b6b" - integrity sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw== - dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - postcss-value-parser "^4.2.0" +"@nomicfoundation/ethereumjs-rlp@^4.0.0", "@nomicfoundation/ethereumjs-rlp@^4.0.0-beta.2": + version "4.0.0" + resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-4.0.0.tgz" + integrity sha512-GaSOGk5QbUk4eBP5qFbpXoZoZUj/NrW7MRa0tKY4Ew4c2HAS0GXArEMAamtFrkazp0BO4K5p2ZCG3b2FmbShmw== -"@csstools/postcss-font-format-keywords@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz#677b34e9e88ae997a67283311657973150e8b16a" - integrity sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg== +"@nomicfoundation/ethereumjs-statemanager@^1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-1.0.0.tgz" + integrity sha512-jCtqFjcd2QejtuAMjQzbil/4NHf5aAWxUc+CvS0JclQpl+7M0bxMofR2AJdtz+P3u0ke2euhYREDiE7iSO31vQ== dependencies: - postcss-value-parser "^4.2.0" + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-trie" "^5.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + functional-red-black-tree "^1.0.1" -"@csstools/postcss-hwb-function@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz#ab54a9fce0ac102c754854769962f2422ae8aa8b" - integrity sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w== +"@nomicfoundation/ethereumjs-trie@^5.0.0": + version "5.0.0" + resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-5.0.0.tgz" + integrity sha512-LIj5XdE+s+t6WSuq/ttegJzZ1vliwg6wlb+Y9f4RlBpuK35B9K02bO7xU+E6Rgg9RGptkWd6TVLdedTI4eNc2A== dependencies: - postcss-value-parser "^4.2.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + ethereum-cryptography "0.1.3" + readable-stream "^3.6.0" -"@csstools/postcss-ic-unit@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz#28237d812a124d1a16a5acc5c3832b040b303e58" - integrity sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw== +"@nomicfoundation/ethereumjs-tx@^4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-4.0.0.tgz" + integrity sha512-Gg3Lir2lNUck43Kp/3x6TfBNwcWC9Z1wYue9Nz3v4xjdcv6oDW9QSMJxqsKw9QEGoBBZ+gqwpW7+F05/rs/g1w== dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - postcss-value-parser "^4.2.0" + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + ethereum-cryptography "0.1.3" -"@csstools/postcss-is-pseudo-class@^2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz#846ae6c0d5a1eaa878fce352c544f9c295509cd1" - integrity sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA== +"@nomicfoundation/ethereumjs-util@^8.0.0", "@nomicfoundation/ethereumjs-util@^8.0.0-rc.3": + version "8.0.0" + resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-8.0.0.tgz" + integrity sha512-2emi0NJ/HmTG+CGY58fa+DQuAoroFeSH9gKu9O6JnwTtlzJtgfTixuoOqLEgyyzZVvwfIpRueuePb8TonL1y+A== dependencies: - "@csstools/selector-specificity" "^2.0.0" - postcss-selector-parser "^6.0.10" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0-beta.2" + ethereum-cryptography "0.1.3" -"@csstools/postcss-nested-calc@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz#d7e9d1d0d3d15cf5ac891b16028af2a1044d0c26" - integrity sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ== +"@nomicfoundation/ethereumjs-vm@^6.0.0", "@nomicfoundation/ethereumjs-vm@^6.0.0-rc.3": + version "6.0.0" + resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-6.0.0.tgz" + integrity sha512-JMPxvPQ3fzD063Sg3Tp+UdwUkVxMoo1uML6KSzFhMH3hoQi/LMuXBoEHAoW83/vyNS9BxEe6jm6LmT5xdeEJ6w== dependencies: - postcss-value-parser "^4.2.0" + "@nomicfoundation/ethereumjs-block" "^4.0.0" + "@nomicfoundation/ethereumjs-blockchain" "^6.0.0" + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-evm" "^1.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-statemanager" "^1.0.0" + "@nomicfoundation/ethereumjs-trie" "^5.0.0" + "@nomicfoundation/ethereumjs-tx" "^4.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + "@types/async-eventemitter" "^0.2.1" + async-eventemitter "^0.2.4" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + functional-red-black-tree "^1.0.1" + mcl-wasm "^0.7.1" + rustbn.js "~0.2.0" -"@csstools/postcss-normalize-display-values@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz#15da54a36e867b3ac5163ee12c1d7f82d4d612c3" - integrity sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw== +"@nomicfoundation/hardhat-chai-matchers@^1.0.3": + version "1.0.6" + resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-1.0.6.tgz" + integrity sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ== dependencies: - postcss-value-parser "^4.2.0" + "@ethersproject/abi" "^5.1.2" + "@types/chai-as-promised" "^7.1.3" + chai-as-promised "^7.1.1" + deep-eql "^4.0.1" + ordinal "^1.0.3" -"@csstools/postcss-oklab-function@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz#88cee0fbc8d6df27079ebd2fa016ee261eecf844" - integrity sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA== - dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - postcss-value-parser "^4.2.0" - -"@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz#542292558384361776b45c85226b9a3a34f276fa" - integrity sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-stepped-value-functions@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz#f8772c3681cc2befed695e2b0b1d68e22f08c4f4" - integrity sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-text-decoration-shorthand@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz#ea96cfbc87d921eca914d3ad29340d9bcc4c953f" - integrity sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw== +"@nomicfoundation/hardhat-network-helpers@^1.0.0", "@nomicfoundation/hardhat-network-helpers@^1.0.8": + version "1.0.8" + resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.8.tgz" + integrity sha512-MNqQbzUJZnCMIYvlniC3U+kcavz/PhhQSsY90tbEtUyMj/IQqsLwIRZa4ctjABh3Bz0KCh9OXUZ7Yk/d9hr45Q== dependencies: - postcss-value-parser "^4.2.0" + ethereumjs-util "^7.1.4" -"@csstools/postcss-trigonometric-functions@^1.0.2": +"@nomicfoundation/hardhat-toolbox@^1.0.2": version "1.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz#94d3e4774c36d35dcdc88ce091336cb770d32756" - integrity sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og== - dependencies: - postcss-value-parser "^4.2.0" + resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-1.0.2.tgz" + integrity sha512-8CEgWSKUK2aMit+76Sez8n7UB0Ze1lwT+LcWxj4EFP30lQWOwOws048t6MTPfThH0BlSWjC6hJRr0LncIkc1Sw== -"@csstools/postcss-unset-value@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz#c99bb70e2cdc7312948d1eb41df2412330b81f77" - integrity sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g== +"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.0.tgz#83a7367342bd053a76d04bbcf4f373fef07cf760" + integrity sha512-vEF3yKuuzfMHsZecHQcnkUrqm8mnTWfJeEVFHpg+cO+le96xQA4lAJYdUan8pXZohQxv1fSReQsn4QGNuBNuCw== -"@csstools/selector-specificity@^2.0.0", "@csstools/selector-specificity@^2.0.2": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016" - integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== +"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.0.tgz#1225f7da647ae1ad25a87125664704ecc0af6ccc" + integrity sha512-dlHeIg0pTL4dB1l9JDwbi/JG6dHQaU1xpDK+ugYO8eJ1kxx9Dh2isEUtA4d02cQAl22cjOHTvifAk96A+ItEHA== -"@defi-wonderland/smock@^2.0.2": - version "2.3.4" - resolved "https://registry.npmjs.org/@defi-wonderland/smock/-/smock-2.3.4.tgz" - integrity sha512-VYJbsoCOdFRyGkAwvaQhQRrU6V8AjK3five8xdbo41DEE9n3qXzUNBUxyD9HhXB/dWWPFWT21IGw5Ztl6Qw3Ew== - dependencies: - "@nomicfoundation/ethereumjs-evm" "^1.0.0-rc.3" - "@nomicfoundation/ethereumjs-util" "^8.0.0-rc.3" - "@nomicfoundation/ethereumjs-vm" "^6.0.0-rc.3" - diff "^5.0.0" - lodash.isequal "^4.5.0" - lodash.isequalwith "^4.4.0" - rxjs "^7.2.0" - semver "^7.3.5" +"@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.0.tgz#dbc052dcdfd50ae50fd5ae1788b69b4e0fa40040" + integrity sha512-WFCZYMv86WowDA4GiJKnebMQRt3kCcFqHeIomW6NMyqiKqhK1kIZCxSLDYsxqlx396kKLPN1713Q1S8tu68GKg== -"@discoveryjs/json-ext@^0.5.0", "@discoveryjs/json-ext@^0.5.3": - version "0.5.7" - resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" - integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== +"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.0.tgz#e6b2eea633995b557e74e881d2a43eab4760903d" + integrity sha512-DTw6MNQWWlCgc71Pq7CEhEqkb7fZnS7oly13pujs4cMH1sR0JzNk90Mp1zpSCsCs4oKan2ClhMlLKtNat/XRKQ== -"@emotion/babel-plugin@^11.11.0": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" - integrity sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ== - dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/runtime" "^7.18.3" - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/serialize" "^1.1.2" - babel-plugin-macros "^3.1.0" - convert-source-map "^1.5.0" - escape-string-regexp "^4.0.0" - find-root "^1.1.0" - source-map "^0.5.7" - stylis "4.2.0" +"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.0.tgz#af81107f5afa794f19988a368647727806e18dc4" + integrity sha512-wUpUnR/3GV5Da88MhrxXh/lhb9kxh9V3Jya2NpBEhKDIRCDmtXMSqPMXHZmOR9DfCwCvG6vLFPr/+YrPCnUN0w== -"@emotion/cache@^11.11.0", "@emotion/cache@^11.4.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" +"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.0": + version "0.1.0" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.0.tgz" + integrity sha512-lR0AxK1x/MeKQ/3Pt923kPvwigmGX3OxeU5qNtQ9pj9iucgk4PzhbS3ruUeSpYhUxG50jN4RkIGwUMoev5lguw== -"@emotion/hash@^0.9.0": - version "0.9.0" - resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz" - integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ== +"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.0": + version "0.1.0" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.0.tgz" + integrity sha512-A1he/8gy/JeBD3FKvmI6WUJrGrI5uWJNr5Xb9WdV+DK0F8msuOqpEByLlnTdLkXMwW7nSl3awvLezOs9xBHJEg== -"@emotion/hash@^0.9.1": - version "0.9.1" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" - integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== +"@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.0.tgz#9d4bca1cc9a1333fde985675083b0b7d165f6076" + integrity sha512-7x5SXZ9R9H4SluJZZP8XPN+ju7Mx+XeUMWZw7ZAqkdhP5mK19I4vz3x0zIWygmfE8RT7uQ5xMap0/9NPsO+ykw== -"@emotion/is-prop-valid@^1.1.0", "@emotion/is-prop-valid@^1.1.2", "@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" +"@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.0.tgz#0db5bfc6aa952bea4098d8d2c8947b4e5c4337ee" + integrity sha512-m7w3xf+hnE774YRXu+2mGV7RiF3QJtUoiYU61FascCkQhX3QMQavh7saH/vzb2jN5D24nT/jwvaHYX/MAM9zUw== -"@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.6", "@emotion/react@^11.8.1": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.0.tgz#408196b7ef8729d8ad08fc061b03b046d1460e02" - integrity sha512-ZSK3ZJsNkwfjT3JpDAWJZlrGD81Z3ytNDsxw1LKq1o+xkmO5pnWfr6gmCC8gHEFf3nSSX/09YrG67jybNPxSUw== - dependencies: - "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.11.0" - "@emotion/cache" "^11.11.0" - "@emotion/serialize" "^1.1.2" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" - "@emotion/utils" "^1.2.1" - "@emotion/weak-memoize" "^0.3.1" - hoist-non-react-statics "^3.3.1" - -"@emotion/serialize@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.2.tgz#017a6e4c9b8a803bd576ff3d52a0ea6fa5a62b51" - integrity sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA== - dependencies: - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/unitless" "^0.8.1" - "@emotion/utils" "^1.2.1" - csstype "^3.0.2" +"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.0.tgz#2e0f39a2924dcd77db6b419828595e984fabcb33" + integrity sha512-xCuybjY0sLJQnJhupiFAXaek2EqF0AP0eBjgzaalPXSNvCEN6ZYHvUzdA50ENDVeSYFXcUsYf3+FsD3XKaeptA== -"@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.6.0": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.11.0.tgz#26b75e1b5a1b7a629d7c0a8b708fbf5a9cdce346" - integrity sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng== - dependencies: - "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.11.0" - "@emotion/is-prop-valid" "^1.2.1" - "@emotion/serialize" "^1.1.2" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" - "@emotion/utils" "^1.2.1" - -"@emotion/stylis@^0.8.4": - version "0.8.5" - resolved "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz" - integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== +"@nomicfoundation/solidity-analyzer@^0.1.0": + version "0.1.0" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.0.tgz" + integrity sha512-xGWAiVCGOycvGiP/qrlf9f9eOn7fpNbyJygcB0P21a1MDuVPlKt0Srp7rvtBEutYQ48ouYnRXm33zlRnlTOPHg== + optionalDependencies: + "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.1.0" + "@nomicfoundation/solidity-analyzer-darwin-x64" "0.1.0" + "@nomicfoundation/solidity-analyzer-freebsd-x64" "0.1.0" + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu" "0.1.0" + "@nomicfoundation/solidity-analyzer-linux-arm64-musl" "0.1.0" + "@nomicfoundation/solidity-analyzer-linux-x64-gnu" "0.1.0" + "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.0" + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc" "0.1.0" + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc" "0.1.0" + "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.0" -"@emotion/unitless@^0.7.4": - version "0.7.5" - resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz" - integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== +"@nomiclabs/hardhat-ethers@^2.0.2": + version "2.2.1" + resolved "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.1.tgz" + integrity sha512-RHWYwnxryWR8hzRmU4Jm/q4gzvXpetUOJ4OPlwH2YARcDB+j79+yAYCwO0lN1SUOb4++oOTJEe6AWLEc42LIvg== -"@emotion/unitless@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" - integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== +"@nomiclabs/hardhat-etherscan@^3.0.0": + version "3.1.7" + resolved "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.7.tgz" + integrity sha512-tZ3TvSgpvsQ6B6OGmo1/Au6u8BrAkvs1mIC/eURA3xgIfznUZBhmpne8hv7BXUzw9xNL3fXdpOYgOQlVMTcoHQ== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@ethersproject/address" "^5.0.2" + cbor "^8.1.0" + chalk "^2.4.2" + debug "^4.1.1" + fs-extra "^7.0.1" + lodash "^4.17.11" + semver "^6.3.0" + table "^6.8.0" + undici "^5.14.0" -"@emotion/use-insertion-effect-with-fallbacks@^1.0.0", "@emotion/use-insertion-effect-with-fallbacks@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" - integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== +"@nomiclabs/hardhat-etherscan@^3.1.0": + version "3.1.4" + resolved "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.4.tgz" + integrity sha512-fw8JCfukf6MdIGoySRmSftlM2wBgoaSbWQZgiYfD/KTeaSFEWCdMpuPZcLSBXtwtnQyyWDs07Lo7fL8HSqtD2Q== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@ethersproject/address" "^5.0.2" + cbor "^8.1.0" + chalk "^2.4.2" + debug "^4.1.1" + fs-extra "^7.0.1" + lodash "^4.17.11" + semver "^6.3.0" + table "^6.8.0" + undici "^5.4.0" -"@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== +"@nomiclabs/hardhat-waffle@^2.0.1", "@nomiclabs/hardhat-waffle@^2.0.3": + version "2.0.3" + resolved "https://registry.npmjs.org/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.3.tgz" + integrity sha512-049PHSnI1CZq6+XTbrMbMv5NaL7cednTfPenx02k3cEh8wBMLa6ys++dBETJa6JjfwgA9nBhhHQ173LJv6k2Pg== + dependencies: + "@types/sinon-chai" "^3.2.3" + "@types/web3" "1.0.19" -"@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== +"@npmcli/ci-detect@^1.0.0": + version "1.4.0" + resolved "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz" + integrity sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q== -"@ensdomains/address-encoder@^0.1.7": - version "0.1.9" - resolved "https://registry.npmjs.org/@ensdomains/address-encoder/-/address-encoder-0.1.9.tgz" - integrity sha512-E2d2gP4uxJQnDu2Kfg1tHNspefzbLT8Tyjrm5sEuim32UkU2sm5xL4VXtgc2X33fmPEw9+jUMpGs4veMbf+PYg== +"@npmcli/fs@^1.0.0": + version "1.1.1" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz" + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== dependencies: - bech32 "^1.1.3" - blakejs "^1.1.0" - bn.js "^4.11.8" - bs58 "^4.0.1" - crypto-addr-codec "^0.1.7" - nano-base32 "^1.0.1" - ripemd160 "^2.0.2" + "@gar/promisify" "^1.0.1" + semver "^7.3.5" -"@ensdomains/ens@0.4.5", "@ensdomains/ens@^0.4.4": - version "0.4.5" - resolved "https://registry.npmjs.org/@ensdomains/ens/-/ens-0.4.5.tgz" - integrity sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw== +"@npmcli/fs@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" + integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== dependencies: - bluebird "^3.5.2" - eth-ens-namehash "^2.0.8" - solc "^0.4.20" - testrpc "0.0.1" - web3-utils "^1.0.0-beta.31" + "@gar/promisify" "^1.1.3" + semver "^7.3.5" -"@ensdomains/ensjs@^2.1.0": +"@npmcli/git@^2.1.0": version "2.1.0" - resolved "https://registry.npmjs.org/@ensdomains/ensjs/-/ensjs-2.1.0.tgz" - integrity sha512-GRbGPT8Z/OJMDuxs75U/jUNEC0tbL0aj7/L/QQznGYKm/tiasp+ndLOaoULy9kKJFC0TBByqfFliEHDgoLhyog== + resolved "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz" + integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== dependencies: - "@babel/runtime" "^7.4.4" - "@ensdomains/address-encoder" "^0.1.7" - "@ensdomains/ens" "0.4.5" - "@ensdomains/resolver" "0.2.4" - content-hash "^2.5.2" - eth-ens-namehash "^2.0.8" - ethers "^5.0.13" - js-sha3 "^0.8.0" + "@npmcli/promise-spawn" "^1.3.2" + lru-cache "^6.0.0" + mkdirp "^1.0.4" + npm-pick-manifest "^6.1.1" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^2.0.2" -"@ensdomains/resolver@0.2.4", "@ensdomains/resolver@^0.2.4": - version "0.2.4" - resolved "https://registry.npmjs.org/@ensdomains/resolver/-/resolver-0.2.4.tgz" - integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== +"@npmcli/installed-package-contents@^1.0.6": + version "1.0.7" + resolved "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz" + integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== + dependencies: + npm-bundled "^1.1.1" + npm-normalize-package-bin "^1.0.1" -"@es-joy/jsdoccomment@~0.39.4": - version "0.39.4" - resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.39.4.tgz#6b8a62e9b3077027837728818d3c4389a898b392" - integrity sha512-Jvw915fjqQct445+yron7Dufix9A+m9j1fCJYlCo1FWlRvTxa3pjJelxdSTdaLWcTwRU6vbL+NYjO4YuNIS5Qg== +"@npmcli/move-file@^1.0.1": + version "1.1.2" + resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== dependencies: - comment-parser "1.3.1" - esquery "^1.5.0" - jsdoc-type-pratt-parser "~4.0.0" + mkdirp "^1.0.4" + rimraf "^3.0.2" -"@esbuild/android-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" - integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== - -"@esbuild/android-arm64@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.17.tgz#9e00eb6865ed5f2dbe71a1e96f2c52254cd92903" - integrity sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg== - -"@esbuild/android-arm@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" - integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== - -"@esbuild/android-arm@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.17.tgz#1aa013b65524f4e9f794946b415b32ae963a4618" - integrity sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg== - -"@esbuild/android-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" - integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== - -"@esbuild/android-x64@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.17.tgz#c2bd0469b04ded352de011fae34a7a1d4dcecb79" - integrity sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw== - -"@esbuild/darwin-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" - integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== - -"@esbuild/darwin-arm64@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz#0c21a59cb5bd7a2cec66c7a42431dca42aefeddd" - integrity sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g== - -"@esbuild/darwin-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" - integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== - -"@esbuild/darwin-x64@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.17.tgz#92f8763ff6f97dff1c28a584da7b51b585e87a7b" - integrity sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g== - -"@esbuild/freebsd-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" - integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== - -"@esbuild/freebsd-arm64@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.17.tgz#934f74bdf4022e143ba2f21d421b50fd0fead8f8" - integrity sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ== - -"@esbuild/freebsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" - integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== - -"@esbuild/freebsd-x64@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.17.tgz#16b6e90ba26ecc865eab71c56696258ec7f5d8bf" - integrity sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA== - -"@esbuild/linux-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" - integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== - -"@esbuild/linux-arm64@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.17.tgz#179a58e8d4c72116eb068563629349f8f4b48072" - integrity sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ== - -"@esbuild/linux-arm@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" - integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== - -"@esbuild/linux-arm@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.17.tgz#9d78cf87a310ae9ed985c3915d5126578665c7b5" - integrity sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg== - -"@esbuild/linux-ia32@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" - integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== - -"@esbuild/linux-ia32@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.17.tgz#6fed202602d37361bca376c9d113266a722a908c" - integrity sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg== - -"@esbuild/linux-loong64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" - integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== - -"@esbuild/linux-loong64@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.17.tgz#cdc60304830be1e74560c704bfd72cab8a02fa06" - integrity sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg== - -"@esbuild/linux-mips64el@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" - integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== - -"@esbuild/linux-mips64el@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.17.tgz#c367b2855bb0902f5576291a2049812af2088086" - integrity sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ== - -"@esbuild/linux-ppc64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" - integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== - -"@esbuild/linux-ppc64@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.17.tgz#7fdc0083d42d64a4651711ee0a7964f489242f45" - integrity sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ== - -"@esbuild/linux-riscv64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" - integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== - -"@esbuild/linux-riscv64@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.17.tgz#5198a417f3f5b86b10c95647b8bc032e5b6b2b1c" - integrity sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g== - -"@esbuild/linux-s390x@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" - integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== - -"@esbuild/linux-s390x@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.17.tgz#7459c2fecdee2d582f0697fb76a4041f4ad1dd1e" - integrity sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg== - -"@esbuild/linux-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" - integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== - -"@esbuild/linux-x64@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz#948cdbf46d81c81ebd7225a7633009bc56a4488c" - integrity sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ== - -"@esbuild/netbsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" - integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== - -"@esbuild/netbsd-x64@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.17.tgz#6bb89668c0e093c5a575ded08e1d308bd7fd63e7" - integrity sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ== - -"@esbuild/openbsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" - integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== - -"@esbuild/openbsd-x64@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.17.tgz#abac2ae75fef820ef6c2c48da4666d092584c79d" - integrity sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA== - -"@esbuild/sunos-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" - integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== - -"@esbuild/sunos-x64@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.17.tgz#74a45fe1db8ea96898f1a9bb401dcf1dadfc8371" - integrity sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g== - -"@esbuild/win32-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" - integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== - -"@esbuild/win32-arm64@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.17.tgz#fd95ffd217995589058a4ed8ac17ee72a3d7f615" - integrity sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw== - -"@esbuild/win32-ia32@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" - integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== - -"@esbuild/win32-ia32@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.17.tgz#9b7ef5d0df97593a80f946b482e34fcba3fa4aaf" - integrity sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg== - -"@esbuild/win32-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" - integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== - -"@esbuild/win32-x64@0.18.17": - version "0.18.17" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.17.tgz#bcb2e042631b3c15792058e189ed879a22b2968b" - integrity sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA== - -"@eslint-community/eslint-utils@^4.2.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== +"@npmcli/move-file@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" + integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== dependencies: - eslint-visitor-keys "^3.3.0" + mkdirp "^1.0.4" + rimraf "^3.0.2" -"@eslint-community/regexpp@^4.4.0": - version "4.5.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" - integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== +"@npmcli/node-gyp@^1.0.2": + version "1.0.3" + resolved "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz" + integrity sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA== -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== +"@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2": + version "1.3.2" + resolved "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz" + integrity sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg== dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" + infer-owner "^1.0.4" -"@eslint/eslintrc@^1.4.1": - version "1.4.1" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz" - integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA== +"@npmcli/run-script@^1.8.2": + version "1.8.6" + resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz" + integrity sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g== 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" + "@npmcli/node-gyp" "^1.0.2" + "@npmcli/promise-spawn" "^1.3.2" + node-gyp "^7.1.0" + read-package-json-fast "^2.0.1" -"@eslint/eslintrc@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331" - integrity sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ== +"@octokit/auth-token@^2.4.4": + version "2.5.0" + resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz" + integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.5.2" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.42.0": - version "8.42.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.42.0.tgz#484a1d638de2911e6f5a30c12f49c7e4a3270fb6" - integrity sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw== + "@octokit/types" "^6.0.3" -"@eth-optimism/ynatm@^0.2.2": - version "0.2.2" - resolved "https://registry.npmjs.org/@eth-optimism/ynatm/-/ynatm-0.2.2.tgz" - integrity sha512-R/hIAFWEj2sjf3inNEGCffmGofqMFY/7PS/Hh4A/62Kg0wMM8rsyMyW8pXngMnD/EQAjR8WTtKDutq/L5vSMTQ== +"@octokit/core@^3.5.1": + version "3.6.0" + resolved "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz" + integrity sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q== dependencies: - bluebird "^3.7.2" + "@octokit/auth-token" "^2.4.4" + "@octokit/graphql" "^4.5.8" + "@octokit/request" "^5.6.3" + "@octokit/request-error" "^2.0.5" + "@octokit/types" "^6.0.3" + before-after-hook "^2.2.0" + universal-user-agent "^6.0.0" -"@ethereum-waffle/chai@^3.4.4": - version "3.4.4" - resolved "https://registry.npmjs.org/@ethereum-waffle/chai/-/chai-3.4.4.tgz" - integrity sha512-/K8czydBtXXkcM9X6q29EqEkc5dN3oYenyH2a9hF7rGAApAJUpH8QBtojxOY/xQ2up5W332jqgxwp0yPiYug1g== +"@octokit/endpoint@^6.0.1": + version "6.0.12" + resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz" + integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== dependencies: - "@ethereum-waffle/provider" "^3.4.4" - ethers "^5.5.2" + "@octokit/types" "^6.0.3" + is-plain-object "^5.0.0" + universal-user-agent "^6.0.0" -"@ethereum-waffle/compiler@^3.4.4": - version "3.4.4" - resolved "https://registry.npmjs.org/@ethereum-waffle/compiler/-/compiler-3.4.4.tgz" - integrity sha512-RUK3axJ8IkD5xpWjWoJgyHclOeEzDLQFga6gKpeGxiS/zBu+HB0W2FvsrrLalTFIaPw/CGYACRBSIxqiCqwqTQ== +"@octokit/graphql@^4.5.8": + version "4.8.0" + resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz" + integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== dependencies: - "@resolver-engine/imports" "^0.3.3" - "@resolver-engine/imports-fs" "^0.3.3" - "@typechain/ethers-v5" "^2.0.0" - "@types/mkdirp" "^0.5.2" - "@types/node-fetch" "^2.5.5" - ethers "^5.0.1" - mkdirp "^0.5.1" - node-fetch "^2.6.1" - solc "^0.6.3" - ts-generator "^0.1.1" - typechain "^3.0.0" + "@octokit/request" "^5.6.0" + "@octokit/types" "^6.0.3" + universal-user-agent "^6.0.0" -"@ethereum-waffle/ens@^3.4.4": - version "3.4.4" - resolved "https://registry.npmjs.org/@ethereum-waffle/ens/-/ens-3.4.4.tgz" - integrity sha512-0m4NdwWxliy3heBYva1Wr4WbJKLnwXizmy5FfSSr5PMbjI7SIGCdCB59U7/ZzY773/hY3bLnzLwvG5mggVjJWg== - dependencies: - "@ensdomains/ens" "^0.4.4" - "@ensdomains/resolver" "^0.2.4" - ethers "^5.5.2" +"@octokit/openapi-types@^12.11.0": + version "12.11.0" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz" + integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== -"@ethereum-waffle/mock-contract@^3.4.4": - version "3.4.4" - resolved "https://registry.npmjs.org/@ethereum-waffle/mock-contract/-/mock-contract-3.4.4.tgz" - integrity sha512-Mp0iB2YNWYGUV+VMl5tjPsaXKbKo8MDH9wSJ702l9EBjdxFf/vBvnMBAC1Fub1lLtmD0JHtp1pq+mWzg/xlLnA== - dependencies: - "@ethersproject/abi" "^5.5.0" - ethers "^5.5.2" +"@octokit/plugin-enterprise-rest@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz" + integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== -"@ethereum-waffle/provider@^3.4.4": - version "3.4.4" - resolved "https://registry.npmjs.org/@ethereum-waffle/provider/-/provider-3.4.4.tgz" - integrity sha512-GK8oKJAM8+PKy2nK08yDgl4A80mFuI8zBkE0C9GqTRYQqvuxIyXoLmJ5NZU9lIwyWVv5/KsoA11BgAv2jXE82g== +"@octokit/plugin-paginate-rest@^2.16.8": + version "2.21.3" + resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz" + integrity sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw== dependencies: - "@ethereum-waffle/ens" "^3.4.4" - ethers "^5.5.2" - ganache-core "^2.13.2" - patch-package "^6.2.2" - postinstall-postinstall "^2.1.0" + "@octokit/types" "^6.40.0" -"@ethereumjs/common@2.5.0": - 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" +"@octokit/plugin-request-log@^1.0.4": + version "1.0.4" + resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz" + integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== -"@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.4": - version "2.6.5" - resolved "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz" - integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA== +"@octokit/plugin-rest-endpoint-methods@^5.12.0": + version "5.16.2" + resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz" + integrity sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw== dependencies: - crc-32 "^1.2.0" - ethereumjs-util "^7.1.5" + "@octokit/types" "^6.39.0" + deprecation "^2.3.1" -"@ethereumjs/common@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-3.2.0.tgz#b71df25845caf5456449163012074a55f048e0a0" - integrity sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA== +"@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz" + integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== dependencies: - "@ethereumjs/util" "^8.1.0" - crc-32 "^1.2.0" - -"@ethereumjs/rlp@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" - integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== + "@octokit/types" "^6.0.3" + deprecation "^2.0.0" + once "^1.4.0" -"@ethereumjs/tx@3.3.2": - version "3.3.2" - resolved "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz" - integrity sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog== +"@octokit/request@^5.6.0", "@octokit/request@^5.6.3": + version "5.6.3" + resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz" + integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== dependencies: - "@ethereumjs/common" "^2.5.0" - ethereumjs-util "^7.1.2" + "@octokit/endpoint" "^6.0.1" + "@octokit/request-error" "^2.1.0" + "@octokit/types" "^6.16.1" + is-plain-object "^5.0.0" + node-fetch "^2.6.7" + universal-user-agent "^6.0.0" -"@ethereumjs/tx@4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-4.2.0.tgz#5988ae15daf5a3b3c815493bc6b495e76009e853" - integrity sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw== +"@octokit/rest@^18.1.0": + version "18.12.0" + resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz" + integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== dependencies: - "@ethereumjs/common" "^3.2.0" - "@ethereumjs/rlp" "^4.0.1" - "@ethereumjs/util" "^8.1.0" - ethereum-cryptography "^2.0.0" + "@octokit/core" "^3.5.1" + "@octokit/plugin-paginate-rest" "^2.16.8" + "@octokit/plugin-request-log" "^1.0.4" + "@octokit/plugin-rest-endpoint-methods" "^5.12.0" -"@ethereumjs/tx@^3.3.2": - version "3.5.2" - resolved "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz" - integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== +"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.39.0", "@octokit/types@^6.40.0": + version "6.41.0" + resolved "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz" + integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== dependencies: - "@ethereumjs/common" "^2.6.4" - ethereumjs-util "^7.1.5" + "@octokit/openapi-types" "^12.11.0" -"@ethereumjs/util@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" - integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== +"@openzeppelin/contract-loader@^0.6.2": + version "0.6.3" + resolved "https://registry.npmjs.org/@openzeppelin/contract-loader/-/contract-loader-0.6.3.tgz" + integrity sha512-cOFIjBjwbGgZhDZsitNgJl0Ye1rd5yu/Yx5LMgeq3u0ZYzldm4uObzHDFq4gjDdoypvyORjjJa3BlFA7eAnVIg== dependencies: - "@ethereumjs/rlp" "^4.0.1" - ethereum-cryptography "^2.0.0" - micro-ftch "^0.3.1" + find-up "^4.1.0" + fs-extra "^8.1.0" -"@ethersproject/abi@5.0.0-beta.153": - version "5.0.0-beta.153" - resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz" - integrity sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg== - dependencies: - "@ethersproject/address" ">=5.0.0-beta.128" - "@ethersproject/bignumber" ">=5.0.0-beta.130" - "@ethersproject/bytes" ">=5.0.0-beta.129" - "@ethersproject/constants" ">=5.0.0-beta.128" - "@ethersproject/hash" ">=5.0.0-beta.128" - "@ethersproject/keccak256" ">=5.0.0-beta.127" - "@ethersproject/logger" ">=5.0.0-beta.129" - "@ethersproject/properties" ">=5.0.0-beta.131" - "@ethersproject/strings" ">=5.0.0-beta.130" +"@openzeppelin/contracts-upgradeable@4.3.2": + version "4.3.2" + resolved "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.3.2.tgz" + integrity sha512-i/pOaOtcqDk4UqsrOv735uYyTbn6dvfiuVu5hstsgV6c4ZKUtu88/31zT2BzkCg+3JfcwOfgg2TtRKVKKZIGkQ== -"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.0", "@ethersproject/abi@^5.0.0-beta.146", "@ethersproject/abi@^5.0.12", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.4.0", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz" - integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== - 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" +"@openzeppelin/contracts@3.4.1-solc-0.7-2": + version "3.4.1-solc-0.7-2" + resolved "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.4.1-solc-0.7-2.tgz" + integrity sha512-tAG9LWg8+M2CMu7hIsqHPaTyG4uDzjr6mhvH96LvOpLZZj6tgzTluBt+LsCf1/QaYrlis6pITvpIaIhE+iZB+Q== -"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.5.0", "@ethersproject/abstract-provider@^5.5.1", "@ethersproject/abstract-provider@^5.7.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz" - integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== - 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" +"@openzeppelin/contracts@3.4.2-solc-0.7": + version "3.4.2-solc-0.7" + resolved "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.4.2-solc-0.7.tgz" + integrity sha512-W6QmqgkADuFcTLzHL8vVoNBtkwjvQRpYIAom7KiUNoLKghyx3FgH0GBjt8NRvigV1ZmMOBllvE1By1C+bi8WpA== -"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.0.0", "@ethersproject/abstract-signer@^5.4.1", "@ethersproject/abstract-signer@^5.5.0", "@ethersproject/abstract-signer@^5.7.0": - 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== - 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" +"@openzeppelin/contracts@4.3.2": + version "4.3.2" + resolved "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.3.2.tgz" + integrity sha512-AybF1cesONZStg5kWf6ao9OlqTZuPqddvprc0ky7lrUVOjXeKpmQ2Y9FK+6ygxasb+4aic4O5pneFBfwVsRRRg== -"@ethersproject/address@5.7.0", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.0.0", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.4.0", "@ethersproject/address@^5.5.0", "@ethersproject/address@^5.7.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz" - integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== - 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" +"@openzeppelin/contracts@^4.4.0": + version "4.8.0" + resolved "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.8.0.tgz" + integrity sha512-AGuwhRRL+NaKx73WKRNzeCxOCOCxpaqF+kp8TJ89QzAipSwZy/NoflkWaL9bywXFRhIzXt8j38sfF7KBKCPWLw== -"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz" - integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== +"@openzeppelin/contracts@^4.7.3": + version "4.8.1" + resolved "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.8.1.tgz" + integrity sha512-xQ6eUZl+RDyb/FiZe1h+U7qr/f4p/SrTSQcTPH2bjur3C5DbuW/zFgCU/b1P/xcIaEqJep+9ju4xDRi3rmChdQ== + +"@openzeppelin/contracts@^4.8.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== + +"@openzeppelin/test-helpers@^0.5.15": + version "0.5.16" + resolved "https://registry.npmjs.org/@openzeppelin/test-helpers/-/test-helpers-0.5.16.tgz" + integrity sha512-T1EvspSfH1qQO/sgGlskLfYVBbqzJR23SZzYl/6B2JnT4EhThcI85UpvDk0BkLWKaDScQTabGHt4GzHW+3SfZg== dependencies: - "@ethersproject/bytes" "^5.7.0" + "@openzeppelin/contract-loader" "^0.6.2" + "@truffle/contract" "^4.0.35" + ansi-colors "^3.2.3" + chai "^4.2.0" + chai-bn "^0.2.1" + ethjs-abi "^0.2.1" + lodash.flatten "^4.4.0" + semver "^5.6.0" + web3 "^1.2.5" + web3-utils "^1.2.5" -"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz" - integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== +"@resolver-engine/core@^0.3.3": + version "0.3.3" + resolved "https://registry.npmjs.org/@resolver-engine/core/-/core-0.3.3.tgz" + integrity sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ== dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/properties" "^5.7.0" + debug "^3.1.0" + is-url "^1.2.4" + request "^2.85.0" -"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.0.0", "@ethersproject/bignumber@^5.4.1", "@ethersproject/bignumber@^5.7.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz" - integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== +"@resolver-engine/fs@^0.3.3": + version "0.3.3" + resolved "https://registry.npmjs.org/@resolver-engine/fs/-/fs-0.3.3.tgz" + integrity sha512-wQ9RhPUcny02Wm0IuJwYMyAG8fXVeKdmhm8xizNByD4ryZlx6PP6kRen+t/haF43cMfmaV7T3Cx6ChOdHEhFUQ== dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - bn.js "^5.2.1" + "@resolver-engine/core" "^0.3.3" + debug "^3.1.0" -"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.0.0", "@ethersproject/bytes@^5.4.0", "@ethersproject/bytes@^5.7.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz" - integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== +"@resolver-engine/imports-fs@^0.3.3": + version "0.3.3" + resolved "https://registry.npmjs.org/@resolver-engine/imports-fs/-/imports-fs-0.3.3.tgz" + integrity sha512-7Pjg/ZAZtxpeyCFlZR5zqYkz+Wdo84ugB5LApwriT8XFeQoLwGUj4tZFFvvCuxaNCcqZzCYbonJgmGObYBzyCA== dependencies: - "@ethersproject/logger" "^5.7.0" + "@resolver-engine/fs" "^0.3.3" + "@resolver-engine/imports" "^0.3.3" + debug "^3.1.0" -"@ethersproject/constants@5.7.0", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.4.0", "@ethersproject/constants@^5.7.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz" - integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== +"@resolver-engine/imports@^0.3.3": + version "0.3.3" + resolved "https://registry.npmjs.org/@resolver-engine/imports/-/imports-0.3.3.tgz" + integrity sha512-anHpS4wN4sRMwsAbMXhMfOD/y4a4Oo0Cw/5+rue7hSwGWsDOQaAU1ClK1OxjUC35/peazxEl8JaSRRS+Xb8t3Q== dependencies: - "@ethersproject/bignumber" "^5.7.0" + "@resolver-engine/core" "^0.3.3" + debug "^3.1.0" + hosted-git-info "^2.6.0" + path-browserify "^1.0.0" + url "^0.11.0" -"@ethersproject/contracts@5.7.0", "@ethersproject/contracts@^5.0.0", "@ethersproject/contracts@^5.4.1", "@ethersproject/contracts@^5.5.0": - 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== +"@scure/base@~1.1.0": + version "1.1.1" + resolved "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz" + integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== + +"@scure/bip32@1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.0.tgz" + integrity sha512-ftTW3kKX54YXLCxH6BB7oEEoJfoE2pIgw7MINKAs5PsS6nqKPuKk1haTF/EuHmYqG330t5GSrdmtRuHaY1a62Q== 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" + "@noble/hashes" "~1.1.1" + "@noble/secp256k1" "~1.6.0" + "@scure/base" "~1.1.0" -"@ethersproject/hardware-wallets@^5.5.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/hardware-wallets/-/hardware-wallets-5.7.0.tgz" - integrity sha512-DjMMXIisRc8xFvEoLoYz1w7JDOYmaz/a0X9sp7Zu668RR8U1zCAyj5ow25HLRW+TCzEC5XiFetTXqS5kXonFCQ== +"@scure/bip32@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.1.tgz#7248aea723667f98160f593d621c47e208ccbb10" + integrity sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A== dependencies: - "@ledgerhq/hw-app-eth" "5.27.2" - "@ledgerhq/hw-transport" "5.26.0" - "@ledgerhq/hw-transport-u2f" "5.26.0" - ethers "^5.7.0" - optionalDependencies: - "@ledgerhq/hw-transport-node-hid" "5.26.0" + "@noble/curves" "~1.1.0" + "@noble/hashes" "~1.3.1" + "@scure/base" "~1.1.0" -"@ethersproject/hash@5.7.0", "@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.7.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz" - integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== +"@scure/bip39@1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.0.tgz" + integrity sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w== 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" + "@noble/hashes" "~1.1.1" + "@scure/base" "~1.1.0" -"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz" - integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== +"@scure/bip39@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" + integrity sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg== 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" + "@noble/hashes" "~1.3.0" + "@scure/base" "~1.1.0" -"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": - 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== +"@sentry/core@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz" + integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== 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" + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" -"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.7.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz" - integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== +"@sentry/core@7.30.0": + version "7.30.0" + resolved "https://registry.npmjs.org/@sentry/core/-/core-7.30.0.tgz" + integrity sha512-NeLigkBlpcK63ymM63GoIHurml6V3BUe1Vi+trwm4/qqOTzT7PQhvdJCX+o3+atzRBH+zdb6kd4VWx44Oye3KA== dependencies: - "@ethersproject/bytes" "^5.7.0" - js-sha3 "0.8.0" + "@sentry/types" "7.30.0" + "@sentry/utils" "7.30.0" + tslib "^1.9.3" -"@ethersproject/logger@5.7.0", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.7.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz" - integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== - -"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.5.0", "@ethersproject/networks@^5.7.0": - version "5.7.1" - resolved "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz" - integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== +"@sentry/hub@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz" + integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== dependencies: - "@ethersproject/logger" "^5.7.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" -"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz" - integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== +"@sentry/minimal@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz" + integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" + "@sentry/hub" "5.30.0" + "@sentry/types" "5.30.0" + tslib "^1.9.3" -"@ethersproject/properties@5.7.0", "@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.7.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz" - integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== +"@sentry/node@^5.18.1": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz" + integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== dependencies: - "@ethersproject/logger" "^5.7.0" + "@sentry/core" "5.30.0" + "@sentry/hub" "5.30.0" + "@sentry/tracing" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + cookie "^0.4.1" + https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^1.9.3" -"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.0.0", "@ethersproject/providers@^5.4.4", "@ethersproject/providers@^5.5.0", "@ethersproject/providers@^5.5.3", "@ethersproject/providers@^5.7.0": - version "5.7.2" - resolved "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz" - integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== +"@sentry/node@^6.2.5||^7.1.1", "@sentry/node@^7.30.0": + version "7.30.0" + resolved "https://registry.npmjs.org/@sentry/node/-/node-7.30.0.tgz" + integrity sha512-YYasu6C3I0HBP4N1oc/ed2nunxhGJgtAWaKwq3lo8uk3uF6cB1A8+2e0CpjzU5ejhbaFPUBxHyj4th39Bvku/w== 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" + "@sentry/core" "7.30.0" + "@sentry/types" "7.30.0" + "@sentry/utils" "7.30.0" + cookie "^0.4.1" + https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^1.9.3" -"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz" - integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== +"@sentry/tracing@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz" + integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" -"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz" - integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== +"@sentry/tracing@^7.30.0": + version "7.30.0" + resolved "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.30.0.tgz" + integrity sha512-bjGeDeKhpGAmLcWcrXFT/xOfHVwp/j0L1aRHzYHnqgTjVzD0NXcooPu/Nz8vF0paxz+hPD5bJwb8kz/ggJzGWQ== dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" + "@sentry/core" "7.30.0" + "@sentry/types" "7.30.0" + "@sentry/utils" "7.30.0" + tslib "^1.9.3" -"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz" - integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - hash.js "1.1.7" +"@sentry/types@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz" + integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== -"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": - 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== - 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" +"@sentry/types@7.30.0": + version "7.30.0" + resolved "https://registry.npmjs.org/@sentry/types/-/types-7.30.0.tgz" + integrity sha512-l4A86typvt/SfWh5JffpdxNGkg5EEA8m35BzpIcKmCAQZUDmnb4b478r8jdD2uuOjLmPNmZr1tifdRW4NCLuxQ== -"@ethersproject/solidity@5.7.0", "@ethersproject/solidity@^5.0.0", "@ethersproject/solidity@^5.0.9", "@ethersproject/solidity@^5.4.0", "@ethersproject/solidity@^5.5.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz" - integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== +"@sentry/utils@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz" + integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== 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" + "@sentry/types" "5.30.0" + tslib "^1.9.3" -"@ethersproject/strings@5.7.0", "@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.7.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz" - integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== +"@sentry/utils@7.30.0": + version "7.30.0" + resolved "https://registry.npmjs.org/@sentry/utils/-/utils-7.30.0.tgz" + integrity sha512-tSlBhr5u/LdE2emxIDTDmjmyRr99GnZGIAh5GwRxUgeDQ3VEfNUFlyFodBCbZ6yeYTYd6PWNih5xoHn1+Rf3Sw== dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" + "@sentry/types" "7.30.0" + tslib "^1.9.3" -"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.0.0", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.4.0", "@ethersproject/transactions@^5.5.0", "@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz" - 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" +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== -"@ethersproject/units@5.7.0", "@ethersproject/units@^5.5.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz" - integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== +"@sindresorhus/is@^4.0.0", "@sindresorhus/is@^4.2.0", "@sindresorhus/is@^4.6.0": + 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@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz" + integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" + type-detect "4.0.8" -"@ethersproject/wallet@5.7.0", "@ethersproject/wallet@^5.0.0", "@ethersproject/wallet@^5.4.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz" - integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== +"@sinonjs/commons@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" + integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== 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" + type-detect "4.0.8" -"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": - version "5.7.1" - resolved "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz" - integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== +"@sinonjs/fake-timers@^10.0.2", "@sinonjs/fake-timers@^10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== 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" + "@sinonjs/commons" "^3.0.0" -"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": - version "5.7.0" - resolved "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz" - integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== +"@sinonjs/samsam@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.0.tgz#0d488c91efb3fa1442e26abea81759dfc8b5ac60" + integrity sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew== 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" + "@sinonjs/commons" "^2.0.0" + lodash.get "^4.4.2" + type-detect "^4.0.8" -"@fal-works/esbuild-plugin-global-externals@^2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz#c05ed35ad82df8e6ac616c68b92c2282bd083ba4" - integrity sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ== - -"@floating-ui/core@^1.0.5": - version "1.1.0" - resolved "https://registry.npmjs.org/@floating-ui/core/-/core-1.1.0.tgz" - integrity sha512-zbsLwtnHo84w1Kc8rScAo5GMk1GdecSlrflIbfnEBJwvTSj1SL6kkOYV+nHraMCPEy+RNZZUaZyL8JosDGCtGQ== +"@sinonjs/text-encoding@^0.7.1": + version "0.7.2" + resolved "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz" + integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== -"@floating-ui/dom@^1.0.1": - version "1.1.0" - resolved "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.1.0.tgz" - integrity sha512-TSogMPVxbRe77QCj1dt8NmRiJasPvuc+eT5jnJ6YpLqgOD2zXc5UA3S1qwybN+GVCDNdKfpKy1oj8RpzLJvh6A== +"@smithy/abort-controller@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-1.0.2.tgz#74caac052ecea15c5460438272ad8d43a6ccbc53" + integrity sha512-tb2h0b+JvMee+eAxTmhnyqyNk51UXIK949HnE14lFeezKsVJTB30maan+CO2IMwnig2wVYQH84B5qk6ylmKCuA== dependencies: - "@floating-ui/core" "^1.0.5" - -"@gar/promisify@^1.0.1", "@gar/promisify@^1.1.3": - version "1.1.3" - resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz" - integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== - -"@gnosis.pm/safe-contracts@^1.3.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@gnosis.pm/safe-contracts/-/safe-contracts-1.3.0.tgz" - integrity sha512-1p+1HwGvxGUVzVkFjNzglwHrLNA67U/axP0Ct85FzzH8yhGJb4t9jDjPYocVMzLorDoWAfKicGy1akPY9jXRVw== - -"@graphql-typed-document-node/core@^3.1.1": - version "3.1.1" - resolved "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz" - integrity sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg== + "@smithy/types" "^1.1.1" + tslib "^2.5.0" -"@humanwhocodes/config-array@^0.11.10": - version "0.11.10" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" - integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== +"@smithy/config-resolver@^1.0.1", "@smithy/config-resolver@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-1.0.2.tgz#d4f556a44292b41b5c067662a4bd5049dea40e35" + integrity sha512-8Bk7CgnVKg1dn5TgnjwPz2ebhxeR7CjGs5yhVYH3S8x0q8yPZZVWwpRIglwXaf5AZBzJlNO1lh+lUhMf2e73zQ== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.5" + "@smithy/types" "^1.1.1" + "@smithy/util-config-provider" "^1.0.2" + "@smithy/util-middleware" "^1.0.2" + tslib "^2.5.0" -"@humanwhocodes/config-array@^0.11.8": - version "0.11.8" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz" - integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== +"@smithy/credential-provider-imds@^1.0.1", "@smithy/credential-provider-imds@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-1.0.2.tgz#7aa797c0d95448eb3dccb988b40e62db8989576f" + integrity sha512-fLjCya+JOu2gPJpCiwSUyoLvT8JdNJmOaTOkKYBZoGf7CzqR6lluSyI+eboZnl/V0xqcfcqBG4tgqCISmWS3/w== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.5" + "@smithy/node-config-provider" "^1.0.2" + "@smithy/property-provider" "^1.0.2" + "@smithy/types" "^1.1.1" + "@smithy/url-parser" "^1.0.2" + tslib "^2.5.0" -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== +"@smithy/eventstream-codec@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-1.0.2.tgz#06d1b6e2510cb2475a39b3a20b0c75e751917c59" + integrity sha512-eW/XPiLauR1VAgHKxhVvgvHzLROUgTtqat2lgljztbH8uIYWugv7Nz+SgCavB+hWRazv2iYgqrSy74GvxXq/rg== dependencies: - "@humanwhocodes/object-schema" "^1.2.0" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^1.2.0", "@humanwhocodes/object-schema@^1.2.1": - 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== - -"@hutson/parse-repository-url@^3.0.0": - version "3.0.2" - resolved "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz" - integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== + "@aws-crypto/crc32" "3.0.0" + "@smithy/types" "^1.1.1" + "@smithy/util-hex-encoding" "^1.0.2" + tslib "^2.5.0" -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== +"@smithy/fetch-http-handler@^1.0.1", "@smithy/fetch-http-handler@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-1.0.2.tgz#4186ee6451de22e867f43c05236dcff43eca6e91" + integrity sha512-kynyofLf62LvR8yYphPPdyHb8fWG3LepFinM/vWUTG2Q1pVpmPCM530ppagp3+q2p+7Ox0UvSqldbKqV/d1BpA== dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + "@smithy/protocol-http" "^1.1.1" + "@smithy/querystring-builder" "^1.0.2" + "@smithy/types" "^1.1.1" + "@smithy/util-base64" "^1.0.2" + tslib "^2.5.0" -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== +"@smithy/hash-node@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-1.0.2.tgz#dc65203a348d29e45c493ead3e772e4f7dfb5bc0" + integrity sha512-K6PKhcUNrJXtcesyzhIvNlU7drfIU7u+EMQuGmPw6RQDAg/ufUcfKHz4EcUhFAodUmN+rrejhRG9U6wxjeBOQA== 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" - -"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": - version "0.1.3" - resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + "@smithy/types" "^1.1.1" + "@smithy/util-buffer-from" "^1.0.2" + "@smithy/util-utf8" "^1.0.2" + tslib "^2.5.0" -"@jest/console@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" - integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== +"@smithy/invalid-dependency@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-1.0.2.tgz#0a9d82d1a14e5bdbdc0bd2cef5f457c85a942920" + integrity sha512-B1Y3Tsa6dfC+Vvb+BJMhTHOfFieeYzY9jWQSTR1vMwKkxsymD0OIAnEw8rD/RiDj/4E4RPGFdx9Mdgnyd6Bv5Q== dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^27.5.1" - jest-util "^27.5.1" - slash "^3.0.0" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" -"@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== +"@smithy/is-array-buffer@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-1.0.2.tgz#224702a2364d698f0a36ecb2c240c0c9541ecfb6" + integrity sha512-pkyBnsBRpe+c/6ASavqIMRBdRtZNJEVJOEzhpxZ9JoAXiZYbkfaSMRA/O1dUxGdJ653GHONunnZ4xMo/LJ7utQ== 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" - -"@jest/core@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" - integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== - dependencies: - "@jest/console" "^27.5.1" - "@jest/reporters" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.8.1" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^27.5.1" - jest-config "^27.5.1" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-resolve-dependencies "^27.5.1" - jest-runner "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - jest-watcher "^27.5.1" - micromatch "^4.0.4" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" + tslib "^2.5.0" -"@jest/environment@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" - integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== +"@smithy/middleware-content-length@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-1.0.2.tgz#63099f8d01b3419b65e21cfd07b0c2ef47d1f473" + integrity sha512-pa1/SgGIrSmnEr2c9Apw7CdU4l/HW0fK3+LKFCPDYJrzM0JdYpqjQzgxi31P00eAkL0EFBccpus/p1n2GF9urw== dependencies: - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" + "@smithy/protocol-http" "^1.1.1" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" -"@jest/expect-utils@^29.5.0": - version "29.5.0" - resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz" - integrity sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg== +"@smithy/middleware-endpoint@^1.0.1": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-1.0.3.tgz#ff4b1c0a83eb8d8b8d3937f434a95efbbf43e1cd" + integrity sha512-GsWvTXMFjSgl617PCE2km//kIjjtvMRrR2GAuRDIS9sHiLwmkS46VWaVYy+XE7ubEsEtzZ5yK2e8TKDR6Qr5Lw== dependencies: - jest-get-type "^29.4.3" + "@smithy/middleware-serde" "^1.0.2" + "@smithy/types" "^1.1.1" + "@smithy/url-parser" "^1.0.2" + "@smithy/util-middleware" "^1.0.2" + tslib "^2.5.0" -"@jest/fake-timers@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" - integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== +"@smithy/middleware-retry@^1.0.1", "@smithy/middleware-retry@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-1.0.4.tgz#8e9de0713dac7f7af405477d46bd4525ca7b9ea8" + integrity sha512-G7uRXGFL8c3F7APnoIMTtNAHH8vT4F2qVnAWGAZaervjupaUQuRRHYBLYubK0dWzOZz86BtAXKieJ5p+Ni2Xpg== dependencies: - "@jest/types" "^27.5.1" - "@sinonjs/fake-timers" "^8.0.1" - "@types/node" "*" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-util "^27.5.1" + "@smithy/protocol-http" "^1.1.1" + "@smithy/service-error-classification" "^1.0.3" + "@smithy/types" "^1.1.1" + "@smithy/util-middleware" "^1.0.2" + "@smithy/util-retry" "^1.0.4" + tslib "^2.5.0" + uuid "^8.3.2" -"@jest/globals@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" - integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== +"@smithy/middleware-serde@^1.0.1", "@smithy/middleware-serde@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-1.0.2.tgz#87b3a0211602ae991d9b756893eb6bf2e3e5f711" + integrity sha512-T4PcdMZF4xme6koUNfjmSZ1MLi7eoFeYCtodQNQpBNsS77TuJt1A6kt5kP/qxrTvfZHyFlj0AubACoaUqgzPeg== dependencies: - "@jest/environment" "^27.5.1" - "@jest/types" "^27.5.1" - expect "^27.5.1" - -"@jest/reporters@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" - integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - 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-haste-map "^27.5.1" - jest-resolve "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^8.1.0" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" -"@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== +"@smithy/middleware-stack@^1.0.1", "@smithy/middleware-stack@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-1.0.2.tgz#d241082bf3cb315c749dda57e233039a9aed804e" + integrity sha512-H7/uAQEcmO+eDqweEFMJ5YrIpsBwmrXSP6HIIbtxKJSQpAcMGY7KrR2FZgZBi1FMnSUOh+rQrbOyj5HQmSeUBA== dependencies: - "@sinclair/typebox" "^0.24.1" + tslib "^2.5.0" -"@jest/schemas@^29.4.3": - version "29.4.3" - resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz" - integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== +"@smithy/node-config-provider@^1.0.1", "@smithy/node-config-provider@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-1.0.2.tgz#2d391b96a9e10072e7e0a3698427400f4ef17ec4" + integrity sha512-HU7afWpTToU0wL6KseGDR2zojeyjECQfr8LpjAIeHCYIW7r360ABFf4EaplaJRMVoC3hD9FeltgI3/NtShOqCg== dependencies: - "@sinclair/typebox" "^0.25.16" + "@smithy/property-provider" "^1.0.2" + "@smithy/shared-ini-file-loader" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" -"@jest/source-map@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" - integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== +"@smithy/node-http-handler@^1.0.1", "@smithy/node-http-handler@^1.0.2", "@smithy/node-http-handler@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-1.0.3.tgz#89b556ca2bdcce7a994a9da1ea265094d76d4791" + integrity sha512-PcPUSzTbIb60VCJCiH0PU0E6bwIekttsIEf5Aoo/M0oTfiqsxHTn0Rcij6QoH6qJy6piGKXzLSegspXg5+Kq6g== dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.9" - source-map "^0.6.0" + "@smithy/abort-controller" "^1.0.2" + "@smithy/protocol-http" "^1.1.1" + "@smithy/querystring-builder" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" -"@jest/test-result@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" - integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== +"@smithy/property-provider@^1.0.1", "@smithy/property-provider@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-1.0.2.tgz#f99f104cbd6576c9aca9f56cb72819b4a65208e1" + integrity sha512-pXDPyzKX8opzt38B205kDgaxda6LHcTfPvTYQZnwP6BAPp1o9puiCPjeUtkKck7Z6IbpXCPUmUQnzkUzWTA42Q== dependencies: - "@jest/console" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" -"@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== +"@smithy/protocol-http@^1.0.1", "@smithy/protocol-http@^1.1.0", "@smithy/protocol-http@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-1.1.1.tgz#10977cf71631eed4f5ad1845408920238d52cdba" + integrity sha512-mFLFa2sSvlUxm55U7B4YCIsJJIMkA6lHxwwqOaBkral1qxFz97rGffP/mmd4JDuin1EnygiO5eNJGgudiUgmDQ== dependencies: - "@jest/console" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" -"@jest/test-sequencer@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" - integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== +"@smithy/querystring-builder@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-1.0.2.tgz#ce861f6cbd14792c83aa19b4967a19923bd0706e" + integrity sha512-6P/xANWrtJhMzTPUR87AbXwSBuz1SDHIfL44TFd/GT3hj6rA+IEv7rftEpPjayUiWRocaNnrCPLvmP31mobOyA== dependencies: - "@jest/test-result" "^27.5.1" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-runtime "^27.5.1" + "@smithy/types" "^1.1.1" + "@smithy/util-uri-escape" "^1.0.2" + tslib "^2.5.0" -"@jest/transform@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" - integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== +"@smithy/querystring-parser@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-1.0.2.tgz#559d09c46b21e6fbda71e95deda4bcd8a46bdecc" + integrity sha512-IWxwxjn+KHWRRRB+K2Ngl+plTwo2WSgc2w+DvLy0DQZJh9UGOpw40d6q97/63GBlXIt4TEt5NbcFrO30CKlrsA== dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.5.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 "^27.5.1" - jest-regex-util "^27.5.1" - jest-util "^27.5.1" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" -"@jest/transform@^29.3.1": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.5.0.tgz#cf9c872d0965f0cbd32f1458aa44a2b1988b00f9" - integrity sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.5.0" - "@jridgewell/trace-mapping" "^0.3.15" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.5.0" - jest-regex-util "^29.4.3" - jest-util "^29.5.0" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.2" +"@smithy/service-error-classification@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-1.0.3.tgz#c620c1562610d3351985eb6dd04262ca2657ae67" + integrity sha512-2eglIYqrtcUnuI71yweu7rSfCgt6kVvRVf0C72VUqrd0LrV1M0BM0eYN+nitp2CHPSdmMI96pi+dU9U/UqAMSA== -"@jest/types@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" - integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== +"@smithy/shared-ini-file-loader@^1.0.1", "@smithy/shared-ini-file-loader@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-1.0.2.tgz#c6e79991d87925bd18e0adae00c97da6c8ecae1e" + integrity sha512-bdQj95VN+lCXki+P3EsDyrkpeLn8xDYiOISBGnUG/AGPYJXN8dmp4EhRRR7XOoLoSs8anZHR4UcGEOzFv2jwGw== dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" -"@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== +"@smithy/signature-v4@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-1.0.2.tgz#3a7b10ac66c337b404aa061e5f268f0550729680" + integrity sha512-rpKUhmCuPmpV5dloUkOb9w1oBnJatvKQEjIHGmkjRGZnC3437MTdzWej9TxkagcZ8NRRJavYnEUixzxM1amFig== 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" + "@smithy/eventstream-codec" "^1.0.2" + "@smithy/is-array-buffer" "^1.0.2" + "@smithy/types" "^1.1.1" + "@smithy/util-hex-encoding" "^1.0.2" + "@smithy/util-middleware" "^1.0.2" + "@smithy/util-uri-escape" "^1.0.2" + "@smithy/util-utf8" "^1.0.2" + tslib "^2.5.0" -"@jest/types@^29.5.0": - version "29.5.0" - resolved "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz" - integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog== +"@smithy/smithy-client@^1.0.2", "@smithy/smithy-client@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-1.0.4.tgz#96d03d123d117a637c679a79bb8eae96e3857bd9" + integrity sha512-gpo0Xl5Nyp9sgymEfpt7oa9P2q/GlM3VmQIdm+FeH0QEdYOQx3OtvwVmBYAMv2FIPWxkMZlsPYRTnEiBTK5TYg== dependencies: - "@jest/schemas" "^29.4.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" + "@smithy/middleware-stack" "^1.0.2" + "@smithy/types" "^1.1.1" + "@smithy/util-stream" "^1.0.2" + tslib "^2.5.0" -"@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" - integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== +"@smithy/types@^1.0.0", "@smithy/types@^1.1.0", "@smithy/types@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-1.1.1.tgz#949394a22e13e7077471bae0d18c146e5f62c456" + integrity sha512-tMpkreknl2gRrniHeBtdgQwaOlo39df8RxSrwsHVNIGXULy5XP6KqgScUw2m12D15wnJCKWxVhCX+wbrBW/y7g== dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" + tslib "^2.5.0" -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.2" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== +"@smithy/url-parser@^1.0.1", "@smithy/url-parser@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-1.0.2.tgz#fb59be6f2283399443d9e7afe08ebf63b3c266bb" + integrity sha512-0JRsDMQe53F6EHRWksdcavKDRjyqp8vrjakg8EcCUOa7PaFRRB1SO/xGZdzSlW1RSTWQDEksFMTCEcVEKmAoqA== 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.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + "@smithy/querystring-parser" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" -"@jridgewell/source-map@^0.3.2": - version "0.3.2" - resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz" - integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== +"@smithy/util-base64@^1.0.1", "@smithy/util-base64@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-1.0.2.tgz#6cdd5a9356dafad3c531123c12cd77d674762da0" + integrity sha512-BCm15WILJ3SL93nusoxvJGMVfAMWHZhdeDZPtpAaskozuexd0eF6szdz4kbXaKp38bFCSenA6bkUHqaE3KK0dA== dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" + "@smithy/util-buffer-from" "^1.0.2" + tslib "^2.5.0" -"@jridgewell/source-map@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.3.tgz#8108265659d4c33e72ffe14e33d6cc5eb59f2fda" - integrity sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg== +"@smithy/util-body-length-browser@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-1.0.2.tgz#4a9a49497634b5f25ab5ff73f1a8498010b0024a" + integrity sha512-Xh8L06H2anF5BHjSYTg8hx+Itcbf4SQZnVMl4PIkCOsKtneMJoGjPRLy17lEzfoh/GOaa0QxgCP6lRMQWzNl4w== 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.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + tslib "^2.5.0" -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== +"@smithy/util-body-length-node@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-1.0.2.tgz#bc4969022f7d9ffcb239d626d80a85138e986df6" + integrity sha512-nXHbZsUtvZeyfL4Ceds9nmy2Uh2AhWXohG4vWHyjSdmT8cXZlJdmJgnH6SJKDjyUecbu+BpKeVvSrA4cWPSOPA== dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" + tslib "^2.5.0" -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17": - version "0.3.18" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz" - integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== +"@smithy/util-buffer-from@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-1.0.2.tgz#27e19573d721962bd2443f23d4edadb8206b2cb5" + integrity sha512-lHAYIyrBO9RANrPvccnPjU03MJnWZ66wWuC5GjWWQVfsmPwU6m00aakZkzHdUT6tGCkGacXSgArP5wgTgA+oCw== dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" + "@smithy/is-array-buffer" "^1.0.2" + tslib "^2.5.0" -"@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": - 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== +"@smithy/util-config-provider@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-1.0.2.tgz#4d2e867df1cc7b4010d1278bd5767ce1b679dae9" + integrity sha512-HOdmDm+3HUbuYPBABLLHtn8ittuRyy+BSjKOA169H+EMc+IozipvXDydf+gKBRAxUa4dtKQkLraypwppzi+PRw== dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" + tslib "^2.5.0" -"@juggle/resize-observer@^3.3.1": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz#08d6c5e20cf7e4cc02fd181c4b0c225cd31dbb60" - integrity sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA== +"@smithy/util-defaults-mode-browser@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-1.0.2.tgz#31ad7b9bce7e38fd57f4a370ee416373b4fbd432" + integrity sha512-J1u2PO235zxY7dg0+ZqaG96tFg4ehJZ7isGK1pCBEA072qxNPwIpDzUVGnLJkHZvjWEGA8rxIauDtXfB0qxeAg== + dependencies: + "@smithy/property-provider" "^1.0.2" + "@smithy/types" "^1.1.1" + bowser "^2.11.0" + tslib "^2.5.0" -"@ledgerhq/cryptoassets@^5.27.2": - version "5.53.0" - resolved "https://registry.npmjs.org/@ledgerhq/cryptoassets/-/cryptoassets-5.53.0.tgz" - integrity sha512-M3ibc3LRuHid5UtL7FI3IC6nMEppvly98QHFoSa7lJU0HDzQxY6zHec/SPM4uuJUC8sXoGVAiRJDkgny54damw== +"@smithy/util-defaults-mode-node@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-1.0.2.tgz#b295fe2a18568c1e21a85b6557e2b769452b4d95" + integrity sha512-9/BN63rlIsFStvI+AvljMh873Xw6bbI6b19b+PVYXyycQ2DDQImWcjnzRlHW7eP65CCUNGQ6otDLNdBQCgMXqg== dependencies: - invariant "2" + "@smithy/config-resolver" "^1.0.2" + "@smithy/credential-provider-imds" "^1.0.2" + "@smithy/node-config-provider" "^1.0.2" + "@smithy/property-provider" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" -"@ledgerhq/devices@^5.26.0", "@ledgerhq/devices@^5.51.1": - version "5.51.1" - resolved "https://registry.npmjs.org/@ledgerhq/devices/-/devices-5.51.1.tgz" - integrity sha512-4w+P0VkbjzEXC7kv8T1GJ/9AVaP9I6uasMZ/JcdwZBS3qwvKo5A5z9uGhP5c7TvItzcmPb44b5Mw2kT+WjUuAA== +"@smithy/util-hex-encoding@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-1.0.2.tgz#5b9f2162f2a59b2d2aa39992bd2c7f65b6616ab6" + integrity sha512-Bxydb5rMJorMV6AuDDMOxro3BMDdIwtbQKHpwvQFASkmr52BnpDsWlxgpJi8Iq7nk1Bt4E40oE1Isy/7ubHGzg== dependencies: - "@ledgerhq/errors" "^5.50.0" - "@ledgerhq/logs" "^5.50.0" - rxjs "6" - semver "^7.3.5" + tslib "^2.5.0" -"@ledgerhq/errors@^5.26.0", "@ledgerhq/errors@^5.50.0": - version "5.50.0" - resolved "https://registry.npmjs.org/@ledgerhq/errors/-/errors-5.50.0.tgz" - integrity sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow== +"@smithy/util-middleware@^1.0.1", "@smithy/util-middleware@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-1.0.2.tgz#c3d4c7a6cd31bde33901e54abd7700c8ca73dab3" + integrity sha512-vtXK7GOR2BoseCX8NCGe9SaiZrm9M2lm/RVexFGyPuafTtry9Vyv7hq/vw8ifd/G/pSJ+msByfJVb1642oQHKw== + dependencies: + tslib "^2.5.0" -"@ledgerhq/hw-app-eth@5.27.2": - version "5.27.2" - resolved "https://registry.npmjs.org/@ledgerhq/hw-app-eth/-/hw-app-eth-5.27.2.tgz" - integrity sha512-llNdrE894cCN8j6yxJEUniciyLVcLmu5N0UmIJLOObztG+5rOF4bX54h4SreTWK+E10Z0CzHSeyE5Lz/tVcqqQ== +"@smithy/util-retry@^1.0.1", "@smithy/util-retry@^1.0.2", "@smithy/util-retry@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-1.0.4.tgz#9d95df3884981414163d5f780d38e3529384d9ad" + integrity sha512-RnZPVFvRoqdj2EbroDo3OsnnQU8eQ4AlnZTOGusbYKybH3269CFdrZfZJloe60AQjX7di3J6t/79PjwCLO5Khw== dependencies: - "@ledgerhq/cryptoassets" "^5.27.2" - "@ledgerhq/errors" "^5.26.0" - "@ledgerhq/hw-transport" "^5.26.0" - bignumber.js "^9.0.1" - rlp "^2.2.6" + "@smithy/service-error-classification" "^1.0.3" + tslib "^2.5.0" -"@ledgerhq/hw-transport-node-hid-noevents@^5.26.0": - version "5.51.1" - resolved "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-5.51.1.tgz" - integrity sha512-9wFf1L8ZQplF7XOY2sQGEeOhpmBRzrn+4X43kghZ7FBDoltrcK+s/D7S+7ffg3j2OySyP6vIIIgloXylao5Scg== +"@smithy/util-stream@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-1.0.2.tgz#2d33aa5168e51d1dd7937c32a09c8334d2da44d9" + integrity sha512-qyN2M9QFMTz4UCHi6GnBfLOGYKxQZD01Ga6nzaXFFC51HP/QmArU72e4kY50Z/EtW8binPxspP2TAsGbwy9l3A== dependencies: - "@ledgerhq/devices" "^5.51.1" - "@ledgerhq/errors" "^5.50.0" - "@ledgerhq/hw-transport" "^5.51.1" - "@ledgerhq/logs" "^5.50.0" - node-hid "2.1.1" + "@smithy/fetch-http-handler" "^1.0.2" + "@smithy/node-http-handler" "^1.0.3" + "@smithy/types" "^1.1.1" + "@smithy/util-base64" "^1.0.2" + "@smithy/util-buffer-from" "^1.0.2" + "@smithy/util-hex-encoding" "^1.0.2" + "@smithy/util-utf8" "^1.0.2" + tslib "^2.5.0" -"@ledgerhq/hw-transport-node-hid@5.26.0": - version "5.26.0" - resolved "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-5.26.0.tgz" - integrity sha512-qhaefZVZatJ6UuK8Wb6WSFNOLWc2mxcv/xgsfKi5HJCIr4bPF/ecIeN+7fRcEaycxj4XykY6Z4A7zDVulfFH4w== +"@smithy/util-uri-escape@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-1.0.2.tgz#c69a5423c9baa7a045a79372320bd40a437ac756" + integrity sha512-k8C0BFNS9HpBMHSgUDnWb1JlCQcFG+PPlVBq9keP4Nfwv6a9Q0yAfASWqUCtzjuMj1hXeLhn/5ADP6JxnID1Pg== dependencies: - "@ledgerhq/devices" "^5.26.0" - "@ledgerhq/errors" "^5.26.0" - "@ledgerhq/hw-transport" "^5.26.0" - "@ledgerhq/hw-transport-node-hid-noevents" "^5.26.0" - "@ledgerhq/logs" "^5.26.0" - lodash "^4.17.20" - node-hid "1.3.0" - usb "^1.6.3" + tslib "^2.5.0" -"@ledgerhq/hw-transport-u2f@5.26.0": - version "5.26.0" - resolved "https://registry.npmjs.org/@ledgerhq/hw-transport-u2f/-/hw-transport-u2f-5.26.0.tgz" - integrity sha512-QTxP1Rsh+WZ184LUOelYVLeaQl3++V3I2jFik+l9JZtakwEHjD0XqOT750xpYNL/vfHsy31Wlz+oicdxGzFk+w== +"@smithy/util-utf8@^1.0.1", "@smithy/util-utf8@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-1.0.2.tgz#b34c27b4efbe4f0edb6560b6d4f743088302671f" + integrity sha512-V4cyjKfJlARui0dMBfWJMQAmJzoW77i4N3EjkH/bwnE2Ngbl4tqD2Y0C/xzpzY/J1BdxeCKxAebVFk8aFCaSCw== dependencies: - "@ledgerhq/errors" "^5.26.0" - "@ledgerhq/hw-transport" "^5.26.0" - "@ledgerhq/logs" "^5.26.0" - u2f-api "0.2.7" + "@smithy/util-buffer-from" "^1.0.2" + tslib "^2.5.0" -"@ledgerhq/hw-transport@5.26.0": - version "5.26.0" - resolved "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.26.0.tgz" - integrity sha512-NFeJOJmyEfAX8uuIBTpocWHcz630sqPcXbu864Q+OCBm4EK5UOKV1h/pX7e0xgNIKY8zhJ/O4p4cIZp9tnXLHQ== +"@solidity-parser/parser@^0.14.0", "@solidity-parser/parser@^0.14.1", "@solidity-parser/parser@^0.14.5": + version "0.14.5" + resolved "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz" + integrity sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg== dependencies: - "@ledgerhq/devices" "^5.26.0" - "@ledgerhq/errors" "^5.26.0" - events "^3.2.0" + antlr4ts "^0.5.0-alpha.4" -"@ledgerhq/hw-transport@^5.26.0", "@ledgerhq/hw-transport@^5.51.1": - version "5.51.1" - resolved "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz" - integrity sha512-6wDYdbWrw9VwHIcoDnqWBaDFyviyjZWv6H9vz9Vyhe4Qd7TIFmbTl/eWs6hZvtZBza9K8y7zD8ChHwRI4s9tSw== - dependencies: - "@ledgerhq/devices" "^5.51.1" - "@ledgerhq/errors" "^5.50.0" - events "^3.3.0" - -"@ledgerhq/logs@^5.26.0", "@ledgerhq/logs@^5.50.0": - version "5.50.0" - resolved "https://registry.npmjs.org/@ledgerhq/logs/-/logs-5.50.0.tgz" - integrity sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA== - -"@leichtgewicht/ip-codec@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" - integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== +"@sqltools/formatter@^1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@sqltools/formatter/-/formatter-1.2.5.tgz#3abc203c79b8c3e90fd6c156a0c62d5403520e12" + integrity sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw== -"@lerna/add@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/add/-/add-4.0.0.tgz" - integrity sha512-cpmAH1iS3k8JBxNvnMqrGTTjbY/ZAiKa1ChJzFevMYY3eeqbvhsBKnBcxjRXtdrJ6bd3dCQM+ZtK+0i682Fhng== +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== dependencies: - "@lerna/bootstrap" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/npm-conf" "4.0.0" - "@lerna/validation-error" "4.0.0" - dedent "^0.7.0" - npm-package-arg "^8.1.0" - p-map "^4.0.0" - pacote "^11.2.6" - semver "^7.3.4" + defer-to-connect "^1.0.1" -"@lerna/bootstrap@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-4.0.0.tgz" - integrity sha512-RkS7UbeM2vu+kJnHzxNRCLvoOP9yGNgkzRdy4UV2hNalD7EP41bLvRVOwRYQ7fhc2QcbhnKNdOBihYRL0LcKtw== +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/has-npm-version" "4.0.0" - "@lerna/npm-install" "4.0.0" - "@lerna/package-graph" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/rimraf-dir" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/symlink-binary" "4.0.0" - "@lerna/symlink-dependencies" "4.0.0" - "@lerna/validation-error" "4.0.0" - dedent "^0.7.0" - get-port "^5.1.1" - multimatch "^5.0.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - p-map "^4.0.0" - p-map-series "^2.1.0" - p-waterfall "^2.1.1" - read-package-tree "^5.3.1" - semver "^7.3.4" + defer-to-connect "^2.0.0" -"@lerna/changed@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/changed/-/changed-4.0.0.tgz" - integrity sha512-cD+KuPRp6qiPOD+BO6S6SN5cARspIaWSOqGBpGnYzLb4uWT8Vk4JzKyYtc8ym1DIwyoFXHosXt8+GDAgR8QrgQ== +"@szmarczak/http-timer@^5.0.1": + version "5.0.1" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== dependencies: - "@lerna/collect-updates" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/listable" "4.0.0" - "@lerna/output" "4.0.0" + defer-to-connect "^2.0.1" -"@lerna/check-working-tree@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-4.0.0.tgz" - integrity sha512-/++bxM43jYJCshBiKP5cRlCTwSJdRSxVmcDAXM+1oUewlZJVSVlnks5eO0uLxokVFvLhHlC5kHMc7gbVFPHv6Q== - dependencies: - "@lerna/collect-uncommitted" "4.0.0" - "@lerna/describe-ref" "4.0.0" - "@lerna/validation-error" "4.0.0" +"@textlint/ast-node-types@^12.3.0": + version "12.3.0" + resolved "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.3.0.tgz" + integrity sha512-ke5hlKy/xZ/vQt6j+h4k9GradJPDsV3FKsUqWpCpF/X8qWCU2zM4e1SMUAFjoUcLuF9in+eXIQ71Qm/AdjjkZQ== -"@lerna/child-process@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/child-process/-/child-process-4.0.0.tgz" - integrity sha512-XtCnmCT9eyVsUUHx6y/CTBYdV9g2Cr/VxyseTWBgfIur92/YKClfEtJTbOh94jRT62hlKLqSvux/UhxXVh613Q== +"@textlint/markdown-to-ast@^12.1.1": + version "12.5.0" + resolved "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.5.0.tgz" + integrity sha512-+fUslPm0+ukMnRVMPUQwKv1DEwmDP/rXFuzc5+k5tCMhighZ/Fv/e3Y9MUe7SgNDte7ilajTa3/uP0Iurr60WA== dependencies: - chalk "^4.1.0" - execa "^5.0.0" - strong-log-transformer "^2.1.0" + "@textlint/ast-node-types" "^12.3.0" + debug "^4.3.4" + mdast-util-gfm-autolink-literal "^0.1.3" + remark-footnotes "^3.0.0" + remark-frontmatter "^3.0.0" + remark-gfm "^1.0.0" + remark-parse "^9.0.0" + traverse "^0.6.7" + unified "^9.2.2" -"@lerna/clean@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/clean/-/clean-4.0.0.tgz" - integrity sha512-uugG2iN9k45ITx2jtd8nEOoAtca8hNlDCUM0N3lFgU/b1mEQYAPRkqr1qs4FLRl/Y50ZJ41wUz1eazS+d/0osA== +"@thehubbleproject/bls@^0.5.1": + version "0.5.1" + resolved "https://registry.npmjs.org/@thehubbleproject/bls/-/bls-0.5.1.tgz" + integrity sha512-g5zeMZ8js/yg6MjFoC+pt0eqfCL2jC46yLY1LbKNriyqftB1tE3jpG/FMMDIW3x9/yRg/AgUb8Nluqj15tQs+A== dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/rimraf-dir" "4.0.0" - p-map "^4.0.0" - p-map-series "^2.1.0" - p-waterfall "^2.1.1" + ethers "^5.5.3" + mcl-wasm "^1.0.0" -"@lerna/cli@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/cli/-/cli-4.0.0.tgz" - integrity sha512-Neaw3GzFrwZiRZv2g7g6NwFjs3er1vhraIniEs0jjVLPMNC4eata0na3GfE5yibkM/9d3gZdmihhZdZ3EBdvYA== - dependencies: - "@lerna/global-options" "4.0.0" - dedent "^0.7.0" - npmlog "^4.1.2" - yargs "^16.2.0" +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -"@lerna/collect-uncommitted@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-4.0.0.tgz" - integrity sha512-ufSTfHZzbx69YNj7KXQ3o66V4RC76ffOjwLX0q/ab//61bObJ41n03SiQEhSlmpP+gmFbTJ3/7pTe04AHX9m/g== - dependencies: - "@lerna/child-process" "4.0.0" - chalk "^4.1.0" - npmlog "^4.1.2" +"@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== -"@lerna/collect-updates@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-4.0.0.tgz" - integrity sha512-bnNGpaj4zuxsEkyaCZLka9s7nMs58uZoxrRIPJ+nrmrZYp1V5rrd+7/NYTuunOhY2ug1sTBvTAxj3NZQ+JKnOw== +"@truffle/abi-utils@^0.3.6": + version "0.3.6" + resolved "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-0.3.6.tgz" + integrity sha512-61aTH2QmwVA1INaPMufRHTsS6jsEhS+GCkuCDdvBDmwctSnCKGDOr185BGt65QrpMRxYmIoH6WFBSNMYxW9GRw== dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/describe-ref" "4.0.0" - minimatch "^3.0.4" - npmlog "^4.1.2" - slash "^3.0.0" + change-case "3.0.2" + fast-check "3.1.1" + web3-utils "1.8.1" -"@lerna/command@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/command/-/command-4.0.0.tgz" - integrity sha512-LM9g3rt5FsPNFqIHUeRwWXLNHJ5NKzOwmVKZ8anSp4e1SPrv2HNc1V02/9QyDDZK/w+5POXH5lxZUI1CHaOK/A== +"@truffle/blockchain-utils@^0.1.6": + version "0.1.6" + resolved "https://registry.npmjs.org/@truffle/blockchain-utils/-/blockchain-utils-0.1.6.tgz" + integrity sha512-SldoNRIFSm3+HMBnSc2jFsu5TWDkCN4X6vL3wrd0t6DIeF7nD6EoPPjxwbFSoqCnkkRxMuZeL6sUx7UMJS/wSA== + +"@truffle/codec@^0.14.12": + version "0.14.12" + resolved "https://registry.npmjs.org/@truffle/codec/-/codec-0.14.12.tgz" + integrity sha512-0RIUoZQiGqNNp0zogeoCLoFoKSY65ih129rjrDqyv7Yy+IIpKgdOk8zZqg2sWIt7ukQFjZmAOwPznhYNGg/eKA== dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/package-graph" "4.0.0" - "@lerna/project" "4.0.0" - "@lerna/validation-error" "4.0.0" - "@lerna/write-log-file" "4.0.0" - clone-deep "^4.0.1" - dedent "^0.7.0" - execa "^5.0.0" - is-ci "^2.0.0" - npmlog "^4.1.2" + "@truffle/abi-utils" "^0.3.6" + "@truffle/compile-common" "^0.9.2" + big.js "^6.0.3" + bn.js "^5.1.3" + cbor "^5.2.0" + debug "^4.3.1" + lodash "^4.17.21" + semver "7.3.7" + utf8 "^3.0.0" + web3-utils "1.8.1" -"@lerna/conventional-commits@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-4.0.0.tgz" - integrity sha512-CSUQRjJHFrH8eBn7+wegZLV3OrNc0Y1FehYfYGhjLE2SIfpCL4bmfu/ViYuHh9YjwHaA+4SX6d3hR+xkeseKmw== +"@truffle/compile-common@^0.9.2": + version "0.9.2" + resolved "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.2.tgz" + integrity sha512-n7MF/4/dntccj44RGe3PRMD8Vk46PU8dJtzd1VLAfgokK2Y2N+SjAzDskBnmAydZVWAM315nZIUQsgnY8xoATw== dependencies: - "@lerna/validation-error" "4.0.0" - conventional-changelog-angular "^5.0.12" - conventional-changelog-core "^4.2.2" - conventional-recommended-bump "^6.1.0" - fs-extra "^9.1.0" - get-stream "^6.0.0" - lodash.template "^4.5.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - pify "^5.0.0" - semver "^7.3.4" + "@truffle/error" "^0.2.0" + colors "1.4.0" -"@lerna/create-symlink@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-4.0.0.tgz" - integrity sha512-I0phtKJJdafUiDwm7BBlEUOtogmu8+taxq6PtIrxZbllV9hWg59qkpuIsiFp+no7nfRVuaasNYHwNUhDAVQBig== +"@truffle/contract-schema@^3.4.11": + version "3.4.11" + resolved "https://registry.npmjs.org/@truffle/contract-schema/-/contract-schema-3.4.11.tgz" + integrity sha512-wReyVZUPyU9Zy5PSCugBLG1nnruBmRAJ/gmoirQiJ9N2n+s1iGBTY49tkDqFMz3XUUE0kplfdb9YKZJlLkTWzQ== dependencies: - cmd-shim "^4.1.0" - fs-extra "^9.1.0" - npmlog "^4.1.2" + ajv "^6.10.0" + debug "^4.3.1" -"@lerna/create@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/create/-/create-4.0.0.tgz" - integrity sha512-mVOB1niKByEUfxlbKTM1UNECWAjwUdiioIbRQZEeEabtjCL69r9rscIsjlGyhGWCfsdAG5wfq4t47nlDXdLLag== +"@truffle/contract@^4.0.35": + version "4.6.11" + resolved "https://registry.npmjs.org/@truffle/contract/-/contract-4.6.11.tgz" + integrity sha512-0YUS+4D4M+tLFx9JSxFgr7zfYBnHytmLDBjQKemhH/19NbSfos3bajdB08nKAphVM7IisoKnaCd5HOsEWusJJw== dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/npm-conf" "4.0.0" - "@lerna/validation-error" "4.0.0" - dedent "^0.7.0" - fs-extra "^9.1.0" - globby "^11.0.2" - init-package-json "^2.0.2" - npm-package-arg "^8.1.0" - p-reduce "^2.1.0" - pacote "^11.2.6" - pify "^5.0.0" - semver "^7.3.4" - slash "^3.0.0" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "^3.0.0" - whatwg-url "^8.4.0" - yargs-parser "20.2.4" - -"@lerna/describe-ref@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-4.0.0.tgz" - integrity sha512-eTU5+xC4C5Gcgz+Ey4Qiw9nV2B4JJbMulsYJMW8QjGcGh8zudib7Sduj6urgZXUYNyhYpRs+teci9M2J8u+UvQ== - dependencies: - "@lerna/child-process" "4.0.0" - npmlog "^4.1.2" + "@ensdomains/ensjs" "^2.1.0" + "@truffle/blockchain-utils" "^0.1.6" + "@truffle/contract-schema" "^3.4.11" + "@truffle/debug-utils" "^6.0.43" + "@truffle/error" "^0.2.0" + "@truffle/interface-adapter" "^0.5.26" + bignumber.js "^7.2.1" + debug "^4.3.1" + ethers "^4.0.32" + web3 "1.8.1" + web3-core-helpers "1.8.1" + web3-core-promievent "1.8.1" + web3-eth-abi "1.8.1" + web3-utils "1.8.1" -"@lerna/diff@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/diff/-/diff-4.0.0.tgz" - integrity sha512-jYPKprQVg41+MUMxx6cwtqsNm0Yxx9GDEwdiPLwcUTFx+/qKCEwifKNJ1oGIPBxyEHX2PFCOjkK39lHoj2qiag== +"@truffle/debug-utils@^6.0.43": + version "6.0.43" + resolved "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-6.0.43.tgz" + integrity sha512-vJQmfSyrEgLjn7tp7K6WlZAkjISb5MFlN8mAjGnMz30Ja6/cTMQ0l6NLZGPYgZYk5uB4KrqcmNC+PqXrgXWt2Q== dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/validation-error" "4.0.0" - npmlog "^4.1.2" + "@truffle/codec" "^0.14.12" + "@trufflesuite/chromafi" "^3.0.0" + bn.js "^5.1.3" + chalk "^2.4.2" + debug "^4.3.1" + highlightjs-solidity "^2.0.5" -"@lerna/exec@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/exec/-/exec-4.0.0.tgz" - integrity sha512-VGXtL/b/JfY84NB98VWZpIExfhLOzy0ozm/0XaS4a2SmkAJc5CeUfrhvHxxkxiTBLkU+iVQUyYEoAT0ulQ8PCw== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/profiler" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/validation-error" "4.0.0" - p-map "^4.0.0" +"@truffle/error@^0.1.1": + version "0.1.1" + resolved "https://registry.npmjs.org/@truffle/error/-/error-0.1.1.tgz" + integrity sha512-sE7c9IHIGdbK4YayH4BC8i8qMjoAOeg6nUXUDZZp8wlU21/EMpaG+CLx+KqcIPyR+GSWIW3Dm0PXkr2nlggFDA== -"@lerna/filter-options@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-4.0.0.tgz" - integrity sha512-vV2ANOeZhOqM0rzXnYcFFCJ/kBWy/3OA58irXih9AMTAlQLymWAK0akWybl++sUJ4HB9Hx12TOqaXbYS2NM5uw== - dependencies: - "@lerna/collect-updates" "4.0.0" - "@lerna/filter-packages" "4.0.0" - dedent "^0.7.0" - npmlog "^4.1.2" +"@truffle/error@^0.2.0": + version "0.2.0" + resolved "https://registry.npmjs.org/@truffle/error/-/error-0.2.0.tgz" + integrity sha512-Fe0/z4WWb7IP2gBnv3l6zqP87Y0kSMs7oiSLakKJq17q3GUunrHSdioKuNspdggxkXIBhEQLhi8C+LJdwmHKWQ== -"@lerna/filter-packages@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-4.0.0.tgz" - integrity sha512-+4AJIkK7iIiOaqCiVTYJxh/I9qikk4XjNQLhE3kixaqgMuHl1NQ99qXRR0OZqAWB9mh8Z1HA9bM5K1HZLBTOqA== +"@truffle/interface-adapter@^0.5.25", "@truffle/interface-adapter@^0.5.26": + version "0.5.26" + resolved "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.5.26.tgz" + integrity sha512-fBhoqtT+CT4XKXcOijvw0RIMgyUi3FJg+n5i5PyGBsoRzqbLZd9cZq+oMNjOZPdf3GH68hsOFOaQO5tZH7oZow== dependencies: - "@lerna/validation-error" "4.0.0" - multimatch "^5.0.0" - npmlog "^4.1.2" + bn.js "^5.1.3" + ethers "^4.0.32" + web3 "1.8.1" -"@lerna/get-npm-exec-opts@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-4.0.0.tgz" - integrity sha512-yvmkerU31CTWS2c7DvmAWmZVeclPBqI7gPVr5VATUKNWJ/zmVcU4PqbYoLu92I9Qc4gY1TuUplMNdNuZTSL7IQ== +"@truffle/provider@^0.2.24": + version "0.2.64" + resolved "https://registry.npmjs.org/@truffle/provider/-/provider-0.2.64.tgz" + integrity sha512-ZwPsofw4EsCq/2h0t73SPnnFezu4YQWBmK4FxFaOUX0F+o8NsZuHKyfJzuZwyZbiktYmefM3yD9rM0Dj4BhNbw== dependencies: - npmlog "^4.1.2" + "@truffle/error" "^0.1.1" + "@truffle/interface-adapter" "^0.5.25" + debug "^4.3.1" + web3 "1.7.4" -"@lerna/get-packed@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-4.0.0.tgz" - integrity sha512-rfWONRsEIGyPJTxFzC8ECb3ZbsDXJbfqWYyeeQQDrJRPnEJErlltRLPLgC2QWbxFgFPsoDLeQmFHJnf0iDfd8w== +"@trufflesuite/chromafi@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@trufflesuite/chromafi/-/chromafi-3.0.0.tgz" + integrity sha512-oqWcOqn8nT1bwlPPfidfzS55vqcIDdpfzo3HbU9EnUmcSTX+I8z0UyUFI3tZQjByVJulbzxHxUGS3ZJPwK/GPQ== dependencies: - fs-extra "^9.1.0" - ssri "^8.0.1" - tar "^6.1.0" + camelcase "^4.1.0" + chalk "^2.3.2" + cheerio "^1.0.0-rc.2" + detect-indent "^5.0.0" + highlight.js "^10.4.1" + lodash.merge "^4.6.2" + strip-ansi "^4.0.0" + strip-indent "^2.0.0" -"@lerna/github-client@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/github-client/-/github-client-4.0.0.tgz" - integrity sha512-2jhsldZtTKXYUBnOm23Lb0Fx8G4qfSXF9y7UpyUgWUj+YZYd+cFxSuorwQIgk5P4XXrtVhsUesIsli+BYSThiw== - dependencies: - "@lerna/child-process" "4.0.0" - "@octokit/plugin-enterprise-rest" "^6.0.1" - "@octokit/rest" "^18.1.0" - git-url-parse "^11.4.4" - npmlog "^4.1.2" +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== -"@lerna/gitlab-client@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-4.0.0.tgz" - integrity sha512-OMUpGSkeDWFf7BxGHlkbb35T7YHqVFCwBPSIR6wRsszY8PAzCYahtH3IaJzEJyUg6vmZsNl0FSr3pdA2skhxqA== - dependencies: - node-fetch "^2.6.1" - npmlog "^4.1.2" - whatwg-url "^8.4.0" +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== -"@lerna/global-options@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/global-options/-/global-options-4.0.0.tgz" - integrity sha512-TRMR8afAHxuYBHK7F++Ogop2a82xQjoGna1dvPOY6ltj/pEx59pdgcJfYcynYqMkFIk8bhLJJN9/ndIfX29FTQ== +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== -"@lerna/has-npm-version@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-4.0.0.tgz" - integrity sha512-LQ3U6XFH8ZmLCsvsgq1zNDqka0Xzjq5ibVN+igAI5ccRWNaUsE/OcmsyMr50xAtNQMYMzmpw5GVLAivT2/YzCg== - dependencies: - "@lerna/child-process" "4.0.0" - semver "^7.3.4" +"@tsconfig/node16@^1.0.2": + version "1.0.3" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== -"@lerna/import@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/import/-/import-4.0.0.tgz" - integrity sha512-FaIhd+4aiBousKNqC7TX1Uhe97eNKf5/SC7c5WZANVWtC7aBWdmswwDt3usrzCNpj6/Wwr9EtEbYROzxKH8ffg== +"@typechain/ethers-v5@^10.1.0": + version "10.2.0" + resolved "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-10.2.0.tgz" + integrity sha512-ikaq0N/w9fABM+G01OFmU3U3dNnyRwEahkdvi9mqy1a3XwKiPZaF/lu54OcNaEWnpvEYyhhS0N7buCtLQqC92w== dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/validation-error" "4.0.0" - dedent "^0.7.0" - fs-extra "^9.1.0" - p-map-series "^2.1.0" + lodash "^4.17.15" + ts-essentials "^7.0.1" -"@lerna/info@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/info/-/info-4.0.0.tgz" - integrity sha512-8Uboa12kaCSZEn4XRfPz5KU9XXoexSPS4oeYGj76s2UQb1O1GdnEyfjyNWoUl1KlJ2i/8nxUskpXIftoFYH0/Q== +"@typechain/ethers-v5@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-2.0.0.tgz" + integrity sha512-0xdCkyGOzdqh4h5JSf+zoWx85IusEjDcPIwNEHP8mrWSnCae4rvrqB+/gtpdNfX7zjlFlZiMeePn2r63EI3Lrw== dependencies: - "@lerna/command" "4.0.0" - "@lerna/output" "4.0.0" - envinfo "^7.7.4" + ethers "^5.0.2" -"@lerna/init@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/init/-/init-4.0.0.tgz" - integrity sha512-wY6kygop0BCXupzWj5eLvTUqdR7vIAm0OgyV9WHpMYQGfs1V22jhztt8mtjCloD/O0nEe4tJhdG62XU5aYmPNQ== +"@typechain/hardhat@^6.1.2": + version "6.1.5" + resolved "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-6.1.5.tgz" + integrity sha512-lg7LW4qDZpxFMknp3Xool61Fg6Lays8F8TXdFGBG+MxyYcYU5795P1U2XdStuzGq9S2Dzdgh+1jGww9wvZ6r4Q== dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" fs-extra "^9.1.0" - p-map "^4.0.0" - write-json-file "^4.3.0" -"@lerna/link@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/link/-/link-4.0.0.tgz" - integrity sha512-KlvPi7XTAcVOByfaLlOeYOfkkDcd+bejpHMCd1KcArcFTwijOwXOVi24DYomIeHvy6HsX/IUquJ4PPUJIeB4+w== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/package-graph" "4.0.0" - "@lerna/symlink-dependencies" "4.0.0" - p-map "^4.0.0" - slash "^3.0.0" +"@types/abstract-leveldown@*": + version "7.2.1" + resolved "https://registry.npmjs.org/@types/abstract-leveldown/-/abstract-leveldown-7.2.1.tgz" + integrity sha512-YK8irIC+eMrrmtGx0H4ISn9GgzLd9dojZWJaMbjp1YHLl2VqqNFBNrL5Q3KjGf4VE3sf/4hmq6EhQZ7kZp1NoQ== -"@lerna/list@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/list/-/list-4.0.0.tgz" - integrity sha512-L2B5m3P+U4Bif5PultR4TI+KtW+SArwq1i75QZ78mRYxPc0U/piau1DbLOmwrdqr99wzM49t0Dlvl6twd7GHFg== +"@types/async-eventemitter@^0.2.1": + version "0.2.1" + resolved "https://registry.npmjs.org/@types/async-eventemitter/-/async-eventemitter-0.2.1.tgz" + integrity sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg== + +"@types/bn.js@*", "@types/bn.js@^5.1.0": + version "5.1.1" + resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz" + integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/listable" "4.0.0" - "@lerna/output" "4.0.0" + "@types/node" "*" -"@lerna/listable@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/listable/-/listable-4.0.0.tgz" - integrity sha512-/rPOSDKsOHs5/PBLINZOkRIX1joOXUXEtyUs5DHLM8q6/RP668x/1lFhw6Dx7/U+L0+tbkpGtZ1Yt0LewCLgeQ== +"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5": + 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== dependencies: - "@lerna/query-graph" "4.0.0" - chalk "^4.1.0" - columnify "^1.5.4" + "@types/node" "*" -"@lerna/log-packed@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-4.0.0.tgz" - integrity sha512-+dpCiWbdzgMAtpajLToy9PO713IHoE6GV/aizXycAyA07QlqnkpaBNZ8DW84gHdM1j79TWockGJo9PybVhrrZQ== +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== dependencies: - byte-size "^7.0.0" - columnify "^1.5.4" - has-unicode "^2.0.1" - npmlog "^4.1.2" + "@types/connect" "*" + "@types/node" "*" -"@lerna/npm-conf@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-4.0.0.tgz" - integrity sha512-uS7H02yQNq3oejgjxAxqq/jhwGEE0W0ntr8vM3EfpCW1F/wZruwQw+7bleJQ9vUBjmdXST//tk8mXzr5+JXCfw== +"@types/browser-or-node@^1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@types/browser-or-node/-/browser-or-node-1.3.0.tgz" + integrity sha512-MVetr65IR7RdJbUxVHsaPFaXAO8fi89zv1g8L/mHygh1Q7xnnK02XZLwfMh57FOpTO6gtnagoPMQ/UOFfctXRQ== + +"@types/cacheable-request@^6.0.1", "@types/cacheable-request@^6.0.2": + version "6.0.3" + resolved "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== dependencies: - config-chain "^1.1.12" - pify "^5.0.0" + "@types/http-cache-semantics" "*" + "@types/keyv" "^3.1.4" + "@types/node" "*" + "@types/responselike" "^1.0.0" -"@lerna/npm-dist-tag@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-4.0.0.tgz" - integrity sha512-F20sg28FMYTgXqEQihgoqSfwmq+Id3zT23CnOwD+XQMPSy9IzyLf1fFVH319vXIw6NF6Pgs4JZN2Qty6/CQXGw== +"@types/chai-as-promised@^7.1.3", "@types/chai-as-promised@^7.1.4": + version "7.1.6" + resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.6.tgz#3b08cbe1e7206567a480dc6538bade374b19e4e1" + integrity sha512-cQLhk8fFarRVZAXUQV1xEnZgMoPxqKojBvRkqPCKPQCzEhpbbSKl1Uu75kDng7k5Ln6LQLUmNBjLlFthCgm1NA== dependencies: - "@lerna/otplease" "4.0.0" - npm-package-arg "^8.1.0" - npm-registry-fetch "^9.0.0" - npmlog "^4.1.2" + "@types/chai" "*" -"@lerna/npm-install@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-4.0.0.tgz" - integrity sha512-aKNxq2j3bCH3eXl3Fmu4D54s/YLL9WSwV8W7X2O25r98wzrO38AUN6AB9EtmAx+LV/SP15et7Yueg9vSaanRWg== +"@types/chai@*", "@types/chai@^4.2.0", "@types/chai@^4.2.17", "@types/chai@^4.2.18", "@types/chai@^4.2.21", "@types/chai@^4.3.1": + version "4.3.5" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.5.tgz#ae69bcbb1bebb68c4ac0b11e9d8ed04526b3562b" + integrity sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng== + +"@types/concat-stream@^1.6.0": + version "1.6.1" + resolved "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz" + integrity sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA== dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/get-npm-exec-opts" "4.0.0" - fs-extra "^9.1.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - signal-exit "^3.0.3" - write-pkg "^4.0.0" + "@types/node" "*" -"@lerna/npm-publish@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-4.0.0.tgz" - integrity sha512-vQb7yAPRo5G5r77DRjHITc9piR9gvEKWrmfCH7wkfBnGWEqu7n8/4bFQ7lhnkujvc8RXOsYpvbMQkNfkYibD/w== +"@types/connect@*": + version "3.4.35" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== dependencies: - "@lerna/otplease" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - fs-extra "^9.1.0" - libnpmpublish "^4.0.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - pify "^5.0.0" - read-package-json "^3.0.0" + "@types/node" "*" -"@lerna/npm-run-script@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-4.0.0.tgz" - integrity sha512-Jmyh9/IwXJjOXqKfIgtxi0bxi1pUeKe5bD3S81tkcy+kyng/GNj9WSqD5ZggoNP2NP//s4CLDAtUYLdP7CU9rA== +"@types/cors@^2.8.12", "@types/cors@^2.8.9": + version "2.8.13" + resolved "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz" + integrity sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA== dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/get-npm-exec-opts" "4.0.0" - npmlog "^4.1.2" + "@types/node" "*" -"@lerna/otplease@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/otplease/-/otplease-4.0.0.tgz" - integrity sha512-Sgzbqdk1GH4psNiT6hk+BhjOfIr/5KhGBk86CEfHNJTk9BK4aZYyJD4lpDbDdMjIV4g03G7pYoqHzH765T4fxw== +"@types/debug@^4.1.7": + version "4.1.7" + resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz" + integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== dependencies: - "@lerna/prompt" "4.0.0" + "@types/ms" "*" -"@lerna/output@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/output/-/output-4.0.0.tgz" - integrity sha512-Un1sHtO1AD7buDQrpnaYTi2EG6sLF+KOPEAMxeUYG5qG3khTs2Zgzq5WE3dt2N/bKh7naESt20JjIW6tBELP0w== +"@types/eslint-scope@^3.7.3": + version "3.7.4" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz" + integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== dependencies: - npmlog "^4.1.2" + "@types/eslint" "*" + "@types/estree" "*" -"@lerna/pack-directory@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-4.0.0.tgz" - integrity sha512-NJrmZNmBHS+5aM+T8N6FVbaKFScVqKlQFJNY2k7nsJ/uklNKsLLl6VhTQBPwMTbf6Tf7l6bcKzpy7aePuq9UiQ== +"@types/eslint@*": + version "8.21.1" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.1.tgz" + integrity sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ== dependencies: - "@lerna/get-packed" "4.0.0" - "@lerna/package" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - npm-packlist "^2.1.4" - npmlog "^4.1.2" - tar "^6.1.0" - temp-write "^4.0.0" + "@types/estree" "*" + "@types/json-schema" "*" -"@lerna/package-graph@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-4.0.0.tgz" - integrity sha512-QED2ZCTkfXMKFoTGoccwUzjHtZMSf3UKX14A4/kYyBms9xfFsesCZ6SLI5YeySEgcul8iuIWfQFZqRw+Qrjraw== +"@types/estree@*": + version "1.0.0" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== + +"@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + +"@types/express-serve-static-core@^4.17.31": + version "4.17.32" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz" + integrity sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA== dependencies: - "@lerna/prerelease-id-from-version" "4.0.0" - "@lerna/validation-error" "4.0.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - semver "^7.3.4" + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" -"@lerna/package@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/package/-/package-4.0.0.tgz" - integrity sha512-l0M/izok6FlyyitxiQKr+gZLVFnvxRQdNhzmQ6nRnN9dvBJWn+IxxpM+cLqGACatTnyo9LDzNTOj2Db3+s0s8Q== +"@types/express@^4.17.12", "@types/express@^4.17.13": + version "4.17.15" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz" + integrity sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ== dependencies: - load-json-file "^6.2.0" - npm-package-arg "^8.1.0" - write-pkg "^4.0.0" + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.31" + "@types/qs" "*" + "@types/serve-static" "*" -"@lerna/prerelease-id-from-version@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-4.0.0.tgz" - integrity sha512-GQqguzETdsYRxOSmdFZ6zDBXDErIETWOqomLERRY54f4p+tk4aJjoVdd9xKwehC9TBfIFvlRbL1V9uQGHh1opg== +"@types/form-data@0.0.33": + version "0.0.33" + resolved "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz" + integrity sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw== dependencies: - semver "^7.3.4" + "@types/node" "*" -"@lerna/profiler@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/profiler/-/profiler-4.0.0.tgz" - integrity sha512-/BaEbqnVh1LgW/+qz8wCuI+obzi5/vRE8nlhjPzdEzdmWmZXuCKyWSEzAyHOJWw1ntwMiww5dZHhFQABuoFz9Q== +"@types/glob@^7.1.1": + version "7.2.0" + resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== dependencies: - fs-extra "^9.1.0" - npmlog "^4.1.2" - upath "^2.0.1" + "@types/minimatch" "*" + "@types/node" "*" -"@lerna/project@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/project/-/project-4.0.0.tgz" - integrity sha512-o0MlVbDkD5qRPkFKlBZsXZjoNTWPyuL58564nSfZJ6JYNmgAptnWPB2dQlAc7HWRZkmnC2fCkEdoU+jioPavbg== +"@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/is-ci@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@types/is-ci/-/is-ci-3.0.0.tgz" + integrity sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ== dependencies: - "@lerna/package" "4.0.0" - "@lerna/validation-error" "4.0.0" - cosmiconfig "^7.0.0" - dedent "^0.7.0" - dot-prop "^6.0.1" - glob-parent "^5.1.1" - globby "^11.0.2" - load-json-file "^6.2.0" - npmlog "^4.1.2" - p-map "^4.0.0" - resolve-from "^5.0.0" - write-json-file "^4.3.0" + ci-info "^3.1.0" -"@lerna/prompt@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/prompt/-/prompt-4.0.0.tgz" - integrity sha512-4Ig46oCH1TH5M7YyTt53fT6TuaKMgqUUaqdgxvp6HP6jtdak6+amcsqB8YGz2eQnw/sdxunx84DfI9XpoLj4bQ== +"@types/json-schema@*", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + 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@^0.0.29": + version "0.0.29" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/keyv@^3.1.4": + version "3.1.4" + resolved "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== dependencies: - inquirer "^7.3.3" - npmlog "^4.1.2" + "@types/node" "*" -"@lerna/publish@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/publish/-/publish-4.0.0.tgz" - integrity sha512-K8jpqjHrChH22qtkytA5GRKIVFEtqBF6JWj1I8dWZtHs4Jywn8yB1jQ3BAMLhqmDJjWJtRck0KXhQQKzDK2UPg== +"@types/level-errors@*": + version "3.0.0" + resolved "https://registry.npmjs.org/@types/level-errors/-/level-errors-3.0.0.tgz" + integrity sha512-/lMtoq/Cf/2DVOm6zE6ORyOM+3ZVm/BvzEZVxUhf6bgh8ZHglXlBqxbxSlJeVp8FCbD3IVvk/VbsaNmDjrQvqQ== + +"@types/levelup@^4.3.0": + version "4.3.3" + resolved "https://registry.npmjs.org/@types/levelup/-/levelup-4.3.3.tgz" + integrity sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA== dependencies: - "@lerna/check-working-tree" "4.0.0" - "@lerna/child-process" "4.0.0" - "@lerna/collect-updates" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/describe-ref" "4.0.0" - "@lerna/log-packed" "4.0.0" - "@lerna/npm-conf" "4.0.0" - "@lerna/npm-dist-tag" "4.0.0" - "@lerna/npm-publish" "4.0.0" - "@lerna/otplease" "4.0.0" - "@lerna/output" "4.0.0" - "@lerna/pack-directory" "4.0.0" - "@lerna/prerelease-id-from-version" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/validation-error" "4.0.0" - "@lerna/version" "4.0.0" - fs-extra "^9.1.0" - libnpmaccess "^4.0.1" - npm-package-arg "^8.1.0" - npm-registry-fetch "^9.0.0" - npmlog "^4.1.2" - p-map "^4.0.0" - p-pipe "^3.1.0" - pacote "^11.2.6" - semver "^7.3.4" + "@types/abstract-leveldown" "*" + "@types/level-errors" "*" + "@types/node" "*" -"@lerna/pulse-till-done@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-4.0.0.tgz" - integrity sha512-Frb4F7QGckaybRhbF7aosLsJ5e9WuH7h0KUkjlzSByVycxY91UZgaEIVjS2oN9wQLrheLMHl6SiFY0/Pvo0Cxg== +"@types/levelup@^5.1.2": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/levelup/-/levelup-5.1.2.tgz#3b987fe66c95871dc97e74f0bce5b2eb91140782" + integrity sha512-JhCKONvFg2rEbsyyCCRkiPF03tMV1NyBXER4iXKBemgjwS4+SF6HGNuL4cfq6ueM6Yc+4ZbwJnU/5v6q3ZziUQ== dependencies: - npmlog "^4.1.2" + "@types/abstract-leveldown" "*" + "@types/level-errors" "*" + "@types/node" "*" -"@lerna/query-graph@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-4.0.0.tgz" - integrity sha512-YlP6yI3tM4WbBmL9GCmNDoeQyzcyg1e4W96y/PKMZa5GbyUvkS2+Jc2kwPD+5KcXou3wQZxSPzR3Te5OenaDdg== - dependencies: - "@lerna/package-graph" "4.0.0" +"@types/lodash@^4.14.168": + version "4.14.191" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz" + integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ== -"@lerna/resolve-symlink@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-4.0.0.tgz" - integrity sha512-RtX8VEUzqT+uLSCohx8zgmjc6zjyRlh6i/helxtZTMmc4+6O4FS9q5LJas2uGO2wKvBlhcD6siibGt7dIC3xZA== - dependencies: - fs-extra "^9.1.0" - npmlog "^4.1.2" - read-cmd-shim "^2.0.0" +"@types/lru-cache@^5.1.0": + version "5.1.1" + resolved "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== -"@lerna/rimraf-dir@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-4.0.0.tgz" - integrity sha512-QNH9ABWk9mcMJh2/muD9iYWBk1oQd40y6oH+f3wwmVGKYU5YJD//+zMiBI13jxZRtwBx0vmBZzkBkK1dR11cBg== +"@types/mdast@^3.0.0": + version "3.0.10" + resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz" + integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA== dependencies: - "@lerna/child-process" "4.0.0" - npmlog "^4.1.2" - path-exists "^4.0.0" - rimraf "^3.0.2" + "@types/unist" "*" -"@lerna/run-lifecycle@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-4.0.0.tgz" - integrity sha512-IwxxsajjCQQEJAeAaxF8QdEixfI7eLKNm4GHhXHrgBu185JcwScFZrj9Bs+PFKxwb+gNLR4iI5rpUdY8Y0UdGQ== +"@types/mime@*": + version "3.0.1" + resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + +"@types/minimatch@*": + version "5.1.2" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + +"@types/minimatch@^3.0.3": + version "3.0.5" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + +"@types/minimist@^1.2.0": + version "1.2.2" + resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz" + integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== + +"@types/mkdirp@^0.5.2": + version "0.5.2" + resolved "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz" + integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== dependencies: - "@lerna/npm-conf" "4.0.0" - npm-lifecycle "^3.1.5" - npmlog "^4.1.2" + "@types/node" "*" -"@lerna/run-topologically@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-4.0.0.tgz" - integrity sha512-EVZw9hGwo+5yp+VL94+NXRYisqgAlj0jWKWtAIynDCpghRxCE5GMO3xrQLmQgqkpUl9ZxQFpICgYv5DW4DksQA== +"@types/mocha@^8.2.2": + version "8.2.3" + resolved "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz" + integrity sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw== + +"@types/mocha@^9.0.0", "@types/mocha@^9.1.0": + version "9.1.1" + resolved "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz" + integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== + +"@types/morgan@^1.9.3": + version "1.9.4" + resolved "https://registry.npmjs.org/@types/morgan/-/morgan-1.9.4.tgz" + integrity sha512-cXoc4k+6+YAllH3ZHmx4hf7La1dzUk6keTR4bF4b4Sc0mZxU/zK4wO7l+ZzezXm/jkYj/qC+uYGZrarZdIVvyQ== dependencies: - "@lerna/query-graph" "4.0.0" - p-queue "^6.6.2" + "@types/node" "*" -"@lerna/run@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/run/-/run-4.0.0.tgz" - integrity sha512-9giulCOzlMPzcZS/6Eov6pxE9gNTyaXk0Man+iCIdGJNMrCnW7Dme0Z229WWP/UoxDKg71F2tMsVVGDiRd8fFQ== +"@types/ms@*": + version "0.7.31" + resolved "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz" + integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== + +"@types/node-fetch@^2.5.10", "@types/node-fetch@^2.5.5": + version "2.6.2" + resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz" + integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/npm-run-script" "4.0.0" - "@lerna/output" "4.0.0" - "@lerna/profiler" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/timer" "4.0.0" - "@lerna/validation-error" "4.0.0" - p-map "^4.0.0" + "@types/node" "*" + form-data "^3.0.0" -"@lerna/symlink-binary@4.0.0": +"@types/node@*", "@types/node@^18.0.0": + version "18.11.18" + resolved "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz" + integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== + +"@types/node@^10.0.3": + version "10.17.60" + resolved "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + +"@types/node@^12.0.0", "@types/node@^12.12.6", "@types/node@^12.7.1": + version "12.20.55" + resolved "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/node@^15.12.2": + version "15.14.9" + resolved "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz" + integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== + +"@types/node@^16.11.10": + version "16.18.36" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.36.tgz#0db5d7efc4760d36d0d1d22c85d1a53accd5dc27" + integrity sha512-8egDX8dE50XyXWH6C6PRCNkTP106DuUrvdrednFouDSmCi7IOvrqr0frznfZaHifHH/3aq/7a7v9N4wdXMqhBQ== + +"@types/node@^16.4.12": + version "16.18.11" + resolved "https://registry.npmjs.org/@types/node/-/node-16.18.11.tgz" + integrity sha512-3oJbGBUWuS6ahSnEq1eN2XrCyf4YsWI8OyCvo7c64zQJNplk3mO84t53o8lfTk+2ji59g5ycfc6qQ3fdHliHuA== + +"@types/node@^17.0.21": + version "17.0.45" + resolved "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz" + integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== + +"@types/node@^8.0.0": + version "8.10.66" + resolved "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz" + integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== + +"@types/normalize-package-data@^2.4.0": + version "2.4.1" + resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" + integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== + +"@types/parse-json@^4.0.0": version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-4.0.0.tgz" - integrity sha512-zualodWC4q1QQc1pkz969hcFeWXOsVYZC5AWVtAPTDfLl+TwM7eG/O6oP+Rr3fFowspxo6b1TQ6sYfDV6HXNWA== + resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/pbkdf2@^3.0.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz" + integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== dependencies: - "@lerna/create-symlink" "4.0.0" - "@lerna/package" "4.0.0" - fs-extra "^9.1.0" - p-map "^4.0.0" + "@types/node" "*" -"@lerna/symlink-dependencies@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-4.0.0.tgz" - integrity sha512-BABo0MjeUHNAe2FNGty1eantWp8u83BHSeIMPDxNq0MuW2K3CiQRaeWT3EGPAzXpGt0+hVzBrA6+OT0GPn7Yuw== +"@types/pino-multi-stream@^5.1.1": + version "5.1.3" + resolved "https://registry.npmjs.org/@types/pino-multi-stream/-/pino-multi-stream-5.1.3.tgz" + integrity sha512-OxIkhBpfXw1q1BkOIkTSrq0YAkOmlSBaZbM5EXjgjTvgNLZLBwC7/+HGVWw7wW5/ofRyNPDg8Ykd/cx4bq69PQ== dependencies: - "@lerna/create-symlink" "4.0.0" - "@lerna/resolve-symlink" "4.0.0" - "@lerna/symlink-binary" "4.0.0" - fs-extra "^9.1.0" - p-map "^4.0.0" - p-map-series "^2.1.0" + "@types/pino" "6.3" -"@lerna/timer@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/timer/-/timer-4.0.0.tgz" - integrity sha512-WFsnlaE7SdOvjuyd05oKt8Leg3ENHICnvX3uYKKdByA+S3g+TCz38JsNs7OUZVt+ba63nC2nbXDlUnuT2Xbsfg== +"@types/pino-pretty@*": + version "5.0.0" + resolved "https://registry.npmjs.org/@types/pino-pretty/-/pino-pretty-5.0.0.tgz" + integrity sha512-N1uzqSzioqz8R3AkDbSJwcfDWeI3YMPNapSQQhnB2ISU4NYgUIcAh+hYT5ygqBM+klX4htpEhXMmoJv3J7GrdA== + dependencies: + pino-pretty "*" -"@lerna/validation-error@4.0.0": +"@types/pino-std-serializers@*", "@types/pino-std-serializers@^4.0.0": version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-4.0.0.tgz" - integrity sha512-1rBOM5/koiVWlRi3V6dB863E1YzJS8v41UtsHgMr6gB2ncJ2LsQtMKlJpi3voqcgh41H8UsPXR58RrrpPpufyw== + resolved "https://registry.npmjs.org/@types/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz" + integrity sha512-gXfUZx2xIBbFYozGms53fT0nvkacx/+62c8iTxrEqH5PkIGAQvDbXg2774VWOycMPbqn5YJBQ3BMsg4Li3dWbg== dependencies: - npmlog "^4.1.2" + pino-std-serializers "*" -"@lerna/version@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/version/-/version-4.0.0.tgz" - integrity sha512-otUgiqs5W9zGWJZSCCMRV/2Zm2A9q9JwSDS7s/tlKq4mWCYriWo7+wsHEA/nPTMDyYyBO5oyZDj+3X50KDUzeA== +"@types/pino@6.3", "@types/pino@^6.3.6": + version "6.3.12" + resolved "https://registry.npmjs.org/@types/pino/-/pino-6.3.12.tgz" + integrity sha512-dsLRTq8/4UtVSpJgl9aeqHvbh6pzdmjYD3C092SYgLD2TyoCqHpTJk6vp8DvCTGGc7iowZ2MoiYiVUUCcu7muw== dependencies: - "@lerna/check-working-tree" "4.0.0" - "@lerna/child-process" "4.0.0" - "@lerna/collect-updates" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/conventional-commits" "4.0.0" - "@lerna/github-client" "4.0.0" - "@lerna/gitlab-client" "4.0.0" - "@lerna/output" "4.0.0" - "@lerna/prerelease-id-from-version" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/validation-error" "4.0.0" - chalk "^4.1.0" - dedent "^0.7.0" - load-json-file "^6.2.0" - minimatch "^3.0.4" - npmlog "^4.1.2" - p-map "^4.0.0" - p-pipe "^3.1.0" - p-reduce "^2.1.0" - p-waterfall "^2.1.1" - semver "^7.3.4" - slash "^3.0.0" - temp-write "^4.0.0" - write-json-file "^4.3.0" + "@types/node" "*" + "@types/pino-pretty" "*" + "@types/pino-std-serializers" "*" + sonic-boom "^2.1.0" -"@lerna/write-log-file@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-4.0.0.tgz" - integrity sha512-XRG5BloiArpXRakcnPHmEHJp+4AtnhRtpDIHSghmXD5EichI1uD73J7FgPp30mm2pDRq3FdqB0NbwSEsJ9xFQg== - dependencies: - npmlog "^4.1.2" - write-file-atomic "^3.0.3" +"@types/prettier@2.7.2", "@types/prettier@^2.1.1": + version "2.7.2" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz" + integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== -"@manypkg/find-root@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz" - integrity sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA== - dependencies: - "@babel/runtime" "^7.5.5" - "@types/node" "^12.7.1" - find-up "^4.1.0" - fs-extra "^8.1.0" +"@types/qs@*", "@types/qs@^6.2.31", "@types/qs@^6.9.4", "@types/qs@^6.9.7": + version "6.9.7" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== -"@manypkg/get-packages@^1.1.3": - version "1.1.3" - resolved "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz" - integrity sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A== - dependencies: - "@babel/runtime" "^7.5.5" - "@changesets/types" "^4.0.1" - "@manypkg/find-root" "^1.1.0" - fs-extra "^8.1.0" - globby "^11.0.0" - read-yaml-file "^1.1.0" +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== -"@mdx-js/react@^2.1.5": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-2.3.0.tgz#4208bd6d70f0d0831def28ef28c26149b03180b3" - integrity sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g== +"@types/resolve@^0.0.8": + version "0.0.8" + resolved "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== dependencies: - "@types/mdx" "^2.0.0" - "@types/react" ">=16" + "@types/node" "*" -"@metamask/eth-sig-util@^4.0.0": - 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== +"@types/responselike@^1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== 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" + "@types/node" "*" -"@metamask/safe-event-emitter@^2.0.0": - 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== - -"@mui/base@5.0.0-alpha.72": - version "5.0.0-alpha.72" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.72.tgz#551d64402ee5065cf81fd1388a3e7ab8c426fe3e" - integrity sha512-WCAooa9eqbsC68LhyKtDBRumH4hV1eRZ0A3SDKFHSwYG9fCOdsFv/H1dIYRJM0rwD45bMnuDiG3Qmx7YsTiptw== - dependencies: - "@babel/runtime" "^7.17.2" - "@emotion/is-prop-valid" "^1.1.2" - "@mui/utils" "^5.4.4" - "@popperjs/core" "^2.11.3" - clsx "^1.1.1" - prop-types "^15.7.2" - react-is "^17.0.2" - -"@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== +"@types/secp256k1@^4.0.1": + version "4.0.3" + resolved "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz" + integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== dependencies: - "@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" + "@types/node" "*" -"@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== +"@types/semver@^6.0.0": + version "6.2.3" + resolved "https://registry.npmjs.org/@types/semver/-/semver-6.2.3.tgz" + integrity sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A== -"@mui/icons-material@^5.11.16": - version "5.11.16" - resolved "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.11.16.tgz" - integrity sha512-oKkx9z9Kwg40NtcIajF9uOXhxiyTZrrm9nmIJ4UjkU2IdHpd4QVLbCc/5hZN/y0C6qzi2Zlxyr9TGddQx2vx2A== - dependencies: - "@babel/runtime" "^7.21.0" +"@types/semver@^7.3.12": + version "7.3.13" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz" + integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== -"@mui/material@^5.12.2": - version "5.13.4" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.13.4.tgz#1fed8249c980ed37f9767f9dba8aa3a589495ff3" - integrity sha512-Yq+4f1KLPa/Szd3xqra2hbOAf2Usl8GbubncArM6LIp40mBLtXIdPE29MNtHsbtuzz4g+eidrETgoi3wdbEYfQ== +"@types/serve-static@*": + version "1.15.0" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz" + integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== dependencies: - "@babel/runtime" "^7.21.0" - "@mui/base" "5.0.0-beta.4" - "@mui/core-downloads-tracker" "^5.13.4" - "@mui/system" "^5.13.2" - "@mui/types" "^7.2.4" - "@mui/utils" "^5.13.1" - "@types/react-transition-group" "^4.4.6" - clsx "^1.2.1" - csstype "^3.1.2" - prop-types "^15.8.1" - react-is "^18.2.0" - react-transition-group "^4.4.5" + "@types/mime" "*" + "@types/node" "*" -"@mui/private-theming@^5.11.2", "@mui/private-theming@^5.14.5": - version "5.14.5" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.14.5.tgz#834e1569c31e2644665f98d902def79014053017" - integrity sha512-cC4C5RrpXpDaaZyH9QwmPhRLgz+f2SYbOty3cPkk4qPSOSfif2ZEcDD9HTENKDDd9deB+xkPKzzZhi8cxIx8Ig== +"@types/sinon-chai@^3.2.3": + version "3.2.9" + resolved "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.9.tgz" + integrity sha512-/19t63pFYU0ikrdbXKBWj9PCdnKyTd0Qkz0X91Ta081cYsq90OxYdcWwK/dwEoDa6dtXgj2HJfmzgq+QZTHdmQ== dependencies: - "@babel/runtime" "^7.22.6" - "@mui/utils" "^5.14.5" - prop-types "^15.8.1" + "@types/chai" "*" + "@types/sinon" "*" -"@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== +"@types/sinon@*", "@types/sinon@^10.0.13": + version "10.0.16" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.16.tgz#4bf10313bd9aa8eef1e50ec9f4decd3dd455b4d3" + integrity sha512-j2Du5SYpXZjJVJtXBokASpPRj+e2z+VUhCPHmM6WMfe3dpHu6iVKJMU6AiBcMp/XTAYnEj6Wc1trJUWwZ0QaAQ== dependencies: - "@babel/runtime" "^7.21.0" - "@emotion/cache" "^11.11.0" - csstype "^3.1.2" - prop-types "^15.8.1" + "@types/sinonjs__fake-timers" "*" -"@mui/styles@^5.3.0": - version "5.11.2" - resolved "https://registry.npmjs.org/@mui/styles/-/styles-5.11.2.tgz" - integrity sha512-Yg6+PMPV4Mx1UJHow2e/nND2bQNWS1H38zrkJxlucXfaR0+aglO6u8R/OXmVspDj+Z5YW5B27lxRDvxCQN9nGw== - dependencies: - "@babel/runtime" "^7.20.7" - "@emotion/hash" "^0.9.0" - "@mui/private-theming" "^5.11.2" - "@mui/types" "^7.2.3" - "@mui/utils" "^5.11.2" - clsx "^1.2.1" - csstype "^3.1.1" - hoist-non-react-statics "^3.3.2" - jss "^10.9.2" - jss-plugin-camel-case "^10.9.2" - jss-plugin-default-unit "^10.9.2" - jss-plugin-global "^10.9.2" - jss-plugin-nested "^10.9.2" - jss-plugin-props-sort "^10.9.2" - jss-plugin-rule-value-function "^10.9.2" - jss-plugin-vendor-prefixer "^10.9.2" - prop-types "^15.8.1" +"@types/sinonjs__fake-timers@*": + version "8.1.2" + resolved "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz" + integrity sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA== -"@mui/system@^5.12.1", "@mui/system@^5.13.2": - version "5.14.5" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.14.5.tgz#614394c4183d90df82c540e0e736ba72c1f95f8e" - integrity sha512-mextXZHDeGcR7E1kx43TRARrVXy+gI4wzpUgNv7MqZs1dvTVXQGVeAT6ydj9d6FUqHBPMNLGV/21vJOrpqsL+w== - dependencies: - "@babel/runtime" "^7.22.6" - "@mui/private-theming" "^5.14.5" - "@mui/styled-engine" "^5.13.2" - "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.5" - clsx "^2.0.0" - csstype "^3.1.2" - prop-types "^15.8.1" +"@types/underscore@*": + version "1.11.4" + resolved "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.4.tgz" + integrity sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg== -"@mui/types@^7.2.3", "@mui/types@^7.2.4": - version "7.2.4" - resolved "https://registry.npmjs.org/@mui/types/-/types-7.2.4.tgz" - integrity sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA== +"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2": + version "2.0.6" + resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz" + integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== -"@mui/utils@^5.11.2", "@mui/utils@^5.13.1", "@mui/utils@^5.14.5", "@mui/utils@^5.4.4": - version "5.14.5" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.14.5.tgz#98fb6060610b793a8478e70ffe5e4ed5bd922dba" - integrity sha512-6Hzw63VR9C5xYv+CbjndoRLU6Gntal8rJ5W+GUzkyHrGWIyYPWZPa6AevnyGioySNETATe1H9oXS8f/7qgIHJA== +"@types/web3@1.0.19": + version "1.0.19" + resolved "https://registry.npmjs.org/@types/web3/-/web3-1.0.19.tgz" + integrity sha512-fhZ9DyvDYDwHZUp5/STa9XW2re0E8GxoioYJ4pEUZ13YHpApSagixj7IAdoYH5uAK+UalGq6Ml8LYzmgRA/q+A== 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" + "@types/bn.js" "*" + "@types/underscore" "*" -"@ndelangen/get-tarball@^3.0.7": - version "3.0.9" - resolved "https://registry.yarnpkg.com/@ndelangen/get-tarball/-/get-tarball-3.0.9.tgz#727ff4454e65f34707e742a59e5e6b1f525d8964" - integrity sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA== +"@typescript-eslint/eslint-plugin@^4.26.0": + version "4.33.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz" + integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== dependencies: - gunzip-maybe "^1.4.2" - pump "^3.0.0" - tar-fs "^2.1.1" + "@typescript-eslint/experimental-utils" "4.33.0" + "@typescript-eslint/scope-manager" "4.33.0" + debug "^4.3.1" + functional-red-black-tree "^1.0.1" + ignore "^5.1.8" + regexpp "^3.1.0" + semver "^7.3.5" + tsutils "^3.21.0" -"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": - version "5.1.1-v1" - resolved "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz" - integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== +"@typescript-eslint/eslint-plugin@^5.30.5", "@typescript-eslint/eslint-plugin@^5.45.1": + version "5.48.1" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.1.tgz" + integrity sha512-9nY5K1Rp2ppmpb9s9S2aBiF3xo5uExCehMDmYmmFqqyxgenbHJ3qbarcLt4ITgaD6r/2ypdlcFRdcuVPnks+fQ== dependencies: - eslint-scope "5.1.1" + "@typescript-eslint/scope-manager" "5.48.1" + "@typescript-eslint/type-utils" "5.48.1" + "@typescript-eslint/utils" "5.48.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" -"@noble/curves@1.1.0", "@noble/curves@~1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.1.0.tgz#f13fc667c89184bc04cccb9b11e8e7bae27d8c3d" - integrity sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA== +"@typescript-eslint/experimental-utils@4.33.0": + version "4.33.0" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz" + integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== dependencies: - "@noble/hashes" "1.3.1" - -"@noble/hashes@1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz" - integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== - -"@noble/hashes@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" - integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.33.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/typescript-estree" "4.33.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" -"@noble/hashes@~1.1.1": - version "1.1.5" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.5.tgz" - integrity sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ== +"@typescript-eslint/parser@^4.0.0", "@typescript-eslint/parser@^4.26.0": + version "4.33.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz" + integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== + dependencies: + "@typescript-eslint/scope-manager" "4.33.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/typescript-estree" "4.33.0" + debug "^4.3.1" -"@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" - integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== +"@typescript-eslint/parser@^5.30.5", "@typescript-eslint/parser@^5.45.1": + version "5.48.1" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.1.tgz" + integrity sha512-4yg+FJR/V1M9Xoq56SF9Iygqm+r5LMXvheo6DQ7/yUWynQ4YfCRnsKuRgqH4EQ5Ya76rVwlEpw4Xu+TgWQUcdA== + dependencies: + "@typescript-eslint/scope-manager" "5.48.1" + "@typescript-eslint/types" "5.48.1" + "@typescript-eslint/typescript-estree" "5.48.1" + debug "^4.3.4" -"@noble/secp256k1@1.6.3", "@noble/secp256k1@~1.6.0": - version "1.6.3" - resolved "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.6.3.tgz" - integrity sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ== +"@typescript-eslint/scope-manager@4.33.0": + version "4.33.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz" + integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== + dependencies: + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== +"@typescript-eslint/scope-manager@5.48.1": + version "5.48.1" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.1.tgz" + integrity sha512-S035ueRrbxRMKvSTv9vJKIWgr86BD8s3RqoRZmsSh/s8HhIs90g6UlK8ZabUSjUZQkhVxt7nmZ63VJ9dcZhtDQ== dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" + "@typescript-eslint/types" "5.48.1" + "@typescript-eslint/visitor-keys" "5.48.1" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - 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@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== +"@typescript-eslint/type-utils@5.48.1": + version "5.48.1" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.1.tgz" + integrity sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ== dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" + "@typescript-eslint/typescript-estree" "5.48.1" + "@typescript-eslint/utils" "5.48.1" + debug "^4.3.4" + tsutils "^3.21.0" -"@nomicfoundation/ethereumjs-block@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-4.0.0.tgz" - integrity sha512-bk8uP8VuexLgyIZAHExH1QEovqx0Lzhc9Ntm63nCRKLHXIZkobaFaeCVwTESV7YkPKUk7NiK11s8ryed4CS9yA== - dependencies: - "@nomicfoundation/ethereumjs-common" "^3.0.0" - "@nomicfoundation/ethereumjs-rlp" "^4.0.0" - "@nomicfoundation/ethereumjs-trie" "^5.0.0" - "@nomicfoundation/ethereumjs-tx" "^4.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" - ethereum-cryptography "0.1.3" +"@typescript-eslint/types@4.33.0": + version "4.33.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz" + integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== -"@nomicfoundation/ethereumjs-blockchain@^6.0.0": - version "6.0.0" - resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-6.0.0.tgz" - integrity sha512-pLFEoea6MWd81QQYSReLlLfH7N9v7lH66JC/NMPN848ySPPQA5renWnE7wPByfQFzNrPBuDDRFFULMDmj1C0xw== - dependencies: - "@nomicfoundation/ethereumjs-block" "^4.0.0" - "@nomicfoundation/ethereumjs-common" "^3.0.0" - "@nomicfoundation/ethereumjs-ethash" "^2.0.0" - "@nomicfoundation/ethereumjs-rlp" "^4.0.0" - "@nomicfoundation/ethereumjs-trie" "^5.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" - abstract-level "^1.0.3" - debug "^4.3.3" - ethereum-cryptography "0.1.3" - level "^8.0.0" - lru-cache "^5.1.1" - memory-level "^1.0.0" +"@typescript-eslint/types@5.48.1": + version "5.48.1" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.1.tgz" + integrity sha512-xHyDLU6MSuEEdIlzrrAerCGS3T7AA/L8Hggd0RCYBi0w3JMvGYxlLlXHeg50JI9Tfg5MrtsfuNxbS/3zF1/ATg== -"@nomicfoundation/ethereumjs-common@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-3.0.0.tgz" - integrity sha512-WS7qSshQfxoZOpHG/XqlHEGRG1zmyjYrvmATvc4c62+gZXgre1ymYP8ZNgx/3FyZY0TWe9OjFlKOfLqmgOeYwA== +"@typescript-eslint/typescript-estree@4.33.0": + version "4.33.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz" + integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== dependencies: - "@nomicfoundation/ethereumjs-util" "^8.0.0" - crc-32 "^1.2.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" + debug "^4.3.1" + globby "^11.0.3" + is-glob "^4.0.1" + semver "^7.3.5" + tsutils "^3.21.0" -"@nomicfoundation/ethereumjs-ethash@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-2.0.0.tgz" - integrity sha512-WpDvnRncfDUuXdsAXlI4lXbqUDOA+adYRQaEezIkxqDkc+LDyYDbd/xairmY98GnQzo1zIqsIL6GB5MoMSJDew== +"@typescript-eslint/typescript-estree@5.48.1": + version "5.48.1" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.1.tgz" + integrity sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA== dependencies: - "@nomicfoundation/ethereumjs-block" "^4.0.0" - "@nomicfoundation/ethereumjs-rlp" "^4.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" - abstract-level "^1.0.3" - bigint-crypto-utils "^3.0.23" - ethereum-cryptography "0.1.3" + "@typescript-eslint/types" "5.48.1" + "@typescript-eslint/visitor-keys" "5.48.1" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" -"@nomicfoundation/ethereumjs-evm@^1.0.0", "@nomicfoundation/ethereumjs-evm@^1.0.0-rc.3": - version "1.0.0" - resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-1.0.0.tgz" - integrity sha512-hVS6qRo3V1PLKCO210UfcEQHvlG7GqR8iFzp0yyjTg2TmJQizcChKgWo8KFsdMw6AyoLgLhHGHw4HdlP8a4i+Q== +"@typescript-eslint/utils@5.48.1": + version "5.48.1" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.1.tgz" + integrity sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA== dependencies: - "@nomicfoundation/ethereumjs-common" "^3.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" - "@types/async-eventemitter" "^0.2.1" - async-eventemitter "^0.2.4" - debug "^4.3.3" - ethereum-cryptography "0.1.3" - mcl-wasm "^0.7.1" - rustbn.js "~0.2.0" - -"@nomicfoundation/ethereumjs-rlp@^4.0.0", "@nomicfoundation/ethereumjs-rlp@^4.0.0-beta.2": - version "4.0.0" - resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-4.0.0.tgz" - integrity sha512-GaSOGk5QbUk4eBP5qFbpXoZoZUj/NrW7MRa0tKY4Ew4c2HAS0GXArEMAamtFrkazp0BO4K5p2ZCG3b2FmbShmw== + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.48.1" + "@typescript-eslint/types" "5.48.1" + "@typescript-eslint/typescript-estree" "5.48.1" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + semver "^7.3.7" -"@nomicfoundation/ethereumjs-statemanager@^1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-1.0.0.tgz" - integrity sha512-jCtqFjcd2QejtuAMjQzbil/4NHf5aAWxUc+CvS0JclQpl+7M0bxMofR2AJdtz+P3u0ke2euhYREDiE7iSO31vQ== +"@typescript-eslint/visitor-keys@4.33.0": + version "4.33.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz" + integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== dependencies: - "@nomicfoundation/ethereumjs-common" "^3.0.0" - "@nomicfoundation/ethereumjs-rlp" "^4.0.0" - "@nomicfoundation/ethereumjs-trie" "^5.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" - debug "^4.3.3" - ethereum-cryptography "0.1.3" - functional-red-black-tree "^1.0.1" + "@typescript-eslint/types" "4.33.0" + eslint-visitor-keys "^2.0.0" -"@nomicfoundation/ethereumjs-trie@^5.0.0": - version "5.0.0" - resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-5.0.0.tgz" - integrity sha512-LIj5XdE+s+t6WSuq/ttegJzZ1vliwg6wlb+Y9f4RlBpuK35B9K02bO7xU+E6Rgg9RGptkWd6TVLdedTI4eNc2A== +"@typescript-eslint/visitor-keys@5.48.1": + version "5.48.1" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.1.tgz" + integrity sha512-Ns0XBwmfuX7ZknznfXozgnydyR8F6ev/KEGePP4i74uL3ArsKbEhJ7raeKr1JSa997DBDwol/4a0Y+At82c9dA== dependencies: - "@nomicfoundation/ethereumjs-rlp" "^4.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" - ethereum-cryptography "0.1.3" - readable-stream "^3.6.0" + "@typescript-eslint/types" "5.48.1" + eslint-visitor-keys "^3.3.0" -"@nomicfoundation/ethereumjs-tx@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-4.0.0.tgz" - integrity sha512-Gg3Lir2lNUck43Kp/3x6TfBNwcWC9Z1wYue9Nz3v4xjdcv6oDW9QSMJxqsKw9QEGoBBZ+gqwpW7+F05/rs/g1w== - dependencies: - "@nomicfoundation/ethereumjs-common" "^3.0.0" - "@nomicfoundation/ethereumjs-rlp" "^4.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" - ethereum-cryptography "0.1.3" +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== -"@nomicfoundation/ethereumjs-util@^8.0.0", "@nomicfoundation/ethereumjs-util@^8.0.0-rc.3": - version "8.0.0" - resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-8.0.0.tgz" - integrity sha512-2emi0NJ/HmTG+CGY58fa+DQuAoroFeSH9gKu9O6JnwTtlzJtgfTixuoOqLEgyyzZVvwfIpRueuePb8TonL1y+A== - dependencies: - "@nomicfoundation/ethereumjs-rlp" "^4.0.0-beta.2" - ethereum-cryptography "0.1.3" +"@uniswap/lib@^4.0.1-alpha": + version "4.0.1-alpha" + resolved "https://registry.npmjs.org/@uniswap/lib/-/lib-4.0.1-alpha.tgz" + integrity sha512-f6UIliwBbRsgVLxIaBANF6w09tYqc6Y/qXdsrbEmXHyFA7ILiKrIwRFXe1yOg8M3cksgVsO9N7yuL2DdCGQKBA== -"@nomicfoundation/ethereumjs-vm@^6.0.0", "@nomicfoundation/ethereumjs-vm@^6.0.0-rc.3": - version "6.0.0" - resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-6.0.0.tgz" - integrity sha512-JMPxvPQ3fzD063Sg3Tp+UdwUkVxMoo1uML6KSzFhMH3hoQi/LMuXBoEHAoW83/vyNS9BxEe6jm6LmT5xdeEJ6w== +"@uniswap/sdk-core@^3.0.1": + version "3.1.0" + resolved "https://registry.npmjs.org/@uniswap/sdk-core/-/sdk-core-3.1.0.tgz" + integrity sha512-YRrp6vYAbYmi3uDXQGkvj2eT8BMpNnUdCFb8GifDG0Ei+ohIpC4RNAB+5/ru3zR2Byhx8VahGrSKuvdd6BVMyA== dependencies: - "@nomicfoundation/ethereumjs-block" "^4.0.0" - "@nomicfoundation/ethereumjs-blockchain" "^6.0.0" - "@nomicfoundation/ethereumjs-common" "^3.0.0" - "@nomicfoundation/ethereumjs-evm" "^1.0.0" - "@nomicfoundation/ethereumjs-rlp" "^4.0.0" - "@nomicfoundation/ethereumjs-statemanager" "^1.0.0" - "@nomicfoundation/ethereumjs-trie" "^5.0.0" - "@nomicfoundation/ethereumjs-tx" "^4.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" - "@types/async-eventemitter" "^0.2.1" - async-eventemitter "^0.2.4" - debug "^4.3.3" - ethereum-cryptography "0.1.3" - functional-red-black-tree "^1.0.1" - mcl-wasm "^0.7.1" - rustbn.js "~0.2.0" + "@ethersproject/address" "^5.0.2" + big.js "^5.2.2" + decimal.js-light "^2.5.0" + jsbi "^3.1.4" + tiny-invariant "^1.1.0" + toformat "^2.0.0" -"@nomicfoundation/hardhat-chai-matchers@^1.0.3": - version "1.0.6" - resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-1.0.6.tgz" - integrity sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ== +"@uniswap/sdk@^3.0.3": + version "3.0.3" + resolved "https://registry.npmjs.org/@uniswap/sdk/-/sdk-3.0.3.tgz" + integrity sha512-t4s8bvzaCFSiqD2qfXIm3rWhbdnXp+QjD3/mRaeVDHK7zWevs6RGEb1ohMiNgOCTZANvBayb4j8p+XFdnMBadQ== dependencies: - "@ethersproject/abi" "^5.1.2" - "@types/chai-as-promised" "^7.1.3" - chai-as-promised "^7.1.1" - deep-eql "^4.0.1" - ordinal "^1.0.3" + "@uniswap/v2-core" "^1.0.0" + big.js "^5.2.2" + decimal.js-light "^2.5.0" + jsbi "^3.1.1" + tiny-invariant "^1.1.0" + tiny-warning "^1.0.3" + toformat "^2.0.0" -"@nomicfoundation/hardhat-network-helpers@^1.0.0", "@nomicfoundation/hardhat-network-helpers@^1.0.8": - version "1.0.8" - resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.8.tgz" - integrity sha512-MNqQbzUJZnCMIYvlniC3U+kcavz/PhhQSsY90tbEtUyMj/IQqsLwIRZa4ctjABh3Bz0KCh9OXUZ7Yk/d9hr45Q== +"@uniswap/swap-router-contracts@^1.2.1": + version "1.3.0" + resolved "https://registry.npmjs.org/@uniswap/swap-router-contracts/-/swap-router-contracts-1.3.0.tgz" + integrity sha512-iKvCuRkHXEe0EMjOf8HFUISTIhlxI57kKFllf3C3PUIE0HmwxrayyoflwAz5u/TRsFGYqJ9IjX2UgzLCsrNa5A== dependencies: - ethereumjs-util "^7.1.4" + "@openzeppelin/contracts" "3.4.2-solc-0.7" + "@uniswap/v2-core" "1.0.1" + "@uniswap/v3-core" "1.0.0" + "@uniswap/v3-periphery" "1.4.1" + dotenv "^14.2.0" + hardhat-watcher "^2.1.1" -"@nomicfoundation/hardhat-toolbox@^1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-1.0.2.tgz" - integrity sha512-8CEgWSKUK2aMit+76Sez8n7UB0Ze1lwT+LcWxj4EFP30lQWOwOws048t6MTPfThH0BlSWjC6hJRr0LncIkc1Sw== +"@uniswap/v2-core@1.0.1", "@uniswap/v2-core@^1.0.0": + version "1.0.1" + resolved "https://registry.npmjs.org/@uniswap/v2-core/-/v2-core-1.0.1.tgz" + integrity sha512-MtybtkUPSyysqLY2U210NBDeCHX+ltHt3oADGdjqoThZaFRDKwM6k1Nb3F0A3hk5hwuQvytFWhrWHOEq6nVJ8Q== -"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.0.tgz#83a7367342bd053a76d04bbcf4f373fef07cf760" - integrity sha512-vEF3yKuuzfMHsZecHQcnkUrqm8mnTWfJeEVFHpg+cO+le96xQA4lAJYdUan8pXZohQxv1fSReQsn4QGNuBNuCw== +"@uniswap/v3-core-optimism@^1.0.0-rc.0": + version "1.0.0-rc.0" + resolved "https://registry.npmjs.org/@uniswap/v3-core-optimism/-/v3-core-optimism-1.0.0-rc.0.tgz" + integrity sha512-mJ5TwiWabR02G8lceVc2+3lmFOqVI3p++wpQQcvVHv+pfGq38NSaHbirmGB8sbv7x29wUteiNL7soHoD6tGe7g== -"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.0.tgz#1225f7da647ae1ad25a87125664704ecc0af6ccc" - integrity sha512-dlHeIg0pTL4dB1l9JDwbi/JG6dHQaU1xpDK+ugYO8eJ1kxx9Dh2isEUtA4d02cQAl22cjOHTvifAk96A+ItEHA== - -"@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.0.tgz#dbc052dcdfd50ae50fd5ae1788b69b4e0fa40040" - integrity sha512-WFCZYMv86WowDA4GiJKnebMQRt3kCcFqHeIomW6NMyqiKqhK1kIZCxSLDYsxqlx396kKLPN1713Q1S8tu68GKg== - -"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.0.tgz#e6b2eea633995b557e74e881d2a43eab4760903d" - integrity sha512-DTw6MNQWWlCgc71Pq7CEhEqkb7fZnS7oly13pujs4cMH1sR0JzNk90Mp1zpSCsCs4oKan2ClhMlLKtNat/XRKQ== - -"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.0.tgz#af81107f5afa794f19988a368647727806e18dc4" - integrity sha512-wUpUnR/3GV5Da88MhrxXh/lhb9kxh9V3Jya2NpBEhKDIRCDmtXMSqPMXHZmOR9DfCwCvG6vLFPr/+YrPCnUN0w== - -"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.0": - version "0.1.0" - resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.0.tgz" - integrity sha512-lR0AxK1x/MeKQ/3Pt923kPvwigmGX3OxeU5qNtQ9pj9iucgk4PzhbS3ruUeSpYhUxG50jN4RkIGwUMoev5lguw== - -"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.0": - version "0.1.0" - resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.0.tgz" - integrity sha512-A1he/8gy/JeBD3FKvmI6WUJrGrI5uWJNr5Xb9WdV+DK0F8msuOqpEByLlnTdLkXMwW7nSl3awvLezOs9xBHJEg== - -"@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.0.tgz#9d4bca1cc9a1333fde985675083b0b7d165f6076" - integrity sha512-7x5SXZ9R9H4SluJZZP8XPN+ju7Mx+XeUMWZw7ZAqkdhP5mK19I4vz3x0zIWygmfE8RT7uQ5xMap0/9NPsO+ykw== - -"@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.0.tgz#0db5bfc6aa952bea4098d8d2c8947b4e5c4337ee" - integrity sha512-m7w3xf+hnE774YRXu+2mGV7RiF3QJtUoiYU61FascCkQhX3QMQavh7saH/vzb2jN5D24nT/jwvaHYX/MAM9zUw== - -"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.0.tgz#2e0f39a2924dcd77db6b419828595e984fabcb33" - integrity sha512-xCuybjY0sLJQnJhupiFAXaek2EqF0AP0eBjgzaalPXSNvCEN6ZYHvUzdA50ENDVeSYFXcUsYf3+FsD3XKaeptA== - -"@nomicfoundation/solidity-analyzer@^0.1.0": - version "0.1.0" - resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.0.tgz" - integrity sha512-xGWAiVCGOycvGiP/qrlf9f9eOn7fpNbyJygcB0P21a1MDuVPlKt0Srp7rvtBEutYQ48ouYnRXm33zlRnlTOPHg== - optionalDependencies: - "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.1.0" - "@nomicfoundation/solidity-analyzer-darwin-x64" "0.1.0" - "@nomicfoundation/solidity-analyzer-freebsd-x64" "0.1.0" - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu" "0.1.0" - "@nomicfoundation/solidity-analyzer-linux-arm64-musl" "0.1.0" - "@nomicfoundation/solidity-analyzer-linux-x64-gnu" "0.1.0" - "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.0" - "@nomicfoundation/solidity-analyzer-win32-arm64-msvc" "0.1.0" - "@nomicfoundation/solidity-analyzer-win32-ia32-msvc" "0.1.0" - "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.0" - -"@nomiclabs/hardhat-ethers@^2.0.2": - version "2.2.1" - resolved "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.1.tgz" - integrity sha512-RHWYwnxryWR8hzRmU4Jm/q4gzvXpetUOJ4OPlwH2YARcDB+j79+yAYCwO0lN1SUOb4++oOTJEe6AWLEc42LIvg== +"@uniswap/v3-core@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@uniswap/v3-core/-/v3-core-1.0.0.tgz" + integrity sha512-kSC4djMGKMHj7sLMYVnn61k9nu+lHjMIxgg9CDQT+s2QYLoA56GbSK9Oxr+qJXzzygbkrmuY6cwgP6cW2JXPFA== -"@nomiclabs/hardhat-etherscan@^3.0.0": - version "3.1.7" - resolved "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.7.tgz" - integrity sha512-tZ3TvSgpvsQ6B6OGmo1/Au6u8BrAkvs1mIC/eURA3xgIfznUZBhmpne8hv7BXUzw9xNL3fXdpOYgOQlVMTcoHQ== +"@uniswap/v3-periphery@1.4.1": + version "1.4.1" + resolved "https://registry.npmjs.org/@uniswap/v3-periphery/-/v3-periphery-1.4.1.tgz" + integrity sha512-Ab0ZCKOQrQMKIcpBTezTsEhWfQjItd0TtkCG8mPhoQu+wC67nPaf4hYUhM6wGHeFUmDiYY5MpEQuokB0ENvoTg== dependencies: - "@ethersproject/abi" "^5.1.2" - "@ethersproject/address" "^5.0.2" - cbor "^8.1.0" - chalk "^2.4.2" - debug "^4.1.1" - fs-extra "^7.0.1" - lodash "^4.17.11" - semver "^6.3.0" - table "^6.8.0" - undici "^5.14.0" + "@openzeppelin/contracts" "3.4.2-solc-0.7" + "@uniswap/lib" "^4.0.1-alpha" + "@uniswap/v2-core" "1.0.1" + "@uniswap/v3-core" "1.0.0" + base64-sol "1.0.1" + hardhat-watcher "^2.1.1" -"@nomiclabs/hardhat-etherscan@^3.1.0": - version "3.1.4" - resolved "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.4.tgz" - integrity sha512-fw8JCfukf6MdIGoySRmSftlM2wBgoaSbWQZgiYfD/KTeaSFEWCdMpuPZcLSBXtwtnQyyWDs07Lo7fL8HSqtD2Q== +"@uniswap/v3-periphery@^1.0.1", "@uniswap/v3-periphery@^1.1.1": + version "1.4.3" + resolved "https://registry.npmjs.org/@uniswap/v3-periphery/-/v3-periphery-1.4.3.tgz" + integrity sha512-80c+wtVzl5JJT8UQskxVYYG3oZb4pkhY0zDe0ab/RX4+8f9+W5d8wI4BT0wLB0wFQTSnbW+QdBSpkHA/vRyGBA== dependencies: - "@ethersproject/abi" "^5.1.2" - "@ethersproject/address" "^5.0.2" - cbor "^8.1.0" - chalk "^2.4.2" - debug "^4.1.1" - fs-extra "^7.0.1" - lodash "^4.17.11" - semver "^6.3.0" - table "^6.8.0" - undici "^5.4.0" + "@openzeppelin/contracts" "3.4.2-solc-0.7" + "@uniswap/lib" "^4.0.1-alpha" + "@uniswap/v2-core" "1.0.1" + "@uniswap/v3-core" "1.0.0" + base64-sol "1.0.1" -"@nomiclabs/hardhat-waffle@^2.0.1", "@nomiclabs/hardhat-waffle@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.3.tgz" - integrity sha512-049PHSnI1CZq6+XTbrMbMv5NaL7cednTfPenx02k3cEh8wBMLa6ys++dBETJa6JjfwgA9nBhhHQ173LJv6k2Pg== +"@uniswap/v3-sdk@^3.6.2": + version "3.9.0" + resolved "https://registry.npmjs.org/@uniswap/v3-sdk/-/v3-sdk-3.9.0.tgz" + integrity sha512-LuoF3UcY1DxSAQKJ3E4/1Eq4HaNp+x+7q9mvbpiu+/PBj+O1DjLforAMrKxu+RsA0aarmZtz7yBnAPy+akgfgQ== dependencies: - "@types/sinon-chai" "^3.2.3" - "@types/web3" "1.0.19" - -"@npmcli/ci-detect@^1.0.0": - version "1.4.0" - resolved "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz" - integrity sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q== + "@ethersproject/abi" "^5.0.12" + "@ethersproject/solidity" "^5.0.9" + "@uniswap/sdk-core" "^3.0.1" + "@uniswap/swap-router-contracts" "^1.2.1" + "@uniswap/v3-periphery" "^1.1.1" + "@uniswap/v3-staker" "1.0.0" + tiny-invariant "^1.1.0" + tiny-warning "^1.0.3" -"@npmcli/fs@^1.0.0": - version "1.1.1" - resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz" - integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== +"@uniswap/v3-staker@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@uniswap/v3-staker/-/v3-staker-1.0.0.tgz" + integrity sha512-JV0Qc46Px5alvg6YWd+UIaGH9lDuYG/Js7ngxPit1SPaIP30AlVer1UYB7BRYeUVVxE+byUyIeN5jeQ7LLDjIw== dependencies: - "@gar/promisify" "^1.0.1" - semver "^7.3.5" + "@openzeppelin/contracts" "3.4.1-solc-0.7-2" + "@uniswap/v3-core" "1.0.0" + "@uniswap/v3-periphery" "^1.0.1" -"@npmcli/fs@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" - integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== +"@vue/compiler-core@3.2.45": + version "3.2.45" + resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz" + integrity sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A== dependencies: - "@gar/promisify" "^1.1.3" - semver "^7.3.5" + "@babel/parser" "^7.16.4" + "@vue/shared" "3.2.45" + estree-walker "^2.0.2" + source-map "^0.6.1" -"@npmcli/git@^2.1.0": - version "2.1.0" - resolved "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz" - integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== +"@vue/compiler-dom@3.2.45": + version "3.2.45" + resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz" + integrity sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw== dependencies: - "@npmcli/promise-spawn" "^1.3.2" - lru-cache "^6.0.0" - mkdirp "^1.0.4" - npm-pick-manifest "^6.1.1" - promise-inflight "^1.0.1" - promise-retry "^2.0.1" - semver "^7.3.5" - which "^2.0.2" + "@vue/compiler-core" "3.2.45" + "@vue/shared" "3.2.45" -"@npmcli/installed-package-contents@^1.0.6": - version "1.0.7" - resolved "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz" - integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== +"@vue/compiler-sfc@^3.0.5": + version "3.2.45" + resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz" + integrity sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q== dependencies: - npm-bundled "^1.1.1" - npm-normalize-package-bin "^1.0.1" + "@babel/parser" "^7.16.4" + "@vue/compiler-core" "3.2.45" + "@vue/compiler-dom" "3.2.45" + "@vue/compiler-ssr" "3.2.45" + "@vue/reactivity-transform" "3.2.45" + "@vue/shared" "3.2.45" + estree-walker "^2.0.2" + magic-string "^0.25.7" + postcss "^8.1.10" + source-map "^0.6.1" -"@npmcli/move-file@^1.0.1": - version "1.1.2" - resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz" - integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== +"@vue/compiler-ssr@3.2.45": + version "3.2.45" + resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz" + integrity sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ== dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" + "@vue/compiler-dom" "3.2.45" + "@vue/shared" "3.2.45" -"@npmcli/move-file@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" - integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== +"@vue/reactivity-transform@3.2.45": + version "3.2.45" + resolved "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz" + integrity sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ== dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" - -"@npmcli/node-gyp@^1.0.2": - version "1.0.3" - resolved "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz" - integrity sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA== + "@babel/parser" "^7.16.4" + "@vue/compiler-core" "3.2.45" + "@vue/shared" "3.2.45" + estree-walker "^2.0.2" + magic-string "^0.25.7" -"@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2": - version "1.3.2" - resolved "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz" - integrity sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg== - dependencies: - infer-owner "^1.0.4" +"@vue/shared@3.2.45": + version "3.2.45" + resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz" + integrity sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg== -"@npmcli/run-script@^1.8.2": - version "1.8.6" - resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz" - integrity sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g== +"@webassemblyjs/ast@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz" + integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== dependencies: - "@npmcli/node-gyp" "^1.0.2" - "@npmcli/promise-spawn" "^1.3.2" - node-gyp "^7.1.0" - read-package-json-fast "^2.0.1" + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" -"@octokit/auth-token@^2.4.4": - version "2.5.0" - resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz" - integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== - dependencies: - "@octokit/types" "^6.0.3" +"@webassemblyjs/floating-point-hex-parser@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz" + integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== -"@octokit/core@^3.5.1": - version "3.6.0" - resolved "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz" - integrity sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q== - dependencies: - "@octokit/auth-token" "^2.4.4" - "@octokit/graphql" "^4.5.8" - "@octokit/request" "^5.6.3" - "@octokit/request-error" "^2.0.5" - "@octokit/types" "^6.0.3" - before-after-hook "^2.2.0" - universal-user-agent "^6.0.0" +"@webassemblyjs/helper-api-error@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz" + integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== -"@octokit/endpoint@^6.0.1": - version "6.0.12" - resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz" - integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== - dependencies: - "@octokit/types" "^6.0.3" - is-plain-object "^5.0.0" - universal-user-agent "^6.0.0" +"@webassemblyjs/helper-buffer@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz" + integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== -"@octokit/graphql@^4.5.8": - version "4.8.0" - resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz" - integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== +"@webassemblyjs/helper-numbers@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz" + integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== dependencies: - "@octokit/request" "^5.6.0" - "@octokit/types" "^6.0.3" - universal-user-agent "^6.0.0" - -"@octokit/openapi-types@^12.11.0": - version "12.11.0" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz" - integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" -"@octokit/plugin-enterprise-rest@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz" - integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz" + integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== -"@octokit/plugin-paginate-rest@^2.16.8": - version "2.21.3" - resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz" - integrity sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw== +"@webassemblyjs/helper-wasm-section@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz" + integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== dependencies: - "@octokit/types" "^6.40.0" - -"@octokit/plugin-request-log@^1.0.4": - version "1.0.4" - resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz" - integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" -"@octokit/plugin-rest-endpoint-methods@^5.12.0": - version "5.16.2" - resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz" - integrity sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw== +"@webassemblyjs/ieee754@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz" + integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== dependencies: - "@octokit/types" "^6.39.0" - deprecation "^2.3.1" + "@xtuc/ieee754" "^1.2.0" -"@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": - version "2.1.0" - resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz" - integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== +"@webassemblyjs/leb128@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz" + integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== dependencies: - "@octokit/types" "^6.0.3" - deprecation "^2.0.0" - once "^1.4.0" + "@xtuc/long" "4.2.2" -"@octokit/request@^5.6.0", "@octokit/request@^5.6.3": - version "5.6.3" - resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz" - integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== +"@webassemblyjs/utf8@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + +"@webassemblyjs/wasm-edit@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz" + integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== dependencies: - "@octokit/endpoint" "^6.0.1" - "@octokit/request-error" "^2.1.0" - "@octokit/types" "^6.16.1" - is-plain-object "^5.0.0" - node-fetch "^2.6.7" - universal-user-agent "^6.0.0" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" -"@octokit/rest@^18.1.0": - version "18.12.0" - resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz" - integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== +"@webassemblyjs/wasm-gen@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz" + integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== dependencies: - "@octokit/core" "^3.5.1" - "@octokit/plugin-paginate-rest" "^2.16.8" - "@octokit/plugin-request-log" "^1.0.4" - "@octokit/plugin-rest-endpoint-methods" "^5.12.0" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" -"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.39.0", "@octokit/types@^6.40.0": - version "6.41.0" - resolved "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz" - integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== +"@webassemblyjs/wasm-opt@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz" + integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== dependencies: - "@octokit/openapi-types" "^12.11.0" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" -"@openzeppelin/contract-loader@^0.6.2": - version "0.6.3" - resolved "https://registry.npmjs.org/@openzeppelin/contract-loader/-/contract-loader-0.6.3.tgz" - integrity sha512-cOFIjBjwbGgZhDZsitNgJl0Ye1rd5yu/Yx5LMgeq3u0ZYzldm4uObzHDFq4gjDdoypvyORjjJa3BlFA7eAnVIg== +"@webassemblyjs/wasm-parser@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz" + integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== dependencies: - find-up "^4.1.0" - fs-extra "^8.1.0" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" -"@openzeppelin/contracts-upgradeable@4.3.2": - version "4.3.2" - resolved "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.3.2.tgz" - integrity sha512-i/pOaOtcqDk4UqsrOv735uYyTbn6dvfiuVu5hstsgV6c4ZKUtu88/31zT2BzkCg+3JfcwOfgg2TtRKVKKZIGkQ== +"@webassemblyjs/wast-printer@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz" + integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@xtuc/long" "4.2.2" -"@openzeppelin/contracts@3.4.1-solc-0.7-2": - version "3.4.1-solc-0.7-2" - resolved "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.4.1-solc-0.7-2.tgz" - integrity sha512-tAG9LWg8+M2CMu7hIsqHPaTyG4uDzjr6mhvH96LvOpLZZj6tgzTluBt+LsCf1/QaYrlis6pITvpIaIhE+iZB+Q== +"@webpack-cli/configtest@^2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.1.tgz" + integrity sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A== -"@openzeppelin/contracts@3.4.2-solc-0.7": - version "3.4.2-solc-0.7" - resolved "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.4.2-solc-0.7.tgz" - integrity sha512-W6QmqgkADuFcTLzHL8vVoNBtkwjvQRpYIAom7KiUNoLKghyx3FgH0GBjt8NRvigV1ZmMOBllvE1By1C+bi8WpA== +"@webpack-cli/info@^2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.1.tgz" + integrity sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA== -"@openzeppelin/contracts@4.3.2": - version "4.3.2" - resolved "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.3.2.tgz" - integrity sha512-AybF1cesONZStg5kWf6ao9OlqTZuPqddvprc0ky7lrUVOjXeKpmQ2Y9FK+6ygxasb+4aic4O5pneFBfwVsRRRg== +"@webpack-cli/serve@^2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.1.tgz" + integrity sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw== -"@openzeppelin/contracts@^4.4.0": - version "4.8.0" - resolved "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.8.0.tgz" - integrity sha512-AGuwhRRL+NaKx73WKRNzeCxOCOCxpaqF+kp8TJ89QzAipSwZy/NoflkWaL9bywXFRhIzXt8j38sfF7KBKCPWLw== +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== -"@openzeppelin/contracts@^4.7.3": - version "4.8.1" - resolved "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.8.1.tgz" - integrity sha512-xQ6eUZl+RDyb/FiZe1h+U7qr/f4p/SrTSQcTPH2bjur3C5DbuW/zFgCU/b1P/xcIaEqJep+9ju4xDRi3rmChdQ== +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -"@openzeppelin/contracts@^4.8.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== +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== -"@openzeppelin/test-helpers@^0.5.15": - version "0.5.16" - resolved "https://registry.npmjs.org/@openzeppelin/test-helpers/-/test-helpers-0.5.16.tgz" - integrity sha512-T1EvspSfH1qQO/sgGlskLfYVBbqzJR23SZzYl/6B2JnT4EhThcI85UpvDk0BkLWKaDScQTabGHt4GzHW+3SfZg== +JSONStream@^1.0.4: + version "1.3.5" + resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== dependencies: - "@openzeppelin/contract-loader" "^0.6.2" - "@truffle/contract" "^4.0.35" - ansi-colors "^3.2.3" - chai "^4.2.0" - chai-bn "^0.2.1" - ethjs-abi "^0.2.1" - lodash.flatten "^4.4.0" - semver "^5.6.0" - web3 "^1.2.5" - web3-utils "^1.2.5" - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@pmmmwh/react-refresh-webpack-plugin@^0.5.3", "@pmmmwh/react-refresh-webpack-plugin@^0.5.5": - version "0.5.10" - resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz#2eba163b8e7dbabb4ce3609ab5e32ab63dda3ef8" - integrity sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA== - dependencies: - ansi-html-community "^0.0.8" - common-path-prefix "^3.0.0" - core-js-pure "^3.23.3" - error-stack-parser "^2.0.6" - find-up "^5.0.0" - html-entities "^2.1.0" - loader-utils "^2.0.4" - schema-utils "^3.0.0" - source-map "^0.7.3" + jsonparse "^1.2.0" + through ">=2.2.7 <3" -"@popperjs/core@^2.11.3", "@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== +abbrev@1, abbrev@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -"@remix-run/router@1.7.1": - version "1.7.1" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.7.1.tgz#fea7ac35ae4014637c130011f59428f618730498" - integrity sha512-bgVQM4ZJ2u2CM8k1ey70o1ePFXsEzYVZoWghh6WjM8p59jQ7HxzbHW4SbnWFG7V9ig9chLawQxDTZ3xzOF8MkQ== +abbrev@1.0.x: + version "1.0.9" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" + integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q== -"@resolver-engine/core@^0.3.3": - version "0.3.3" - resolved "https://registry.npmjs.org/@resolver-engine/core/-/core-0.3.3.tgz" - integrity sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ== +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== dependencies: - debug "^3.1.0" - is-url "^1.2.4" - request "^2.85.0" + event-target-shim "^5.0.0" -"@resolver-engine/fs@^0.3.3": - version "0.3.3" - resolved "https://registry.npmjs.org/@resolver-engine/fs/-/fs-0.3.3.tgz" - integrity sha512-wQ9RhPUcny02Wm0IuJwYMyAG8fXVeKdmhm8xizNByD4ryZlx6PP6kRen+t/haF43cMfmaV7T3Cx6ChOdHEhFUQ== - dependencies: - "@resolver-engine/core" "^0.3.3" - debug "^3.1.0" +abortcontroller-polyfill@^1.7.3: + version "1.7.5" + resolved "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz" + integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== -"@resolver-engine/imports-fs@^0.3.3": - version "0.3.3" - resolved "https://registry.npmjs.org/@resolver-engine/imports-fs/-/imports-fs-0.3.3.tgz" - integrity sha512-7Pjg/ZAZtxpeyCFlZR5zqYkz+Wdo84ugB5LApwriT8XFeQoLwGUj4tZFFvvCuxaNCcqZzCYbonJgmGObYBzyCA== +abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz" + integrity sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA== dependencies: - "@resolver-engine/fs" "^0.3.3" - "@resolver-engine/imports" "^0.3.3" - debug "^3.1.0" + buffer "^6.0.3" + catering "^2.1.0" + is-buffer "^2.0.5" + level-supports "^4.0.0" + level-transcoder "^1.0.1" + module-error "^1.0.1" + queue-microtask "^1.2.3" -"@resolver-engine/imports@^0.3.3": - version "0.3.3" - resolved "https://registry.npmjs.org/@resolver-engine/imports/-/imports-0.3.3.tgz" - integrity sha512-anHpS4wN4sRMwsAbMXhMfOD/y4a4Oo0Cw/5+rue7hSwGWsDOQaAU1ClK1OxjUC35/peazxEl8JaSRRS+Xb8t3Q== +abstract-leveldown@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-3.0.0.tgz" + integrity sha512-KUWx9UWGQD12zsmLNj64/pndaz4iJh/Pj7nopgkfDG6RlCcbMZvT6+9l7dchK4idog2Is8VdC/PvNbFuFmalIQ== dependencies: - "@resolver-engine/core" "^0.3.3" - debug "^3.1.0" - hosted-git-info "^2.6.0" - path-browserify "^1.0.0" - url "^0.11.0" + xtend "~4.0.0" -"@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== +abstract-leveldown@^2.4.1, abstract-leveldown@~2.7.1: + version "2.7.2" + resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz" + integrity sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w== dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@rollup/pluginutils" "^3.1.0" + xtend "~4.0.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== +abstract-leveldown@^5.0.0, abstract-leveldown@~5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz" + integrity sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A== 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" + xtend "~4.0.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== +abstract-leveldown@^6.2.1: + version "6.3.0" + resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz" + integrity sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ== dependencies: - "@rollup/pluginutils" "^3.1.0" - magic-string "^0.25.7" + buffer "^5.5.0" + immediate "^3.2.3" + level-concat-iterator "~2.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" -"@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== +abstract-leveldown@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz#08d19d4e26fb5be426f7a57004851b39e1795a2e" + integrity sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ== dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - -"@rushstack/eslint-patch@^1.1.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz" - integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== - -"@scure/base@~1.1.0": - version "1.1.1" - resolved "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz" - integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== + buffer "^6.0.3" + catering "^2.0.0" + is-buffer "^2.0.5" + level-concat-iterator "^3.0.0" + level-supports "^2.0.1" + queue-microtask "^1.2.3" -"@scure/bip32@1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.0.tgz" - integrity sha512-ftTW3kKX54YXLCxH6BB7oEEoJfoE2pIgw7MINKAs5PsS6nqKPuKk1haTF/EuHmYqG330t5GSrdmtRuHaY1a62Q== +abstract-leveldown@~2.6.0: + version "2.6.3" + resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz" + integrity sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA== dependencies: - "@noble/hashes" "~1.1.1" - "@noble/secp256k1" "~1.6.0" - "@scure/base" "~1.1.0" + xtend "~4.0.0" -"@scure/bip32@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.1.tgz#7248aea723667f98160f593d621c47e208ccbb10" - integrity sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A== +abstract-leveldown@~6.2.1, abstract-leveldown@~6.2.3: + version "6.2.3" + resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz" + integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ== dependencies: - "@noble/curves" "~1.1.0" - "@noble/hashes" "~1.3.1" - "@scure/base" "~1.1.0" + buffer "^5.5.0" + immediate "^3.2.3" + level-concat-iterator "~2.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" -"@scure/bip39@1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.0.tgz" - integrity sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w== +accepts@~1.3.8: + 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: - "@noble/hashes" "~1.1.1" - "@scure/base" "~1.1.0" + mime-types "~2.1.34" + negotiator "0.6.3" -"@scure/bip39@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" - integrity sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg== - dependencies: - "@noble/hashes" "~1.3.0" - "@scure/base" "~1.1.0" +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== -"@sentry-internal/tracing@7.51.2": - version "7.51.2" - resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.51.2.tgz" - integrity sha512-OBNZn7C4CyocmlSMUPfkY9ORgab346vTHu5kX35PgW5XR51VD2nO5iJCFbyFcsmmRWyCJcZzwMNARouc2V4V8A== - dependencies: - "@sentry/core" "7.51.2" - "@sentry/types" "7.51.2" - "@sentry/utils" "7.51.2" - tslib "^1.9.3" +acorn-jsx@^5.0.0, acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -"@sentry-internal/tracing@7.54.0": - version "7.54.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.54.0.tgz#eeb10ee72426d08669a7706faa4264f1ec02c71d" - integrity sha512-JsyhZ0wWZ+VqbHJg+azqRGdYJDkcI5R9+pnkO6SzbzxrRewqMAIwzkpPee3oI7vG99uhMEkOkMjHu0nQGwkOQw== - dependencies: - "@sentry/core" "7.54.0" - "@sentry/types" "7.54.0" - "@sentry/utils" "7.54.0" - tslib "^1.9.3" +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -"@sentry/browser@7.54.0": - version "7.54.0" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.54.0.tgz#7fe331c776d02b5c902733aa41dcbfac7bef1ae6" - integrity sha512-EvLAw03N9WE2m1CMl2/1YMeIs1icw9IEOVJhWmf3uJEysNJOFWXu6ZzdtHEz1E6DiJYhc1HzDya0ExZeJxNARA== - dependencies: - "@sentry-internal/tracing" "7.54.0" - "@sentry/core" "7.54.0" - "@sentry/replay" "7.54.0" - "@sentry/types" "7.54.0" - "@sentry/utils" "7.54.0" - tslib "^1.9.3" +acorn@^6.0.7: + version "6.4.2" + resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -"@sentry/core@5.30.0": - version "5.30.0" - resolved "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz" - integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== +acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.4.1, acorn@^8.8.0: + version "8.8.1" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz" + integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== + +acorn@^8.5.0, acorn@^8.7.1: + version "8.8.2" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + +add-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz" + integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== + +address@^1.0.1: + version "1.2.2" + resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + +adm-zip@^0.4.16: + version "0.4.16" + resolved "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz" + integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +aes-js@^3.1.1, aes-js@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz" + integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== + +agent-base@6, agent-base@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: - "@sentry/hub" "5.30.0" - "@sentry/minimal" "5.30.0" - "@sentry/types" "5.30.0" - "@sentry/utils" "5.30.0" - tslib "^1.9.3" + debug "4" -"@sentry/core@7.30.0": - version "7.30.0" - resolved "https://registry.npmjs.org/@sentry/core/-/core-7.30.0.tgz" - integrity sha512-NeLigkBlpcK63ymM63GoIHurml6V3BUe1Vi+trwm4/qqOTzT7PQhvdJCX+o3+atzRBH+zdb6kd4VWx44Oye3KA== +agentkeepalive@^4.1.3: + version "4.2.1" + resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz" + integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== dependencies: - "@sentry/types" "7.30.0" - "@sentry/utils" "7.30.0" - tslib "^1.9.3" + debug "^4.1.0" + depd "^1.1.2" + humanize-ms "^1.2.1" -"@sentry/core@7.51.2": - version "7.51.2" - resolved "https://registry.npmjs.org/@sentry/core/-/core-7.51.2.tgz" - integrity sha512-p8ZiSBxpKe+rkXDMEcgmdoyIHM/1bhpINLZUFPiFH8vzomEr7sgnwRhyrU8y/ADnkPeNg/2YF3QpDpk0OgZJUA== +agentkeepalive@^4.2.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" + integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg== dependencies: - "@sentry/types" "7.51.2" - "@sentry/utils" "7.51.2" - tslib "^1.9.3" + debug "^4.1.0" + depd "^2.0.0" + humanize-ms "^1.2.1" -"@sentry/core@7.54.0": - version "7.54.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.54.0.tgz#8c4cb8800f8df708b3f3f6483026bb9a02820014" - integrity sha512-MAn0E2EwgNn1pFQn4qxhU+1kz6edullWg6VE5wCmtpXWOVw6sILBUsQpeIG5djBKMcneJCdOlz5jeqcKPrLvZQ== +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: - "@sentry/types" "7.54.0" - "@sentry/utils" "7.54.0" - tslib "^1.9.3" + clean-stack "^2.0.0" + indent-string "^4.0.0" -"@sentry/hub@5.30.0": - version "5.30.0" - resolved "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz" - integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== - dependencies: - "@sentry/types" "5.30.0" - "@sentry/utils" "5.30.0" - tslib "^1.9.3" +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -"@sentry/minimal@5.30.0": - version "5.30.0" - resolved "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz" - integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.6.1, ajv@^6.9.1: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: - "@sentry/hub" "5.30.0" - "@sentry/types" "5.30.0" - tslib "^1.9.3" + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" -"@sentry/node@^5.18.1": - version "5.30.0" - resolved "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz" - integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== +ajv@^8.0.1: + version "8.12.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== dependencies: - "@sentry/core" "5.30.0" - "@sentry/hub" "5.30.0" - "@sentry/tracing" "5.30.0" - "@sentry/types" "5.30.0" - "@sentry/utils" "5.30.0" - cookie "^0.4.1" - https-proxy-agent "^5.0.0" - lru_map "^0.3.3" - tslib "^1.9.3" + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" -"@sentry/node@^6.2.5||^7.1.1", "@sentry/node@^7.30.0": - version "7.30.0" - resolved "https://registry.npmjs.org/@sentry/node/-/node-7.30.0.tgz" - integrity sha512-YYasu6C3I0HBP4N1oc/ed2nunxhGJgtAWaKwq3lo8uk3uF6cB1A8+2e0CpjzU5ejhbaFPUBxHyj4th39Bvku/w== - dependencies: - "@sentry/core" "7.30.0" - "@sentry/types" "7.30.0" - "@sentry/utils" "7.30.0" - cookie "^0.4.1" - https-proxy-agent "^5.0.0" - lru_map "^0.3.3" - tslib "^1.9.3" +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" + integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== -"@sentry/react@^7.51.0": - version "7.54.0" - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.54.0.tgz#0d9e1b902fd9ded713ac46a623f6a490e4aa2c8a" - integrity sha512-qUbwmRRpTh05m2rbC8A2zAFQYsoHhwIpxT5UXxh0P64ZlA3cSg1/DmTTgwnd1l+7gzKrc31UikXQ4y0YDbMNKg== +anchor-markdown-header@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.6.0.tgz" + integrity sha512-v7HJMtE1X7wTpNFseRhxsY/pivP4uAJbidVhPT+yhz4i/vV1+qx371IXuV9V7bN6KjFtheLJxqaSm0Y/8neJTA== dependencies: - "@sentry/browser" "7.54.0" - "@sentry/types" "7.54.0" - "@sentry/utils" "7.54.0" - hoist-non-react-statics "^3.3.2" - tslib "^1.9.3" + emoji-regex "~10.1.0" -"@sentry/replay@7.54.0": - version "7.54.0" - resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.54.0.tgz#f0f44f9413ceefd1809bf1665e82315927ae08db" - integrity sha512-C0F0568ybphzGmKGe23duB6n5wJcgM7WLYhoeqW3o2bHeqpj1dGPSka/K3s9KzGaAgzn1zeOUYXJsOs+T/XdsA== - dependencies: - "@sentry/core" "7.54.0" - "@sentry/types" "7.54.0" - "@sentry/utils" "7.54.0" +ansi-colors@3.2.3: + version "3.2.3" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz" + integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== -"@sentry/tracing@5.30.0": - version "5.30.0" - resolved "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz" - integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== - dependencies: - "@sentry/hub" "5.30.0" - "@sentry/minimal" "5.30.0" - "@sentry/types" "5.30.0" - "@sentry/utils" "5.30.0" - tslib "^1.9.3" +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -"@sentry/tracing@^7.30.0": - version "7.30.0" - resolved "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.30.0.tgz" - integrity sha512-bjGeDeKhpGAmLcWcrXFT/xOfHVwp/j0L1aRHzYHnqgTjVzD0NXcooPu/Nz8vF0paxz+hPD5bJwb8kz/ggJzGWQ== - dependencies: - "@sentry/core" "7.30.0" - "@sentry/types" "7.30.0" - "@sentry/utils" "7.30.0" - tslib "^1.9.3" +ansi-colors@^3.2.3: + version "3.2.4" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-colors@^4.1.1, ansi-colors@^4.1.3: + 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== -"@sentry/tracing@^7.51.0": - version "7.51.2" - resolved "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.51.2.tgz" - integrity sha512-qYl8TtwdEAtLBFSSTtHX6OpSGI73sgoPZhc3ZtF7+cLe29FRM5M6uyV7HhgIrxCstAx/5lZRlCWJabkIewGfFA== +ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: - "@sentry-internal/tracing" "7.51.2" + type-fest "^0.21.3" -"@sentry/types@5.30.0": - version "5.30.0" - resolved "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz" - integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== -"@sentry/types@7.30.0": - version "7.30.0" - resolved "https://registry.npmjs.org/@sentry/types/-/types-7.30.0.tgz" - integrity sha512-l4A86typvt/SfWh5JffpdxNGkg5EEA8m35BzpIcKmCAQZUDmnb4b478r8jdD2uuOjLmPNmZr1tifdRW4NCLuxQ== +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== -"@sentry/types@7.51.2": - version "7.51.2" - resolved "https://registry.npmjs.org/@sentry/types/-/types-7.51.2.tgz" - integrity sha512-/hLnZVrcK7G5BQoD/60u9Qak8c9AvwV8za8TtYPJDUeW59GrqnqOkFji7RVhI7oH1OX4iBxV+9pAKzfYE6A6SA== +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== -"@sentry/types@7.54.0": - version "7.54.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.54.0.tgz#bfee18107a78e290e6c8ad41646e2b9d9dd95234" - integrity sha512-D+i9xogBeawvQi2r0NOrM7zYcUaPuijeME4O9eOTrDF20tj71hWtJLilK+KTGLYFtpGg1h+9bPaz7OHEIyVopg== +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -"@sentry/utils@5.30.0": - version "5.30.0" - resolved "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz" - integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== - dependencies: - "@sentry/types" "5.30.0" - tslib "^1.9.3" +ansi-sequence-parser@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz#4d790f31236ac20366b23b3916b789e1bde39aed" + integrity sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ== -"@sentry/utils@7.30.0": - version "7.30.0" - resolved "https://registry.npmjs.org/@sentry/utils/-/utils-7.30.0.tgz" - integrity sha512-tSlBhr5u/LdE2emxIDTDmjmyRr99GnZGIAh5GwRxUgeDQ3VEfNUFlyFodBCbZ6yeYTYd6PWNih5xoHn1+Rf3Sw== - dependencies: - "@sentry/types" "7.30.0" - tslib "^1.9.3" +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== -"@sentry/utils@7.51.2": - version "7.51.2" - resolved "https://registry.npmjs.org/@sentry/utils/-/utils-7.51.2.tgz" - integrity sha512-EcjBU7qG4IG+DpIPvdgIBcdIofROMawKoRUNKraeKzH/waEYH9DzCaqp/mzc5/rPBhpDB4BShX9xDDSeH+8c0A== +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + 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== dependencies: - "@sentry/types" "7.51.2" - tslib "^1.9.3" + color-convert "^1.9.0" -"@sentry/utils@7.54.0": - version "7.54.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.54.0.tgz#a3acb5e25a1409cbca7b46d6356d7417a253ea9a" - integrity sha512-3Yf5KlKjIcYLddOexSt2ovu2TWlR4Fi7M+aCK8yUTzwNzf/xwFSWOstHlD/WiDy9HvfhWAOB/ukNTuAeJmtasw== +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: - "@sentry/types" "7.54.0" - tslib "^1.9.3" + color-convert "^2.0.1" -"@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== +ansicolors@~0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz" + integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg== -"@sinclair/typebox@^0.25.16": - version "0.25.24" - resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz" - integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== +antlr4@4.7.1: + version "4.7.1" + resolved "https://registry.npmjs.org/antlr4/-/antlr4-4.7.1.tgz" + integrity sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ== -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== +antlr4ts@^0.5.0-alpha.4: + version "0.5.0-alpha.4" + resolved "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz" + integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== -"@sindresorhus/is@^4.0.0", "@sindresorhus/is@^4.2.0", "@sindresorhus/is@^4.6.0": - version "4.6.0" - resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz" - integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== -"@sinonjs/commons@^1.7.0": - version "1.8.6" - resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz" - integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== +anymatch@~3.1.1, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: - type-detect "4.0.8" + normalize-path "^3.0.0" + picomatch "^2.0.4" -"@sinonjs/commons@^2.0.0": +app-root-path@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-3.1.0.tgz#5971a2fc12ba170369a7a1ef018c71e6e47c2e86" + integrity sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA== + +append-transform@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz" - integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== + resolved "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz" + integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg== dependencies: - type-detect "4.0.8" + default-require-extensions "^3.0.0" -"@sinonjs/commons@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" - integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== - dependencies: - type-detect "4.0.8" +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -"@sinonjs/fake-timers@^10.0.2", "@sinonjs/fake-timers@^10.3.0": - version "10.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== - dependencies: - "@sinonjs/commons" "^3.0.0" +"aproba@^1.0.3 || ^2.0.0", aproba@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== -"@sinonjs/fake-timers@^8.0.1": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" - integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== - dependencies: - "@sinonjs/commons" "^1.7.0" +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz" + integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== -"@sinonjs/samsam@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.0.tgz#0d488c91efb3fa1442e26abea81759dfc8b5ac60" - integrity sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew== - dependencies: - "@sinonjs/commons" "^2.0.0" - lodash.get "^4.4.2" - type-detect "^4.0.8" +are-docs-informative@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/are-docs-informative/-/are-docs-informative-0.0.2.tgz#387f0e93f5d45280373d387a59d34c96db321963" + integrity sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig== -"@sinonjs/text-encoding@^0.7.1": - version "0.7.2" - resolved "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz" - integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== - -"@smithy/abort-controller@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-1.0.2.tgz#74caac052ecea15c5460438272ad8d43a6ccbc53" - integrity sha512-tb2h0b+JvMee+eAxTmhnyqyNk51UXIK949HnE14lFeezKsVJTB30maan+CO2IMwnig2wVYQH84B5qk6ylmKCuA== - dependencies: - "@smithy/types" "^1.1.1" - tslib "^2.5.0" - -"@smithy/config-resolver@^1.0.1", "@smithy/config-resolver@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-1.0.2.tgz#d4f556a44292b41b5c067662a4bd5049dea40e35" - integrity sha512-8Bk7CgnVKg1dn5TgnjwPz2ebhxeR7CjGs5yhVYH3S8x0q8yPZZVWwpRIglwXaf5AZBzJlNO1lh+lUhMf2e73zQ== - dependencies: - "@smithy/types" "^1.1.1" - "@smithy/util-config-provider" "^1.0.2" - "@smithy/util-middleware" "^1.0.2" - tslib "^2.5.0" - -"@smithy/credential-provider-imds@^1.0.1", "@smithy/credential-provider-imds@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-1.0.2.tgz#7aa797c0d95448eb3dccb988b40e62db8989576f" - integrity sha512-fLjCya+JOu2gPJpCiwSUyoLvT8JdNJmOaTOkKYBZoGf7CzqR6lluSyI+eboZnl/V0xqcfcqBG4tgqCISmWS3/w== +are-we-there-yet@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== dependencies: - "@smithy/node-config-provider" "^1.0.2" - "@smithy/property-provider" "^1.0.2" - "@smithy/types" "^1.1.1" - "@smithy/url-parser" "^1.0.2" - tslib "^2.5.0" + delegates "^1.0.0" + readable-stream "^3.6.0" -"@smithy/eventstream-codec@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-1.0.2.tgz#06d1b6e2510cb2475a39b3a20b0c75e751917c59" - integrity sha512-eW/XPiLauR1VAgHKxhVvgvHzLROUgTtqat2lgljztbH8uIYWugv7Nz+SgCavB+hWRazv2iYgqrSy74GvxXq/rg== +are-we-there-yet@~1.1.2: + version "1.1.7" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz" + integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== dependencies: - "@aws-crypto/crc32" "3.0.0" - "@smithy/types" "^1.1.1" - "@smithy/util-hex-encoding" "^1.0.2" - tslib "^2.5.0" + delegates "^1.0.0" + readable-stream "^2.0.6" -"@smithy/fetch-http-handler@^1.0.1", "@smithy/fetch-http-handler@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-1.0.2.tgz#4186ee6451de22e867f43c05236dcff43eca6e91" - integrity sha512-kynyofLf62LvR8yYphPPdyHb8fWG3LepFinM/vWUTG2Q1pVpmPCM530ppagp3+q2p+7Ox0UvSqldbKqV/d1BpA== - dependencies: - "@smithy/protocol-http" "^1.1.1" - "@smithy/querystring-builder" "^1.0.2" - "@smithy/types" "^1.1.1" - "@smithy/util-base64" "^1.0.2" - tslib "^2.5.0" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== -"@smithy/hash-node@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-1.0.2.tgz#dc65203a348d29e45c493ead3e772e4f7dfb5bc0" - integrity sha512-K6PKhcUNrJXtcesyzhIvNlU7drfIU7u+EMQuGmPw6RQDAg/ufUcfKHz4EcUhFAodUmN+rrejhRG9U6wxjeBOQA== +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: - "@smithy/types" "^1.1.1" - "@smithy/util-buffer-from" "^1.0.2" - "@smithy/util-utf8" "^1.0.2" - tslib "^2.5.0" + sprintf-js "~1.0.2" -"@smithy/invalid-dependency@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-1.0.2.tgz#0a9d82d1a14e5bdbdc0bd2cef5f457c85a942920" - integrity sha512-B1Y3Tsa6dfC+Vvb+BJMhTHOfFieeYzY9jWQSTR1vMwKkxsymD0OIAnEw8rD/RiDj/4E4RPGFdx9Mdgnyd6Bv5Q== - dependencies: - "@smithy/types" "^1.1.1" - tslib "^2.5.0" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -"@smithy/is-array-buffer@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-1.0.2.tgz#224702a2364d698f0a36ecb2c240c0c9541ecfb6" - integrity sha512-pkyBnsBRpe+c/6ASavqIMRBdRtZNJEVJOEzhpxZ9JoAXiZYbkfaSMRA/O1dUxGdJ653GHONunnZ4xMo/LJ7utQ== - dependencies: - tslib "^2.5.0" +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== -"@smithy/middleware-content-length@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-1.0.2.tgz#63099f8d01b3419b65e21cfd07b0c2ef47d1f473" - integrity sha512-pa1/SgGIrSmnEr2c9Apw7CdU4l/HW0fK3+LKFCPDYJrzM0JdYpqjQzgxi31P00eAkL0EFBccpus/p1n2GF9urw== - dependencies: - "@smithy/protocol-http" "^1.1.1" - "@smithy/types" "^1.1.1" - tslib "^2.5.0" +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== -"@smithy/middleware-endpoint@^1.0.1": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-1.0.3.tgz#ff4b1c0a83eb8d8b8d3937f434a95efbbf43e1cd" - integrity sha512-GsWvTXMFjSgl617PCE2km//kIjjtvMRrR2GAuRDIS9sHiLwmkS46VWaVYy+XE7ubEsEtzZ5yK2e8TKDR6Qr5Lw== - dependencies: - "@smithy/middleware-serde" "^1.0.2" - "@smithy/types" "^1.1.1" - "@smithy/url-parser" "^1.0.2" - "@smithy/util-middleware" "^1.0.2" - tslib "^2.5.0" +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== -"@smithy/middleware-retry@^1.0.1", "@smithy/middleware-retry@^1.0.2": +array-back@^1.0.3, array-back@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-1.0.4.tgz#8e9de0713dac7f7af405477d46bd4525ca7b9ea8" - integrity sha512-G7uRXGFL8c3F7APnoIMTtNAHH8vT4F2qVnAWGAZaervjupaUQuRRHYBLYubK0dWzOZz86BtAXKieJ5p+Ni2Xpg== - dependencies: - "@smithy/protocol-http" "^1.1.1" - "@smithy/service-error-classification" "^1.0.3" - "@smithy/types" "^1.1.1" - "@smithy/util-middleware" "^1.0.2" - "@smithy/util-retry" "^1.0.4" - tslib "^2.5.0" - uuid "^8.3.2" - -"@smithy/middleware-serde@^1.0.1", "@smithy/middleware-serde@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-1.0.2.tgz#87b3a0211602ae991d9b756893eb6bf2e3e5f711" - integrity sha512-T4PcdMZF4xme6koUNfjmSZ1MLi7eoFeYCtodQNQpBNsS77TuJt1A6kt5kP/qxrTvfZHyFlj0AubACoaUqgzPeg== + resolved "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz" + integrity sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw== dependencies: - "@smithy/types" "^1.1.1" - tslib "^2.5.0" + typical "^2.6.0" -"@smithy/middleware-stack@^1.0.1", "@smithy/middleware-stack@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-1.0.2.tgz#d241082bf3cb315c749dda57e233039a9aed804e" - integrity sha512-H7/uAQEcmO+eDqweEFMJ5YrIpsBwmrXSP6HIIbtxKJSQpAcMGY7KrR2FZgZBi1FMnSUOh+rQrbOyj5HQmSeUBA== +array-back@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz" + integrity sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw== dependencies: - tslib "^2.5.0" + typical "^2.6.1" -"@smithy/node-config-provider@^1.0.1", "@smithy/node-config-provider@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-1.0.2.tgz#2d391b96a9e10072e7e0a3698427400f4ef17ec4" - integrity sha512-HU7afWpTToU0wL6KseGDR2zojeyjECQfr8LpjAIeHCYIW7r360ABFf4EaplaJRMVoC3hD9FeltgI3/NtShOqCg== - dependencies: - "@smithy/property-provider" "^1.0.2" - "@smithy/shared-ini-file-loader" "^1.0.2" - "@smithy/types" "^1.1.1" - tslib "^2.5.0" +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== -"@smithy/node-http-handler@^1.0.1", "@smithy/node-http-handler@^1.0.2", "@smithy/node-http-handler@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-1.0.3.tgz#89b556ca2bdcce7a994a9da1ea265094d76d4791" - integrity sha512-PcPUSzTbIb60VCJCiH0PU0E6bwIekttsIEf5Aoo/M0oTfiqsxHTn0Rcij6QoH6qJy6piGKXzLSegspXg5+Kq6g== - dependencies: - "@smithy/abort-controller" "^1.0.2" - "@smithy/protocol-http" "^1.1.1" - "@smithy/querystring-builder" "^1.0.2" - "@smithy/types" "^1.1.1" - tslib "^2.5.0" +array-back@^4.0.1, array-back@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== -"@smithy/property-provider@^1.0.1", "@smithy/property-provider@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-1.0.2.tgz#f99f104cbd6576c9aca9f56cb72819b4a65208e1" - integrity sha512-pXDPyzKX8opzt38B205kDgaxda6LHcTfPvTYQZnwP6BAPp1o9puiCPjeUtkKck7Z6IbpXCPUmUQnzkUzWTA42Q== - dependencies: - "@smithy/types" "^1.1.1" - tslib "^2.5.0" +array-differ@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz" + integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== -"@smithy/protocol-http@^1.0.1", "@smithy/protocol-http@^1.1.0", "@smithy/protocol-http@^1.1.1": +array-flatten@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-1.1.1.tgz#10977cf71631eed4f5ad1845408920238d52cdba" - integrity sha512-mFLFa2sSvlUxm55U7B4YCIsJJIMkA6lHxwwqOaBkral1qxFz97rGffP/mmd4JDuin1EnygiO5eNJGgudiUgmDQ== - dependencies: - "@smithy/types" "^1.1.1" - tslib "^2.5.0" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -"@smithy/querystring-builder@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-1.0.2.tgz#ce861f6cbd14792c83aa19b4967a19923bd0706e" - integrity sha512-6P/xANWrtJhMzTPUR87AbXwSBuz1SDHIfL44TFd/GT3hj6rA+IEv7rftEpPjayUiWRocaNnrCPLvmP31mobOyA== - dependencies: - "@smithy/types" "^1.1.1" - "@smithy/util-uri-escape" "^1.0.2" - tslib "^2.5.0" +array-ify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz" + integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== -"@smithy/querystring-parser@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-1.0.2.tgz#559d09c46b21e6fbda71e95deda4bcd8a46bdecc" - integrity sha512-IWxwxjn+KHWRRRB+K2Ngl+plTwo2WSgc2w+DvLy0DQZJh9UGOpw40d6q97/63GBlXIt4TEt5NbcFrO30CKlrsA== +array-includes@^3.1.4, array-includes@^3.1.5, array-includes@^3.1.6: + version "3.1.6" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz" + integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== dependencies: - "@smithy/types" "^1.1.1" - tslib "^2.5.0" + 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" -"@smithy/service-error-classification@^1.0.3": +array-union@^2.1.0: + 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-union@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz" + integrity sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw== + +array-uniq@1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-1.0.3.tgz#c620c1562610d3351985eb6dd04262ca2657ae67" - integrity sha512-2eglIYqrtcUnuI71yweu7rSfCgt6kVvRVf0C72VUqrd0LrV1M0BM0eYN+nitp2CHPSdmMI96pi+dU9U/UqAMSA== + resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== -"@smithy/shared-ini-file-loader@^1.0.1", "@smithy/shared-ini-file-loader@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-1.0.2.tgz#c6e79991d87925bd18e0adae00c97da6c8ecae1e" - integrity sha512-bdQj95VN+lCXki+P3EsDyrkpeLn8xDYiOISBGnUG/AGPYJXN8dmp4EhRRR7XOoLoSs8anZHR4UcGEOzFv2jwGw== - dependencies: - "@smithy/types" "^1.1.1" - tslib "^2.5.0" +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== -"@smithy/signature-v4@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-1.0.2.tgz#3a7b10ac66c337b404aa061e5f268f0550729680" - integrity sha512-rpKUhmCuPmpV5dloUkOb9w1oBnJatvKQEjIHGmkjRGZnC3437MTdzWej9TxkagcZ8NRRJavYnEUixzxM1amFig== +array.prototype.flat@^1.2.3, array.prototype.flat@^1.2.5: + 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== dependencies: - "@smithy/eventstream-codec" "^1.0.2" - "@smithy/is-array-buffer" "^1.0.2" - "@smithy/types" "^1.1.1" - "@smithy/util-hex-encoding" "^1.0.2" - "@smithy/util-middleware" "^1.0.2" - "@smithy/util-uri-escape" "^1.0.2" - "@smithy/util-utf8" "^1.0.2" - tslib "^2.5.0" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" -"@smithy/smithy-client@^1.0.2", "@smithy/smithy-client@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-1.0.4.tgz#96d03d123d117a637c679a79bb8eae96e3857bd9" - integrity sha512-gpo0Xl5Nyp9sgymEfpt7oa9P2q/GlM3VmQIdm+FeH0QEdYOQx3OtvwVmBYAMv2FIPWxkMZlsPYRTnEiBTK5TYg== +array.prototype.flatmap@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz" + integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== dependencies: - "@smithy/middleware-stack" "^1.0.2" - "@smithy/types" "^1.1.1" - "@smithy/util-stream" "^1.0.2" - tslib "^2.5.0" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" -"@smithy/types@^1.0.0", "@smithy/types@^1.1.0", "@smithy/types@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@smithy/types/-/types-1.1.1.tgz#949394a22e13e7077471bae0d18c146e5f62c456" - integrity sha512-tMpkreknl2gRrniHeBtdgQwaOlo39df8RxSrwsHVNIGXULy5XP6KqgScUw2m12D15wnJCKWxVhCX+wbrBW/y7g== +array.prototype.reduce@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz" + integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q== dependencies: - tslib "^2.5.0" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" -"@smithy/url-parser@^1.0.1", "@smithy/url-parser@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-1.0.2.tgz#fb59be6f2283399443d9e7afe08ebf63b3c266bb" - integrity sha512-0JRsDMQe53F6EHRWksdcavKDRjyqp8vrjakg8EcCUOa7PaFRRB1SO/xGZdzSlW1RSTWQDEksFMTCEcVEKmAoqA== +array.prototype.tosorted@^1.1.1: + 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== dependencies: - "@smithy/querystring-parser" "^1.0.2" - "@smithy/types" "^1.1.1" - tslib "^2.5.0" + 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" -"@smithy/util-base64@^1.0.1", "@smithy/util-base64@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-1.0.2.tgz#6cdd5a9356dafad3c531123c12cd77d674762da0" - integrity sha512-BCm15WILJ3SL93nusoxvJGMVfAMWHZhdeDZPtpAaskozuexd0eF6szdz4kbXaKp38bFCSenA6bkUHqaE3KK0dA== - dependencies: - "@smithy/util-buffer-from" "^1.0.2" - tslib "^2.5.0" +arrify@^1.0.0, arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== -"@smithy/util-body-length-browser@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-1.0.2.tgz#4a9a49497634b5f25ab5ff73f1a8498010b0024a" - integrity sha512-Xh8L06H2anF5BHjSYTg8hx+Itcbf4SQZnVMl4PIkCOsKtneMJoGjPRLy17lEzfoh/GOaa0QxgCP6lRMQWzNl4w== - dependencies: - tslib "^2.5.0" +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -"@smithy/util-body-length-node@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-1.0.2.tgz#bc4969022f7d9ffcb239d626d80a85138e986df6" - integrity sha512-nXHbZsUtvZeyfL4Ceds9nmy2Uh2AhWXohG4vWHyjSdmT8cXZlJdmJgnH6SJKDjyUecbu+BpKeVvSrA4cWPSOPA== - dependencies: - tslib "^2.5.0" +asap@^2.0.0, asap@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== -"@smithy/util-buffer-from@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-1.0.2.tgz#27e19573d721962bd2443f23d4edadb8206b2cb5" - integrity sha512-lHAYIyrBO9RANrPvccnPjU03MJnWZ66wWuC5GjWWQVfsmPwU6m00aakZkzHdUT6tGCkGacXSgArP5wgTgA+oCw== +asn1.js@^5.2.0, asn1.js@^5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== dependencies: - "@smithy/is-array-buffer" "^1.0.2" - tslib "^2.5.0" + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" -"@smithy/util-config-provider@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-1.0.2.tgz#4d2e867df1cc7b4010d1278bd5767ce1b679dae9" - integrity sha512-HOdmDm+3HUbuYPBABLLHtn8ittuRyy+BSjKOA169H+EMc+IozipvXDydf+gKBRAxUa4dtKQkLraypwppzi+PRw== +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: - tslib "^2.5.0" + safer-buffer "~2.1.0" -"@smithy/util-defaults-mode-browser@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-1.0.2.tgz#31ad7b9bce7e38fd57f4a370ee416373b4fbd432" - integrity sha512-J1u2PO235zxY7dg0+ZqaG96tFg4ehJZ7isGK1pCBEA072qxNPwIpDzUVGnLJkHZvjWEGA8rxIauDtXfB0qxeAg== - dependencies: - "@smithy/property-provider" "^1.0.2" - "@smithy/types" "^1.1.1" - bowser "^2.11.0" - tslib "^2.5.0" +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== -"@smithy/util-defaults-mode-node@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-1.0.2.tgz#b295fe2a18568c1e21a85b6557e2b769452b4d95" - integrity sha512-9/BN63rlIsFStvI+AvljMh873Xw6bbI6b19b+PVYXyycQ2DDQImWcjnzRlHW7eP65CCUNGQ6otDLNdBQCgMXqg== - dependencies: - "@smithy/config-resolver" "^1.0.2" - "@smithy/credential-provider-imds" "^1.0.2" - "@smithy/node-config-provider" "^1.0.2" - "@smithy/property-provider" "^1.0.2" - "@smithy/types" "^1.1.1" - tslib "^2.5.0" +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== -"@smithy/util-hex-encoding@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-1.0.2.tgz#5b9f2162f2a59b2d2aa39992bd2c7f65b6616ab6" - integrity sha512-Bxydb5rMJorMV6AuDDMOxro3BMDdIwtbQKHpwvQFASkmr52BnpDsWlxgpJi8Iq7nk1Bt4E40oE1Isy/7ubHGzg== - dependencies: - tslib "^2.5.0" +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== -"@smithy/util-middleware@^1.0.1", "@smithy/util-middleware@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-1.0.2.tgz#c3d4c7a6cd31bde33901e54abd7700c8ca73dab3" - integrity sha512-vtXK7GOR2BoseCX8NCGe9SaiZrm9M2lm/RVexFGyPuafTtry9Vyv7hq/vw8ifd/G/pSJ+msByfJVb1642oQHKw== - dependencies: - tslib "^2.5.0" +ast-parents@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/ast-parents/-/ast-parents-0.0.1.tgz" + integrity sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA== -"@smithy/util-retry@^1.0.1", "@smithy/util-retry@^1.0.2", "@smithy/util-retry@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-1.0.4.tgz#9d95df3884981414163d5f780d38e3529384d9ad" - integrity sha512-RnZPVFvRoqdj2EbroDo3OsnnQU8eQ4AlnZTOGusbYKybH3269CFdrZfZJloe60AQjX7di3J6t/79PjwCLO5Khw== - dependencies: - "@smithy/service-error-classification" "^1.0.3" - tslib "^2.5.0" +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== -"@smithy/util-stream@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-1.0.2.tgz#2d33aa5168e51d1dd7937c32a09c8334d2da44d9" - integrity sha512-qyN2M9QFMTz4UCHi6GnBfLOGYKxQZD01Ga6nzaXFFC51HP/QmArU72e4kY50Z/EtW8binPxspP2TAsGbwy9l3A== - dependencies: - "@smithy/fetch-http-handler" "^1.0.2" - "@smithy/node-http-handler" "^1.0.3" - "@smithy/types" "^1.1.1" - "@smithy/util-base64" "^1.0.2" - "@smithy/util-buffer-from" "^1.0.2" - "@smithy/util-hex-encoding" "^1.0.2" - "@smithy/util-utf8" "^1.0.2" - tslib "^2.5.0" +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -"@smithy/util-uri-escape@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-1.0.2.tgz#c69a5423c9baa7a045a79372320bd40a437ac756" - integrity sha512-k8C0BFNS9HpBMHSgUDnWb1JlCQcFG+PPlVBq9keP4Nfwv6a9Q0yAfASWqUCtzjuMj1hXeLhn/5ADP6JxnID1Pg== +async-eventemitter@^0.2.2, async-eventemitter@^0.2.4: + version "0.2.4" + resolved "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz" + integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== dependencies: - tslib "^2.5.0" + async "^2.4.0" -"@smithy/util-utf8@^1.0.1", "@smithy/util-utf8@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-1.0.2.tgz#b34c27b4efbe4f0edb6560b6d4f743088302671f" - integrity sha512-V4cyjKfJlARui0dMBfWJMQAmJzoW77i4N3EjkH/bwnE2Ngbl4tqD2Y0C/xzpzY/J1BdxeCKxAebVFk8aFCaSCw== - dependencies: - "@smithy/util-buffer-from" "^1.0.2" - tslib "^2.5.0" +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -"@solidity-parser/parser@^0.14.0", "@solidity-parser/parser@^0.14.1", "@solidity-parser/parser@^0.14.5": - version "0.14.5" - resolved "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz" - integrity sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg== +async-mutex@^0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/async-mutex/-/async-mutex-0.3.2.tgz" + integrity sha512-HuTK7E7MT7jZEh1P9GtRW9+aTWiDWWi9InbZ5hjxrnRa39KS4BW04+xLBhYNS2aXhHUIKZSw3gj4Pn1pj+qGAA== dependencies: - antlr4ts "^0.5.0-alpha.4" - -"@sqltools/formatter@^1.2.5": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@sqltools/formatter/-/formatter-1.2.5.tgz#3abc203c79b8c3e90fd6c156a0c62d5403520e12" - integrity sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw== + tslib "^2.3.1" -"@storybook/addon-actions@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-7.0.18.tgz#003cb5fc7810b5ba9fd2c8249ba82bc4b95a02dc" - integrity sha512-3M5AU/ZD79YP88vKlFezIJbIoG/II7wCixUBTmwiC3BeQZDuVsqPNl8eiP6MGT70xwyx7a993lSM5f5N5W93vg== - dependencies: - "@storybook/client-logger" "7.0.18" - "@storybook/components" "7.0.18" - "@storybook/core-events" "7.0.18" - "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.0.18" - "@storybook/preview-api" "7.0.18" - "@storybook/theming" "7.0.18" - "@storybook/types" "7.0.18" - dequal "^2.0.2" - lodash "^4.17.21" - polished "^4.2.2" - prop-types "^15.7.2" - react-inspector "^6.0.0" - telejson "^7.0.3" - ts-dedent "^2.0.0" - uuid "^9.0.0" +async@1.x, async@^1.4.2: + version "1.5.2" + resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz" + integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== -"@storybook/addon-backgrounds@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-7.0.18.tgz#ffb47f8ac5e51718103b8931326321032d0e3f8b" - integrity sha512-cPQy1Ot7Urf4hQz+xnF1YKrqSyR0DRwozBmF+sGzceACWmueFl0CifYZC8RSmaiIyVh0RyWPxZ9F/eT67NX2lA== - dependencies: - "@storybook/client-logger" "7.0.18" - "@storybook/components" "7.0.18" - "@storybook/core-events" "7.0.18" - "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.0.18" - "@storybook/preview-api" "7.0.18" - "@storybook/theming" "7.0.18" - "@storybook/types" "7.0.18" - memoizerific "^1.11.3" - ts-dedent "^2.0.0" - -"@storybook/addon-controls@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-7.0.18.tgz#e2875f7fed4befd542507e35f2534b7e9a64d7d1" - integrity sha512-mD6DE52CCMKugXk2Uab0QxwgfE76kFJroxASmnePnXUNWfP9EZJpJXYE3cyyBbmZuxa46VHDGGEGXQWRl4+Eog== - dependencies: - "@storybook/blocks" "7.0.18" - "@storybook/client-logger" "7.0.18" - "@storybook/components" "7.0.18" - "@storybook/core-common" "7.0.18" - "@storybook/manager-api" "7.0.18" - "@storybook/node-logger" "7.0.18" - "@storybook/preview-api" "7.0.18" - "@storybook/theming" "7.0.18" - "@storybook/types" "7.0.18" - lodash "^4.17.21" - ts-dedent "^2.0.0" - -"@storybook/addon-docs@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-7.0.18.tgz#a39b0a1443158e0046a1b0746bab20344400f1da" - integrity sha512-oq+ZN5809gIRdTZQIpeK1F8BJtL1/VWo9rWvl6ymVOL/Xzdgd7AOfKf9Y99X35RcxAGysRIHLGJjF4bgLoY1Aw== - dependencies: - "@babel/core" "^7.20.2" - "@babel/plugin-transform-react-jsx" "^7.19.0" - "@jest/transform" "^29.3.1" - "@mdx-js/react" "^2.1.5" - "@storybook/blocks" "7.0.18" - "@storybook/client-logger" "7.0.18" - "@storybook/components" "7.0.18" - "@storybook/csf-plugin" "7.0.18" - "@storybook/csf-tools" "7.0.18" - "@storybook/global" "^5.0.0" - "@storybook/mdx2-csf" "^1.0.0" - "@storybook/node-logger" "7.0.18" - "@storybook/postinstall" "7.0.18" - "@storybook/preview-api" "7.0.18" - "@storybook/react-dom-shim" "7.0.18" - "@storybook/theming" "7.0.18" - "@storybook/types" "7.0.18" - fs-extra "^11.1.0" - remark-external-links "^8.0.0" - remark-slug "^6.0.0" - ts-dedent "^2.0.0" - -"@storybook/addon-essentials@^7.0.15": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-7.0.18.tgz#20c9a4b43e3e173dbfc0d742eb3e6bc7ba42b4c9" - integrity sha512-0XXu7xhtRefA1WxxorKk6BWeeB+7gQ+r2+bG1zQEfBgDYPR06YbPw4H79IZ8JiR97aJRsZBK5UUhOZMDrc5zcQ== - dependencies: - "@storybook/addon-actions" "7.0.18" - "@storybook/addon-backgrounds" "7.0.18" - "@storybook/addon-controls" "7.0.18" - "@storybook/addon-docs" "7.0.18" - "@storybook/addon-highlight" "7.0.18" - "@storybook/addon-measure" "7.0.18" - "@storybook/addon-outline" "7.0.18" - "@storybook/addon-toolbars" "7.0.18" - "@storybook/addon-viewport" "7.0.18" - "@storybook/core-common" "7.0.18" - "@storybook/manager-api" "7.0.18" - "@storybook/node-logger" "7.0.18" - "@storybook/preview-api" "7.0.18" - ts-dedent "^2.0.0" - -"@storybook/addon-highlight@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/addon-highlight/-/addon-highlight-7.0.18.tgz#801d1242462b275aa4ba668ddcbf1474cd9f59ae" - integrity sha512-a3nfUhbu6whoDclIZSV/fzLj132tNNjV05ENTpuN3JpLoMd3+obDUWzeQUs9TetK4RBRN3ewM7sIMEI4oBpgmg== - dependencies: - "@storybook/core-events" "7.0.18" - "@storybook/global" "^5.0.0" - "@storybook/preview-api" "7.0.18" - -"@storybook/addon-interactions@^7.0.15": - version "7.0.27" - resolved "https://registry.yarnpkg.com/@storybook/addon-interactions/-/addon-interactions-7.0.27.tgz#528aec33e40d4dacd07702c086f06b7effa6c9f2" - integrity sha512-0pt9tWqAqMQpHDS7hglcz0kpyu5KsP/51squflZkY5GhItXEY9IFxoBZ4Ttounp//2z/pj2iQW0dPE5WJpwTrw== - dependencies: - "@storybook/client-logger" "7.0.27" - "@storybook/components" "7.0.27" - "@storybook/core-common" "7.0.27" - "@storybook/core-events" "7.0.27" - "@storybook/global" "^5.0.0" - "@storybook/instrumenter" "7.0.27" - "@storybook/manager-api" "7.0.27" - "@storybook/preview-api" "7.0.27" - "@storybook/theming" "7.0.27" - "@storybook/types" "7.0.27" - jest-mock "^27.0.6" - polished "^4.2.2" - ts-dedent "^2.2.0" - -"@storybook/addon-links@^7.0.15": - version "7.0.24" - resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-7.0.24.tgz#b70d754e1640f149a0eb4f2595438bd760f8286a" - integrity sha512-/Hse4IC3ov2dVzpZiIpf2QNFczi4pxdjZdmR0FhKeRlFldEJyywgT8a/gzeEahXO9v1jsEDa7j7f8JQcu/+04w== - dependencies: - "@storybook/client-logger" "7.0.24" - "@storybook/core-events" "7.0.24" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.0.24" - "@storybook/preview-api" "7.0.24" - "@storybook/router" "7.0.24" - "@storybook/types" "7.0.24" - prop-types "^15.7.2" - ts-dedent "^2.0.0" - -"@storybook/addon-measure@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-7.0.18.tgz#ee670ccb9cbaed6805343111d3b10839dc5e3ff1" - integrity sha512-iu8vQpGOA+CFYbWR6QNshj20o33OQ/xcTbp5P4U6xGYDUliUBbwJ2KLxcKlmIeBanBrBdz0jPFtHwY4dM1ZdKw== - dependencies: - "@storybook/client-logger" "7.0.18" - "@storybook/components" "7.0.18" - "@storybook/core-events" "7.0.18" - "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.0.18" - "@storybook/preview-api" "7.0.18" - "@storybook/types" "7.0.18" - -"@storybook/addon-outline@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-7.0.18.tgz#69c5705135b199a814c82a3297c7870a3b56fe59" - integrity sha512-3vNWO7ezo6GIvidbz8JxFrKtfVEoTQN7tnZx+wpqmCF8ihBORewkpeMUnvgb9ZKjD0X7gE8eQvvG8KKWcyHDBQ== - dependencies: - "@storybook/client-logger" "7.0.18" - "@storybook/components" "7.0.18" - "@storybook/core-events" "7.0.18" - "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.0.18" - "@storybook/preview-api" "7.0.18" - "@storybook/types" "7.0.18" - ts-dedent "^2.0.0" - -"@storybook/addon-styling@^1.0.8": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@storybook/addon-styling/-/addon-styling-1.0.8.tgz#3533c4c5322b286575c235adcec246e39dcdf913" - integrity sha512-Ubi75gHNFO60Sjti2n/i3f0utERNOYcpsRkWHdzV+C26kUemLG+2riKHUt8zVbNskyJxA0EZxh84HYItRe4coA== - dependencies: - "@storybook/api" "^7.0.2" - "@storybook/components" "^7.0.2" - "@storybook/core-events" "^7.0.2" - "@storybook/manager-api" "^7.0.2" - "@storybook/node-logger" "^7.0.7" - "@storybook/preview-api" "^7.0.2" - "@storybook/theming" "^7.0.2" - "@storybook/types" "^7.0.2" - css-loader "^6.7.3" - less-loader "^11.1.0" - postcss-loader "^7.2.4" - resolve-url-loader "^5.0.0" - sass-loader "^13.2.2" - style-loader "^3.3.2" - -"@storybook/addon-toolbars@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-7.0.18.tgz#619293c15c97a971f1e77b8b9a0c4173e08865cc" - integrity sha512-mwhq962o0WloHAeFjJ6BXO2nzdTo5KE2fqawPpqcB2lwXP6tvaA2tDWwgntjPCHejqWTS+ZTdO4/1xrMhWYt/g== - dependencies: - "@storybook/client-logger" "7.0.18" - "@storybook/components" "7.0.18" - "@storybook/manager-api" "7.0.18" - "@storybook/preview-api" "7.0.18" - "@storybook/theming" "7.0.18" - -"@storybook/addon-toolbars@^7.0.17": - version "7.0.26" - resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-7.0.26.tgz#8dc43dc989c966c022caf664684a914fe5b63c6e" - integrity sha512-DrwqcWuCLjaTNFtAYUxO2VaLrr2ibhB3ZQwW7J6a4YFCJaV49wempGPq3BzTWvrPUtMxGp7J3ZusdH9jBgCzjA== - dependencies: - "@storybook/client-logger" "7.0.26" - "@storybook/components" "7.0.26" - "@storybook/manager-api" "7.0.26" - "@storybook/preview-api" "7.0.26" - "@storybook/theming" "7.0.26" - -"@storybook/addon-viewport@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-7.0.18.tgz#976ab4ef2daa69718e6a98560414d3ee43f56b14" - integrity sha512-aVVLBsWXfGDX3z1pc93LWWdG5RUoJbGL/JJPMZGwXdwWpP8V3OBl8D8bgPymyg+MgwhSRZZDDGgnJaVGGwZ6bQ== - dependencies: - "@storybook/client-logger" "7.0.18" - "@storybook/components" "7.0.18" - "@storybook/core-events" "7.0.18" - "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.0.18" - "@storybook/preview-api" "7.0.18" - "@storybook/theming" "7.0.18" - memoizerific "^1.11.3" - prop-types "^15.7.2" - -"@storybook/addons@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-7.0.18.tgz#38dbbdb5281ce16ad0996bfc8a9e0bc5e7514460" - integrity sha512-+j9ItxWoVzarbllaV4WRaJpDM3P2aC5O6F3cPn4YkG/unb6HOs11WLAqFbzZnLYZNAFvWS8PYEAtqs1BxG66YQ== - dependencies: - "@storybook/manager-api" "7.0.18" - "@storybook/preview-api" "7.0.18" - "@storybook/types" "7.0.18" - -"@storybook/api@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/api/-/api-7.0.18.tgz#6304f7f5160b404b61e4080da0a952074258cf1f" - integrity sha512-gikVJBR2z7LdepljmbvbsrYgywQm3jNEEEmjG0OwYDeYNjWPuoQSffT+LoyouaaCK90d1osJLl3062OkwlIG8g== - dependencies: - "@storybook/client-logger" "7.0.18" - "@storybook/manager-api" "7.0.18" - -"@storybook/api@^7.0.17", "@storybook/api@^7.0.2": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@storybook/api/-/api-7.2.1.tgz#034aa2596e241dfba2758b86161da4017d3abea4" - integrity sha512-wPZYOFBFVgzXv7QxwtBYi17tn4bCneV3FO3vNa9JUPrD+NaLkuY73BiuRJ1gk2+FuDnodJyOwNJFCkKUKJZa6Q== - dependencies: - "@storybook/client-logger" "7.2.1" - "@storybook/manager-api" "7.2.1" - -"@storybook/blocks@7.0.18", "@storybook/blocks@^7.0.15": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-7.0.18.tgz#996651ac813de2a810ba442ab77266961721d324" - integrity sha512-HLsuzmUdVIeFXEP5v5vyjnEePRNYjzltwTjCKQhHAlt8/aQZmREiIMOfoMoAa1Rd+On8Ib2DUd2cN10VS18H8A== - dependencies: - "@storybook/channels" "7.0.18" - "@storybook/client-logger" "7.0.18" - "@storybook/components" "7.0.18" - "@storybook/core-events" "7.0.18" - "@storybook/csf" "^0.1.0" - "@storybook/docs-tools" "7.0.18" - "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.0.18" - "@storybook/preview-api" "7.0.18" - "@storybook/theming" "7.0.18" - "@storybook/types" "7.0.18" - "@types/lodash" "^4.14.167" - color-convert "^2.0.1" - dequal "^2.0.2" - lodash "^4.17.21" - markdown-to-jsx "^7.1.8" - memoizerific "^1.11.3" - polished "^4.2.2" - react-colorful "^5.1.2" - telejson "^7.0.3" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" - -"@storybook/builder-manager@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@storybook/builder-manager/-/builder-manager-7.1.1.tgz#ebd626f0436c3773fe3bda3dfd8cce10bdbfee71" - integrity sha512-vocO/JjrXPOnkFnwCV2NqKxbTfyYD2qV8PGH8EFNw2+I13GNbZ5CphEZMhI7HmKm0aIYPKdZKbN4KNWkwOxyAQ== - dependencies: - "@fal-works/esbuild-plugin-global-externals" "^2.1.2" - "@storybook/core-common" "7.1.1" - "@storybook/manager" "7.1.1" - "@storybook/node-logger" "7.1.1" - "@types/ejs" "^3.1.1" - "@types/find-cache-dir" "^3.2.1" - "@yarnpkg/esbuild-plugin-pnp" "^3.0.0-rc.10" - browser-assert "^1.2.1" - ejs "^3.1.8" - esbuild "^0.18.0" - esbuild-plugin-alias "^0.2.1" - express "^4.17.3" - find-cache-dir "^3.0.0" - fs-extra "^11.1.0" - process "^0.11.10" - util "^0.12.4" - -"@storybook/builder-webpack5@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/builder-webpack5/-/builder-webpack5-7.0.18.tgz#587ef5088d5d37953c077b0f0163a83e1f31f238" - integrity sha512-ciDOHrnChHWjikQwsM+xGz70PGfWurcezCyRPPRY0zimyHWtlug6V1Q9dJAdEAFsxqFSZA/qg7gEcZyqdlTMaA== - dependencies: - "@babel/core" "^7.12.10" - "@storybook/addons" "7.0.18" - "@storybook/api" "7.0.18" - "@storybook/channel-postmessage" "7.0.18" - "@storybook/channel-websocket" "7.0.18" - "@storybook/channels" "7.0.18" - "@storybook/client-api" "7.0.18" - "@storybook/client-logger" "7.0.18" - "@storybook/components" "7.0.18" - "@storybook/core-common" "7.0.18" - "@storybook/core-events" "7.0.18" - "@storybook/core-webpack" "7.0.18" - "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.0.18" - "@storybook/node-logger" "7.0.18" - "@storybook/preview" "7.0.18" - "@storybook/preview-api" "7.0.18" - "@storybook/router" "7.0.18" - "@storybook/store" "7.0.18" - "@storybook/theming" "7.0.18" - "@types/node" "^16.0.0" - "@types/semver" "^7.3.4" - babel-loader "^9.0.0" - babel-plugin-named-exports-order "^0.0.2" - browser-assert "^1.2.1" - case-sensitive-paths-webpack-plugin "^2.4.0" - css-loader "^6.7.1" - express "^4.17.3" - fork-ts-checker-webpack-plugin "^7.2.8" - fs-extra "^11.1.0" - html-webpack-plugin "^5.5.0" - path-browserify "^1.0.1" - process "^0.11.10" - semver "^7.3.7" - style-loader "^3.3.1" - terser-webpack-plugin "^5.3.1" - ts-dedent "^2.0.0" - util "^0.12.4" - util-deprecate "^1.0.2" - webpack "5" - webpack-dev-middleware "^5.3.1" - webpack-hot-middleware "^2.25.1" - webpack-virtual-modules "^0.4.3" - -"@storybook/channel-postmessage@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-7.0.18.tgz#deb843705aec24bd23e717a14678fdb1f7cce8ae" - integrity sha512-rpwBH5ANdPnugS6+7xG9qHSoS+aPSEnBxDKsONWFubfMTTXQuFkf/793rBbxGkoINdqh8kSdKOM2rIty6e9cmQ== - dependencies: - "@storybook/channels" "7.0.18" - "@storybook/client-logger" "7.0.18" - "@storybook/core-events" "7.0.18" - "@storybook/global" "^5.0.0" - qs "^6.10.0" - telejson "^7.0.3" - -"@storybook/channel-postmessage@7.0.24": - version "7.0.24" - resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-7.0.24.tgz#789bd121cf64e306737ec0f3b096ea0ac6f47bf5" - integrity sha512-QLtLXjEeTEwBN/7pB888mBaykmRU9Jy2BitvZuLJWyHHygTYm3vYZOaGR37DT+q/6Ob5GaZ0tURZmCSNDe8IIA== - dependencies: - "@storybook/channels" "7.0.24" - "@storybook/client-logger" "7.0.24" - "@storybook/core-events" "7.0.24" - "@storybook/global" "^5.0.0" - qs "^6.10.0" - telejson "^7.0.3" - -"@storybook/channel-postmessage@7.0.26": - version "7.0.26" - resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-7.0.26.tgz#cee0aa3d6c6460fbb9bf423af85dbeb5cfc40423" - integrity sha512-ZvFLr/tUD9dWIjQtIn1JXHjqrbOP/uEEOqzwpKSVj0Cl4Vgc12s8hecbzBufkOF7fwLsFvfieSi7ENOmjoncdQ== - dependencies: - "@storybook/channels" "7.0.26" - "@storybook/client-logger" "7.0.26" - "@storybook/core-events" "7.0.26" - "@storybook/global" "^5.0.0" - qs "^6.10.0" - telejson "^7.0.3" - -"@storybook/channel-postmessage@7.0.27": - version "7.0.27" - resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-7.0.27.tgz#b73b2273e19568d2a7e9c0859a23d128d41279c2" - integrity sha512-ScpiStUHvtgy9RrCFNyzzH9l+zHF80lSwW/BZ1MRETJ9ZaOVPrm03U0Ju01wJC57DYPROwPU/wKMetNqKKEhdA== - dependencies: - "@storybook/channels" "7.0.27" - "@storybook/client-logger" "7.0.27" - "@storybook/core-events" "7.0.27" - "@storybook/global" "^5.0.0" - qs "^6.10.0" - telejson "^7.0.3" - -"@storybook/channel-postmessage@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-7.1.1.tgz#debb9fe630843ec32d94ac78e7e6fb4eb86a8af8" - integrity sha512-Gmjh3feilXKLmZkQdjgkT8BRrfHnrBJJ8CY86MwD4wQlohObeFIXfhueRof4vJEGvIfJwooUrk9CkkXb5YbluQ== - dependencies: - "@storybook/channels" "7.1.1" - "@storybook/client-logger" "7.1.1" - -"@storybook/channel-websocket@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/channel-websocket/-/channel-websocket-7.0.18.tgz#d603b14b811e2c7a904cb7cc2f16a167e1124632" - integrity sha512-QYsZIfe23NN4i+oIdPKHaYBehk3a/HYk57a+M2oR3Frmv8IOqc/e31uH+xx5NxnjHrTJj7Y80ZJw6EKB682S6w== - dependencies: - "@storybook/channels" "7.0.18" - "@storybook/client-logger" "7.0.18" - "@storybook/global" "^5.0.0" - telejson "^7.0.3" - -"@storybook/channels@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.0.18.tgz#0b5053ad6237ad7f619f1e17448d588de90ac235" - integrity sha512-rkA7ea0M3+dWS+71iHJdiZ5R2QuIdiVg0CgyLJHDagc1qej7pEVNhMWtppeq+X5Pwp9nkz8ZTQ7aCjTf6th0/A== - -"@storybook/channels@7.0.24": - version "7.0.24" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.0.24.tgz#fcfe7a1a5599265506f07fe81d03b0585303fc15" - integrity sha512-NZVLwMhtzy6cZrNRjshFvMAD9mQTmJDNwhohodSkM/YFCDVFhmxQk9tgizVGh9MwY3CYGJ1SI96RUejGosb49Q== - -"@storybook/channels@7.0.26": - version "7.0.26" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.0.26.tgz#cc247bc4b61f271abb84e59020307a789f7b4f53" - integrity sha512-Br3XILhrtuL5Sdp91I04kKjJzSqU/N8gGL6B6nIfnuaHUvGMDuMCHAB+g7aoiyH5dnpDZ6yBVGNwtYAyJA+0Og== - -"@storybook/channels@7.0.27": - version "7.0.27" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.0.27.tgz#3dc577c45d57406546ec02d92c22ebfa6acc5d6b" - integrity sha512-YppvPa1qMyC+oCQJ3tf7Quzpf2NnBlvIRLPJiGAMssUwX5qE0iKe9lTtkNwMaNxEvzz6rDxewSlz+f/MWr4gPw== - -"@storybook/channels@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.1.1.tgz#c4a560ba7fe02837ef66d2d4128dbfbcbf1b7805" - integrity sha512-uhkZFtLIeRnbBhyLlvQAZQmsRbftX/YMGQL+9WRzICrCkwl4xfZPAvMxEgCj1iJzNFcaX5ma9XzHb7q/i+wUCw== - dependencies: - "@storybook/channels" "7.1.1" - "@storybook/client-logger" "7.1.1" - "@storybook/core-events" "7.1.1" - "@storybook/global" "^5.0.0" - qs "^6.10.0" - telejson "^7.0.3" - tiny-invariant "^1.3.1" - -"@storybook/channels@7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.2.1.tgz#06e5f3ea5134bceb64110d36ba4f2eda5855be73" - integrity sha512-3ZogzjwlFG+oarwnI7TTvWvHVOUtJbjrgZkM5QuLMlxNzIR1XuBY8f01yf4K8+VpdNy9DY+7Q/j6tBThfwYvpA== +async@2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/async/-/async-2.6.2.tgz" + integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== dependencies: - "@storybook/client-logger" "7.2.1" - "@storybook/core-events" "7.2.1" - "@storybook/global" "^5.0.0" - qs "^6.10.0" - telejson "^7.0.3" - tiny-invariant "^1.3.1" + lodash "^4.17.11" -"@storybook/cli@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@storybook/cli/-/cli-7.1.1.tgz#ca3d4559be81209cd6e4f1e7eea8f369053c6d31" - integrity sha512-xQU0GBIRQpwlvTnzOvDo05H5aH660DaZ9JlXd8ThPkEicoTvhkH0oQVEMYaWKChp5Ok7Wu8+kB7fzgUSOGzj+Q== - dependencies: - "@babel/core" "^7.22.9" - "@babel/preset-env" "^7.22.9" - "@babel/types" "^7.22.5" - "@ndelangen/get-tarball" "^3.0.7" - "@storybook/codemod" "7.1.1" - "@storybook/core-common" "7.1.1" - "@storybook/core-server" "7.1.1" - "@storybook/csf-tools" "7.1.1" - "@storybook/node-logger" "7.1.1" - "@storybook/telemetry" "7.1.1" - "@storybook/types" "7.1.1" - "@types/semver" "^7.3.4" - "@yarnpkg/fslib" "2.10.3" - "@yarnpkg/libzip" "2.3.0" - chalk "^4.1.0" - commander "^6.2.1" - cross-spawn "^7.0.3" - detect-indent "^6.1.0" - envinfo "^7.7.3" - execa "^5.0.0" - express "^4.17.3" - find-up "^5.0.0" - fs-extra "^11.1.0" - get-npm-tarball-url "^2.0.3" - get-port "^5.1.1" - giget "^1.0.0" - globby "^11.0.2" - jscodeshift "^0.14.0" - leven "^3.1.0" - ora "^5.4.1" - prettier "^2.8.0" - prompts "^2.4.0" - puppeteer-core "^2.1.1" - read-pkg-up "^7.0.1" - semver "^7.3.7" - simple-update-notifier "^1.0.0" - strip-json-comments "^3.0.1" - tempy "^1.0.1" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" - -"@storybook/client-api@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-7.0.18.tgz#28a4e935949c83ece94a20cee2146b11b33c05d9" - integrity sha512-EdgE4om6nXZf/sDZcVMGMeKv4BPX+P3EKUfMHCHjlrbbeL0eeY8Ynf+u/wYrIYZPUodS8TEV5XchHVB8F7rLBQ== - dependencies: - "@storybook/client-logger" "7.0.18" - "@storybook/preview-api" "7.0.18" - -"@storybook/client-logger@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.0.18.tgz#396858b53d0aa9485f173083ea27b7c1c48fa2dd" - integrity sha512-uKgFdVedYoRDZBVrE1IBdWNHDFln1IxWEeI+7ZiNSQwREG9swHpU5Fa8DceclM/oLjJRuzG1jFzv+XZY8894+Q== - dependencies: - "@storybook/global" "^5.0.0" - -"@storybook/client-logger@7.0.24": - version "7.0.24" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.0.24.tgz#7be57ce1f90e65c6e9da7a88ed9ca7c5ce3c6536" - integrity sha512-4zRTb+QQ1hWaRqad/UufZNRfi2d/cf5a40My72Ct97VwjhJFE6aQ3K+hl1Xt6hh8dncDL2JK3cgziw6ElqjT0w== - dependencies: - "@storybook/global" "^5.0.0" - -"@storybook/client-logger@7.0.26": - version "7.0.26" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.0.26.tgz#26e3f45e2740952a0c14d59b80b47c815c6ab665" - integrity sha512-OMVLbgceoeuM8sWOfTX/9a4zCrH78G32hg7x8yXLZnRJ9OLaHJHzUM0Onc4MLudqVUdaKH0c8ejpBXUyIr1rJQ== - dependencies: - "@storybook/global" "^5.0.0" - -"@storybook/client-logger@7.0.27": - version "7.0.27" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.0.27.tgz#22675527cca26e5f275157b8bbc72fd102856177" - integrity sha512-t4F0ByHP4MNiyVI5sgqtxSccr4RmPAqTr/h6CeGLJKWzUYobBV5hwKUd/qlfwdjev2u9C7AdLFPBKVcHX5PteA== - dependencies: - "@storybook/global" "^5.0.0" - -"@storybook/client-logger@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.1.1.tgz#62b7760ab05977f831f1831d5842ab4a4501c585" - integrity sha512-R0bdVjzJ5CwLNAG3XMyMZ0e9XDteBkFkTTIZJ9m+WMh/+oa2PInCpXDxoYb180UI6abrqh1jEaAsrHMC1pTKnA== - dependencies: - "@storybook/global" "^5.0.0" - -"@storybook/client-logger@7.2.1", "@storybook/client-logger@^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.2.1.tgz#6e338185e8c2d1861c0245791c8747a38b0a46e5" - integrity sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA== +async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.1: + version "2.6.4" + resolved "https://registry.npmjs.org/async/-/async-2.6.4.tgz" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== dependencies: - "@storybook/global" "^5.0.0" - -"@storybook/codemod@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@storybook/codemod/-/codemod-7.1.1.tgz#3fe3c80d44eb967770bf78d3f34a2b2f3da185e9" - integrity sha512-QB4MoeFXA4QsX0LuwjHoTVqsX7krRXmqfwSWIQMB8/qsAfyBp/jiG2xWmwa2agKwtlYvZzkvGdCjAOmK4SUSHQ== - dependencies: - "@babel/core" "^7.22.9" - "@babel/preset-env" "^7.22.9" - "@babel/types" "^7.22.5" - "@storybook/csf" "^0.1.0" - "@storybook/csf-tools" "7.1.1" - "@storybook/node-logger" "7.1.1" - "@storybook/types" "7.1.1" - "@types/cross-spawn" "^6.0.2" - cross-spawn "^7.0.3" - globby "^11.0.2" - jscodeshift "^0.14.0" - lodash "^4.17.21" - prettier "^2.8.0" - recast "^0.23.1" - -"@storybook/components@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-7.0.18.tgz#74ab115342e576b7644c83667a9daef5758fc3c8" - integrity sha512-Jn1CbF9UAKt8BVaZtuhmthpcZ02VMaCFXR0ISfDXCpiMKnylmpP0+WfXcoKLzz6yS+EW8EW5S9+Qq8xgQY8H7A== - dependencies: - "@storybook/client-logger" "7.0.18" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/theming" "7.0.18" - "@storybook/types" "7.0.18" - memoizerific "^1.11.3" - use-resize-observer "^9.1.0" - util-deprecate "^1.0.2" - -"@storybook/components@7.0.26": - version "7.0.26" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-7.0.26.tgz#c0f6e3c7431018712485c68e560182cc06b343bd" - integrity sha512-n0TVWEF4Bc9JAyEIaN0PqwglbaYYRcPVG7ka+5wgGmBiuDlWI1SXd4EXxv2u0mVibHvtkHvOn6/GaZ1vG45p6g== - dependencies: - "@storybook/client-logger" "7.0.26" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/theming" "7.0.26" - "@storybook/types" "7.0.26" - memoizerific "^1.11.3" - use-resize-observer "^9.1.0" - util-deprecate "^1.0.2" - -"@storybook/components@7.0.27", "@storybook/components@^7.0.2": - version "7.0.27" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-7.0.27.tgz#5d33aa742ce4685eafb5deac9f943fd40c32809a" - integrity sha512-utt4fA1td7QHpvuD/9dWm9UEoO5xTU3EsXk/U2fPUQzN9NEsbWKV/QubUYIpVy5iwwgUyMvqzWHM0veAriJW5A== - dependencies: - "@storybook/client-logger" "7.0.27" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/theming" "7.0.27" - "@storybook/types" "7.0.27" - memoizerific "^1.11.3" - use-resize-observer "^9.1.0" - util-deprecate "^1.0.2" - -"@storybook/core-client@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/core-client/-/core-client-7.0.18.tgz#b70b9e8f0efd2dc1eb7fd925a8615b6ef32f07aa" - integrity sha512-ueExRZx6fd9LRssgdhDJ0bL4Ir2RrbXzJz/kjIT2KgYY3l7jkhe0dpT3bOgGKjQt0f7XMFU24t/r7aDLGMB+2Q== - dependencies: - "@storybook/client-logger" "7.0.18" - "@storybook/preview-api" "7.0.18" - -"@storybook/core-common@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-7.0.18.tgz#7f897d666654cb034d5bc1a29b326a3566e634ba" - integrity sha512-HZAB1NIK/Yv0x9poyzqYcue2tx39+MAF1mbHgGy+JJZRerO2fRShgo8f8VPH9ChbFCoJ7isL5wNhgGdg9kp2kA== - dependencies: - "@storybook/node-logger" "7.0.18" - "@storybook/types" "7.0.18" - "@types/node" "^16.0.0" - "@types/pretty-hrtime" "^1.0.0" - chalk "^4.1.0" - esbuild "^0.17.0" - esbuild-register "^3.4.0" - file-system-cache "^2.0.0" - find-up "^5.0.0" - fs-extra "^11.1.0" - glob "^8.1.0" - glob-promise "^6.0.2" - handlebars "^4.7.7" - lazy-universal-dotenv "^4.0.0" - picomatch "^2.3.0" - pkg-dir "^5.0.0" - pretty-hrtime "^1.0.3" - resolve-from "^5.0.0" - ts-dedent "^2.0.0" - -"@storybook/core-common@7.0.27": - version "7.0.27" - resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-7.0.27.tgz#ffacc00fa2343df98b2c93e8697efd54acc228b7" - integrity sha512-nlHXpn3CghCwkeIffZ7/PzcraCDXNZz+cnR4L8vtgJn1n6W7y92mxfF8gkRHuiYHWHbPWRVP9M5vAmVoiNMxjw== - dependencies: - "@storybook/node-logger" "7.0.27" - "@storybook/types" "7.0.27" - "@types/node" "^16.0.0" - "@types/node-fetch" "^2.6.4" - "@types/pretty-hrtime" "^1.0.0" - chalk "^4.1.0" - esbuild "^0.17.0" - esbuild-register "^3.4.0" - file-system-cache "2.3.0" - find-up "^5.0.0" - fs-extra "^11.1.0" - glob "^8.1.0" - glob-promise "^6.0.2" - handlebars "^4.7.7" - lazy-universal-dotenv "^4.0.0" - node-fetch "^2.0.0" - picomatch "^2.3.0" - pkg-dir "^5.0.0" - pretty-hrtime "^1.0.3" - resolve-from "^5.0.0" - ts-dedent "^2.0.0" + lodash "^4.17.14" -"@storybook/core-common@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-7.1.1.tgz#da694694e264c5a82b4a8f590959e6ad3a3694f6" - integrity sha512-DO7ZS6YDITykvqMHeOWSmnsPYk2w7gka9GtO2LPbEm0f6p5kG2nohBO5+nsI3PuXpKiHXOB7vKJjwfQqxvPj5A== - dependencies: - "@storybook/node-logger" "7.1.1" - "@storybook/types" "7.1.1" - "@types/find-cache-dir" "^3.2.1" - "@types/node" "^16.0.0" - "@types/node-fetch" "^2.6.4" - "@types/pretty-hrtime" "^1.0.0" - chalk "^4.1.0" - esbuild "^0.18.0" - esbuild-register "^3.4.0" - file-system-cache "2.3.0" - find-cache-dir "^3.0.0" - find-up "^5.0.0" - fs-extra "^11.1.0" - glob "^10.0.0" - handlebars "^4.7.7" - lazy-universal-dotenv "^4.0.0" - node-fetch "^2.0.0" - picomatch "^2.3.0" - pkg-dir "^5.0.0" - pretty-hrtime "^1.0.3" - resolve-from "^5.0.0" - ts-dedent "^2.0.0" +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -"@storybook/core-events@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.0.18.tgz#429e0b092c645bd283adb4836ac0a945e813f085" - integrity sha512-7gxHBQDezdKOeq/u1LL80Bwjfcwsv7XOS3yWQElcgqp+gLaYB6OwwgtkCB2yV6a6l4nep9IdPWE8G3TxIzn9xw== +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -"@storybook/core-events@7.0.24": - version "7.0.24" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.0.24.tgz#3fa4b2b3af64a86525b4cf07f49a7410125ef810" - integrity sha512-xkf/rihCkhqMeh5EA8lVp90/mzbb2gcg6I3oeFWw2hognVcTnPXg6llhWdU4Spqd0cals7GEFmQugIILCmH8GA== +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -"@storybook/core-events@7.0.26": - version "7.0.26" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.0.26.tgz#830c2fbc17e8c358252301e5a6efe10119aa3ef5" - integrity sha512-ckZszphEAYs9wp8tPVhayEMzk8JxCiQfzbq0S45sbdqdTrl40PmsOjv5iPNaUYElI/Stfz+v4gDCEUfOsxyC+w== +atomic-sleep@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz" + integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== -"@storybook/core-events@7.0.27", "@storybook/core-events@^7.0.2": - version "7.0.27" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.0.27.tgz#94c7f8877998a25e8d14bafa51839fedfa442769" - integrity sha512-sNnqgO5i5DUIqeQfNbr987KWvAciMN9FmMBuYdKjVFMqWFyr44HTgnhfKwZZKl+VMDYkHA9Do7UGSYZIKy0P4g== +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -"@storybook/core-events@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.1.1.tgz#c2c30085bd254a27cdbd266a8e7755876abf9361" - integrity sha512-P5iI4zvCJo85de/sghglEHFK/GGkWAQQKzRFrz9kbVBX5LNaosfD7IYHIz/6ZWNPzxWR+RBOKcrRUfcArL4Njg== +aws-sign2@~0.7.0: + 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== -"@storybook/core-events@7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.2.1.tgz#05121c9bac6ac3989acc05b49116107331e0c398" - integrity sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg== +aws4@^1.8.0: + version "1.12.0" + resolved "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== -"@storybook/core-server@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-7.1.1.tgz#5e4d9a274bde32eb483d609fe7005382842633db" - integrity sha512-IfrkdcYwVoP4bltBTx8Yr1e++UAfICV8IYCgW8VFW26Uvl22biCVWwliE35iTYpUmHJgn+U489hCnEdGpr2CWw== - dependencies: - "@aw-web-design/x-default-browser" "1.4.126" - "@discoveryjs/json-ext" "^0.5.3" - "@storybook/builder-manager" "7.1.1" - "@storybook/channels" "7.1.1" - "@storybook/core-common" "7.1.1" - "@storybook/core-events" "7.1.1" - "@storybook/csf" "^0.1.0" - "@storybook/csf-tools" "7.1.1" - "@storybook/docs-mdx" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/manager" "7.1.1" - "@storybook/node-logger" "7.1.1" - "@storybook/preview-api" "7.1.1" - "@storybook/telemetry" "7.1.1" - "@storybook/types" "7.1.1" - "@types/detect-port" "^1.3.0" - "@types/node" "^16.0.0" - "@types/pretty-hrtime" "^1.0.0" - "@types/semver" "^7.3.4" - better-opn "^3.0.2" - chalk "^4.1.0" - cli-table3 "^0.6.1" - compression "^1.7.4" - detect-port "^1.3.0" - express "^4.17.3" - fs-extra "^11.1.0" - globby "^11.0.2" - ip "^2.0.0" - lodash "^4.17.21" - open "^8.4.0" - pretty-hrtime "^1.0.3" - prompts "^2.4.0" - read-pkg-up "^7.0.1" - semver "^7.3.7" - serve-favicon "^2.5.0" - telejson "^7.0.3" - tiny-invariant "^1.3.1" - ts-dedent "^2.0.0" - util "^0.12.4" - util-deprecate "^1.0.2" - watchpack "^2.2.0" - ws "^8.2.3" - -"@storybook/core-webpack@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/core-webpack/-/core-webpack-7.0.18.tgz#b5134509ed6f33fe4815df561ff8c0f4b60c9ef3" - integrity sha512-U5e1r8cgZZzd/Lw9StIrACMVINCvucKm8ZfcFpPh0bjEv4+2qjo9tL3dLNh4OwKznvbzSE6pEO6cBjaphjTe1A== - dependencies: - "@storybook/core-common" "7.0.18" - "@storybook/node-logger" "7.0.18" - "@storybook/types" "7.0.18" - "@types/node" "^16.0.0" - ts-dedent "^2.0.0" - -"@storybook/csf-plugin@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-7.0.18.tgz#d601817ee8ee7eaf011a7e4a5d821356f5d1907e" - integrity sha512-Cr/Qr4/H4JIYgbbmDjQIYuqjp6nOaZga73R3KZcuClk27B90sI2ADegMYvORgbFgSkwweNQjgak6hLoOyogAhw== - dependencies: - "@storybook/csf-tools" "7.0.18" - unplugin "^0.10.2" - -"@storybook/csf-tools@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-7.0.18.tgz#f61810f683b4eaa855a4a1ff876628835e82e965" - integrity sha512-0IJ2qdrxleTl67FUzsEvGcy96CY0OKyERE33tAsLNbvWcabdJKpLHP+rJwbsCw4z6IlS+kkmEffeFf5qRPTwkQ== - dependencies: - "@babel/generator" "~7.21.1" - "@babel/parser" "~7.21.2" - "@babel/traverse" "~7.21.2" - "@babel/types" "~7.21.2" - "@storybook/csf" "^0.1.0" - "@storybook/types" "7.0.18" - fs-extra "^11.1.0" - recast "^0.23.1" - ts-dedent "^2.0.0" - -"@storybook/csf-tools@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-7.1.1.tgz#63d03742d13e51bbece46e6af19da1313cfd2315" - integrity sha512-IdDW+NsTIxqv7BjeFaTonvX0Ac5HzzNiKvGkhydXrpaz7kJX4g0T96xpR+RhbEtPfQ0AcpiHnW0kMPx9YLJRew== - dependencies: - "@babel/generator" "^7.22.9" - "@babel/parser" "^7.22.7" - "@babel/traverse" "^7.22.8" - "@babel/types" "^7.22.5" - "@storybook/csf" "^0.1.0" - "@storybook/types" "7.1.1" - fs-extra "^11.1.0" - recast "^0.23.1" - ts-dedent "^2.0.0" - -"@storybook/csf@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.0.1.tgz#95901507dc02f0bc6f9ac8ee1983e2fc5bb98ce6" - integrity sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw== +axios@^0.21.1: + version "0.21.4" + resolved "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== dependencies: - lodash "^4.17.15" + follow-redirects "^1.14.0" -"@storybook/csf@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.1.1.tgz#abccc8c3e49aed0a6a7e87beb0d1c262b1921c06" - integrity sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg== +babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz" + integrity sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g== dependencies: - type-fest "^2.19.0" - -"@storybook/docs-mdx@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@storybook/docs-mdx/-/docs-mdx-0.1.0.tgz#33ba0e39d1461caf048b57db354b2cc410705316" - integrity sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg== - -"@storybook/docs-tools@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/docs-tools/-/docs-tools-7.0.18.tgz#ff1ed8f9e354e310af6872cb742a9a3a5fcb80ca" - integrity sha512-H95dW2DquGQ75ZVrFjvznPdCxT0eW6esDnemzLJB61KitcYZrWRavfrZzFtUcpzIa84OgY5pllFYt636v11LHQ== - dependencies: - "@babel/core" "^7.12.10" - "@storybook/core-common" "7.0.18" - "@storybook/preview-api" "7.0.18" - "@storybook/types" "7.0.18" - "@types/doctrine" "^0.0.3" - doctrine "^3.0.0" - lodash "^4.17.21" - -"@storybook/global@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@storybook/global/-/global-5.0.0.tgz#b793d34b94f572c1d7d9e0f44fac4e0dbc9572ed" - integrity sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ== - -"@storybook/instrumenter@7.0.27", "@storybook/instrumenter@^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0": - version "7.0.27" - resolved "https://registry.yarnpkg.com/@storybook/instrumenter/-/instrumenter-7.0.27.tgz#81376198efb764bf618c4d9d292a1187281f0be1" - integrity sha512-LR1Dm90lC5nurZQ5ZIbNa/8b+0AsBOQkEgnK/BQkheGMdlmrsh/i3dDqscOPZBPTLxZoYhhYWh27fDKHnT8bhw== - dependencies: - "@storybook/channels" "7.0.27" - "@storybook/client-logger" "7.0.27" - "@storybook/core-events" "7.0.27" - "@storybook/global" "^5.0.0" - "@storybook/preview-api" "7.0.27" - -"@storybook/manager-api@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-7.0.18.tgz#9e0e011df04271b0ed7216a22f9c965e3b7ac4b9" - integrity sha512-anQkm09twL96YkKGXHa+LI0+yMaY6Jxs1lRaetHdMlIqN4VHBHhizHaMgtGfH6xCTuO3WdrKTN7cZii5RH7PBQ== - dependencies: - "@storybook/channels" "7.0.18" - "@storybook/client-logger" "7.0.18" - "@storybook/core-events" "7.0.18" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/router" "7.0.18" - "@storybook/theming" "7.0.18" - "@storybook/types" "7.0.18" - dequal "^2.0.2" - lodash "^4.17.21" - memoizerific "^1.11.3" - semver "^7.3.7" - store2 "^2.14.2" - telejson "^7.0.3" - ts-dedent "^2.0.0" - -"@storybook/manager-api@7.0.24": - version "7.0.24" - resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-7.0.24.tgz#29a357a35c661a0e86567ef6f0f8afeca3b3bced" - integrity sha512-cBpgDWq8reFgyrv4fBZlZJQyWYb9cDW0LDe476rWn/29uXNvYMNsHRwveLNgSA8Oy1NdyQCgf4ZgcYvY3wpvMA== - dependencies: - "@storybook/channels" "7.0.24" - "@storybook/client-logger" "7.0.24" - "@storybook/core-events" "7.0.24" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/router" "7.0.24" - "@storybook/theming" "7.0.24" - "@storybook/types" "7.0.24" - dequal "^2.0.2" - lodash "^4.17.21" - memoizerific "^1.11.3" - semver "^7.3.7" - store2 "^2.14.2" - telejson "^7.0.3" - ts-dedent "^2.0.0" - -"@storybook/manager-api@7.0.26": - version "7.0.26" - resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-7.0.26.tgz#28b5528726d918d13c5138c002f1966bfb6eb84b" - integrity sha512-/2p6lU7r30qMXob/UnzRL9yq7XjoE+YQXv1KhrcePfMBARbelYw9RYhYT/AkXGtb9/Fa95uG3lNvoDLC1IQfMQ== - dependencies: - "@storybook/channels" "7.0.26" - "@storybook/client-logger" "7.0.26" - "@storybook/core-events" "7.0.26" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/router" "7.0.26" - "@storybook/theming" "7.0.26" - "@storybook/types" "7.0.26" - dequal "^2.0.2" - lodash "^4.17.21" - memoizerific "^1.11.3" - semver "^7.3.7" - store2 "^2.14.2" - telejson "^7.0.3" - ts-dedent "^2.0.0" - -"@storybook/manager-api@7.0.27": - version "7.0.27" - resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-7.0.27.tgz#270e560e791f4275882e844af228ba78450b492e" - integrity sha512-CVgy4ti8h0Xc4nxiPujTzhMANl9wmfLGvSA9ZX6YUBbKFV4UOL4oj105iHPW7Ngse6Qoqj0rnhkOSmLczXT03w== - dependencies: - "@storybook/channels" "7.0.27" - "@storybook/client-logger" "7.0.27" - "@storybook/core-events" "7.0.27" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/router" "7.0.27" - "@storybook/theming" "7.0.27" - "@storybook/types" "7.0.27" - dequal "^2.0.2" - lodash "^4.17.21" - memoizerific "^1.11.3" - semver "^7.3.7" - store2 "^2.14.2" - telejson "^7.0.3" - ts-dedent "^2.0.0" - -"@storybook/manager-api@7.2.1", "@storybook/manager-api@^7.0.2": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-7.2.1.tgz#85d6dc521601111a68b942405f425cad1484b0b4" - integrity sha512-jRuYTrsNKq+g1u9kbQRvBsRKVITOdiNu9c633MeCH73oBVo8WNnZF/tW/ER86oTnru0H7EmRdgz3v9ft/wS2GQ== - dependencies: - "@storybook/channels" "7.2.1" - "@storybook/client-logger" "7.2.1" - "@storybook/core-events" "7.2.1" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/router" "7.2.1" - "@storybook/theming" "7.2.1" - "@storybook/types" "7.2.1" - dequal "^2.0.2" - lodash "^4.17.21" - memoizerific "^1.11.3" - semver "^7.3.7" - store2 "^2.14.2" - telejson "^7.0.3" - ts-dedent "^2.0.0" - -"@storybook/manager@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-7.1.1.tgz#e8f0a56afc3cd6c24e045e1f04c463cefc9c46e2" - integrity sha512-kRW9sPuJWsEi8Swcyt9rYwdfvA0rqKEuPBCCbrmmjyIwZR60IYg2KHXcF7q4qdkvts2xee5YTbgHcdfc0iIPSg== - -"@storybook/mdx2-csf@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@storybook/mdx2-csf/-/mdx2-csf-1.1.0.tgz#97f6df04d0bf616991cc1005a073ac004a7281e5" - integrity sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw== + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" -"@storybook/node-logger@7.0.18", "@storybook/node-logger@^7.0.7": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-7.0.18.tgz#efed2e8b79964e7d999b64b0e99fa79f9356904e" - integrity sha512-cIeKEBvELtoVP/5UeQ01GJWZ7wM69/9Q+R5uOtNQBlwWFcCD6AVFWMRqq7ObMvdJG/okhXSF+sDetb+BF3zvdw== +babel-core@^6.0.14, babel-core@^6.26.0: + version "6.26.3" + resolved "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz" + integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== dependencies: - "@types/npmlog" "^4.1.2" - chalk "^4.1.0" - npmlog "^5.0.1" - pretty-hrtime "^1.0.3" + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" -"@storybook/node-logger@7.0.27": - version "7.0.27" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-7.0.27.tgz#e77f4ae532f212818cd39293493edc53987d8e31" - integrity sha512-idoK+sDaTTPuxHcKhxn+l27Omhxvr1TQ0ALw1h8ehyMbW8TZBdWvYLYfmiWeI3+NQtmeudzxhKSVYTmAY4qDJw== +babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz" + integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== dependencies: - "@types/npmlog" "^4.1.2" - chalk "^4.1.0" - npmlog "^5.0.1" - pretty-hrtime "^1.0.3" - -"@storybook/node-logger@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-7.1.1.tgz#d305960c10fd591bad37b52b429e72caafa0b028" - integrity sha512-gnAuNM+wNoOcGnUM6hLsYV0lwUgRI39Ep/Pp3VF1oXZAthEyrQRm7ImbeAdt93ObPc9DZgqTx9OI8QnErZuJiA== + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" -"@storybook/node-logger@^6.1.14": - version "6.5.16" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-6.5.16.tgz#d57fd6204c2abfbc297551d98ad5475dd73207cc" - integrity sha512-YjhBKrclQtjhqFNSO+BZK+RXOx6EQypAELJKoLFaawg331e8VUfvUuRCNB3fcEWp8G9oH13PQQte0OTjLyyOYg== +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz" + integrity sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q== dependencies: - "@types/npmlog" "^4.1.2" - chalk "^4.1.0" - core-js "^3.8.2" - npmlog "^5.0.1" - pretty-hrtime "^1.0.3" - -"@storybook/postinstall@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/postinstall/-/postinstall-7.0.18.tgz#348711fea8ccf66255904811fa33316d0f54445e" - integrity sha512-ObIwAK2UiYhXN/7UifISQgBoH5jnyxh6T8kvCw83YhC78SDOPNgIGjToJECizJ7iubtqAWtCfCT5TrGEpyLGbg== - -"@storybook/preset-react-webpack@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/preset-react-webpack/-/preset-react-webpack-7.0.18.tgz#fbdd707af6b7c2b63b4db97946102f09c18f7aaa" - integrity sha512-ISqq+DWzxHrQUHt83+tq7TKQETQcwekUnNYKgFzN8dVgZWqRS+/PqX+7c07Qa3h/QIWgMjPA6SPN4Z12tV4qpA== - dependencies: - "@babel/preset-flow" "^7.18.6" - "@babel/preset-react" "^7.18.6" - "@pmmmwh/react-refresh-webpack-plugin" "^0.5.5" - "@storybook/core-webpack" "7.0.18" - "@storybook/docs-tools" "7.0.18" - "@storybook/node-logger" "7.0.18" - "@storybook/react" "7.0.18" - "@storybook/react-docgen-typescript-plugin" "1.0.6--canary.9.0c3f3b7.0" - "@types/node" "^16.0.0" - "@types/semver" "^7.3.4" - babel-plugin-add-react-displayname "^0.0.5" - babel-plugin-react-docgen "^4.2.1" - fs-extra "^11.1.0" - react-refresh "^0.11.0" - semver "^7.3.7" - webpack "5" - -"@storybook/preview-api@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-7.0.18.tgz#ef012f984a2c0b9395b1b75b4f6e25643912c67d" - integrity sha512-xxtC0gPGMn/DbwvS4ZuJaBwfFNsjUCf0yLYHFrNe6fxncbvcLZ550RuyUwYuIRfsiKrlgfa3QmmCa4JM/JesHQ== - dependencies: - "@storybook/channel-postmessage" "7.0.18" - "@storybook/channels" "7.0.18" - "@storybook/client-logger" "7.0.18" - "@storybook/core-events" "7.0.18" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/types" "7.0.18" - "@types/qs" "^6.9.5" - dequal "^2.0.2" - lodash "^4.17.21" - memoizerific "^1.11.3" - qs "^6.10.0" - synchronous-promise "^2.0.15" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" - -"@storybook/preview-api@7.0.24": - version "7.0.24" - resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-7.0.24.tgz#93634c060aa43bb10fb233f28ae83b7d74b98aad" - integrity sha512-psycU07tuB5nyJvfAJiDN/9e8cjOdJ+5lrCSYC3vPzH86LxADDIN0/8xFb1CaQWcXZsADEFJGpHKWbRhjym5ew== - dependencies: - "@storybook/channel-postmessage" "7.0.24" - "@storybook/channels" "7.0.24" - "@storybook/client-logger" "7.0.24" - "@storybook/core-events" "7.0.24" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/types" "7.0.24" - "@types/qs" "^6.9.5" - dequal "^2.0.2" - lodash "^4.17.21" - memoizerific "^1.11.3" - qs "^6.10.0" - synchronous-promise "^2.0.15" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" - -"@storybook/preview-api@7.0.26": - version "7.0.26" - resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-7.0.26.tgz#60174bbbd729514bc6e4e57469d2edfc793d9367" - integrity sha512-uJwA4errBOZOoDF2T7Z2oLqjAYvvjMr31sTsOoT0niJtWr29RQp8yS6VoSrsuh+y3FAVqBEl5pS+DX3IGLjvxw== - dependencies: - "@storybook/channel-postmessage" "7.0.26" - "@storybook/channels" "7.0.26" - "@storybook/client-logger" "7.0.26" - "@storybook/core-events" "7.0.26" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/types" "7.0.26" - "@types/qs" "^6.9.5" - dequal "^2.0.2" - lodash "^4.17.21" - memoizerific "^1.11.3" - qs "^6.10.0" - synchronous-promise "^2.0.15" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" - -"@storybook/preview-api@7.0.27", "@storybook/preview-api@^7.0.2": - version "7.0.27" - resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-7.0.27.tgz#6e414a95ecca61fe817d67433588d06301d5c5e2" - integrity sha512-FhauTuLzRsaIaEORQP5lxYrzwRgZPMnfYEPnzduyGgPiY6VZkS6wIiO6pKzat83V1L4J7m5aZhTB3HtvTwPhvg== - dependencies: - "@storybook/channel-postmessage" "7.0.27" - "@storybook/channels" "7.0.27" - "@storybook/client-logger" "7.0.27" - "@storybook/core-events" "7.0.27" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/types" "7.0.27" - "@types/qs" "^6.9.5" - dequal "^2.0.2" - lodash "^4.17.21" - memoizerific "^1.11.3" - qs "^6.10.0" - synchronous-promise "^2.0.15" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"@storybook/preview-api@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-7.1.1.tgz#5093b5a05ec75394193b05a45358193c0dff5e86" - integrity sha512-uI8TVuoFfg3EBdaKdRVUa17JfGdmK78JI3+byLZLkzl6nR+q846BWHgi8eJmU8MHmO5CFaqT2kts/e8T34JDgw== - dependencies: - "@storybook/channel-postmessage" "7.1.1" - "@storybook/channels" "7.1.1" - "@storybook/client-logger" "7.1.1" - "@storybook/core-events" "7.1.1" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/types" "7.1.1" - "@types/qs" "^6.9.5" - dequal "^2.0.2" - lodash "^4.17.21" - memoizerific "^1.11.3" - qs "^6.10.0" - synchronous-promise "^2.0.15" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" - -"@storybook/preview@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/preview/-/preview-7.0.18.tgz#8f8ac8b1bce674d52c1f9640073fb93b786e2f26" - integrity sha512-L53p2eo8G12U6tp7hD3mk5tdWFXLvdEyV9e7a1x9bw1LfH15K/bp8lO6U/W1kkpse7+rqWBqoTjJC1Ktm5Sxog== - -"@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0": - version "1.0.6--canary.9.0c3f3b7.0" - resolved "https://registry.yarnpkg.com/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.6--canary.9.0c3f3b7.0.tgz#7f10f3c641f32e4513a8b6ffb5036933e7059534" - integrity sha512-KUqXC3oa9JuQ0kZJLBhVdS4lOneKTOopnNBK4tUAgoxWQ3u/IjzdueZjFr7gyBrXMoU6duutk3RQR9u8ZpYJ4Q== - dependencies: - debug "^4.1.1" - endent "^2.0.1" - find-cache-dir "^3.3.1" - flat-cache "^3.0.4" - micromatch "^4.0.2" - react-docgen-typescript "^2.2.2" - tslib "^2.0.0" - -"@storybook/react-dom-shim@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-7.0.18.tgz#d2ac94c50c48b92417338823c8a7eabace308771" - integrity sha512-O1FRypR8q1katjbznnxI+NtALd2gaWa7KnTwbIDf+ddZltXHMZ8xMiEGEtAMrfXlIuqIr9UvmLRfKZC/ysuA+g== - -"@storybook/react-webpack5@^7.0.15": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/react-webpack5/-/react-webpack5-7.0.18.tgz#95c0b27fa1ad5a19ed4bdc884193b4f665948c8d" - integrity sha512-FS25UMhXhbJ203XxW6YOWZCeMLCKBLu+X3W2r9JgVXfFdBEVsx3Aldsy3yJRqi1MGIqC6hLy94v79lJldKs7Ig== - dependencies: - "@storybook/builder-webpack5" "7.0.18" - "@storybook/preset-react-webpack" "7.0.18" - "@storybook/react" "7.0.18" - "@types/node" "^16.0.0" - -"@storybook/react@7.0.18", "@storybook/react@^7.0.15": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-7.0.18.tgz#d6f4919e22e169062e794b8a742f1b1978abf0ab" - integrity sha512-lumUbHYeuL3qa4SZR9K2YC4UIt1hwW19GuI/6f2HEV5gR9QHHSJHg9HD9pjcxv4fQaiG81ACZ0Sg6lyUkcJvuQ== - dependencies: - "@storybook/client-logger" "7.0.18" - "@storybook/core-client" "7.0.18" - "@storybook/docs-tools" "7.0.18" - "@storybook/global" "^5.0.0" - "@storybook/preview-api" "7.0.18" - "@storybook/react-dom-shim" "7.0.18" - "@storybook/types" "7.0.18" - "@types/escodegen" "^0.0.6" - "@types/estree" "^0.0.51" - "@types/node" "^16.0.0" - acorn "^7.4.1" - acorn-jsx "^5.3.1" - acorn-walk "^7.2.0" - escodegen "^2.0.0" - html-tags "^3.1.0" - lodash "^4.17.21" - prop-types "^15.7.2" - react-element-to-jsx-string "^15.0.0" - ts-dedent "^2.0.0" - type-fest "^2.19.0" - util-deprecate "^1.0.2" - -"@storybook/router@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-7.0.18.tgz#c82146a6d4894c6d3d55b80a447010bebf192804" - integrity sha512-Mue4s/BnKgdYcsiW9yuvW3qL9k3AgYn5HIhnkBExAteyiUGdAca4IJFhArmGgFktgeLc4ecBQ7sgaCljApnbgg== - dependencies: - "@storybook/client-logger" "7.0.18" - memoizerific "^1.11.3" - qs "^6.10.0" - -"@storybook/router@7.0.24": - version "7.0.24" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-7.0.24.tgz#510b91d161d822f276300fded7b254ed3e2594f3" - integrity sha512-SRCV+srCZUbko/V0phVN8jY8ilrxQWWAY/gegwNlIYaNqLJSyYqIj739VDmX+deXl6rOEpFLZreClVXWiDU9+w== - dependencies: - "@storybook/client-logger" "7.0.24" - memoizerific "^1.11.3" - qs "^6.10.0" - -"@storybook/router@7.0.26": - version "7.0.26" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-7.0.26.tgz#397be401febe130baf93a2663324cb097e8cf7f2" - integrity sha512-OfLittKxdahsgKsmQFoBX9q5tN/aqKMhhc/WbW88UPAQCUcEuazB0CwM+LI9YXY+n5L+vpLI4lGlgaqvPy4hHw== - dependencies: - "@storybook/client-logger" "7.0.26" - memoizerific "^1.11.3" - qs "^6.10.0" - -"@storybook/router@7.0.27": - version "7.0.27" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-7.0.27.tgz#c7beffb1eb40fb525d9fbeabcac2ca25e8259f2a" - integrity sha512-Onflm2mERipuYB3SR+0CFAZKPbDiLsJdgX09BP8bGrg7dVYwiGkL5dc9H/CP0KPxtC7kXT8x1Zc+yx0Y0kWiJw== - dependencies: - "@storybook/client-logger" "7.0.27" - memoizerific "^1.11.3" - qs "^6.10.0" - -"@storybook/router@7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-7.2.1.tgz#6c3ff9c9fd7e292b9a1328fc0f08223aee2150df" - integrity sha512-9Cn5boUS+7yhrKlSy1kt7ruNs/znk3555kclBD6+uuhH/dD84feGeiGYE4GUuLmcKrDFtNF185/Gr1huJ556tA== +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz" + integrity sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ== dependencies: - "@storybook/client-logger" "7.2.1" - memoizerific "^1.11.3" - qs "^6.10.0" + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"@storybook/store@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/store/-/store-7.0.18.tgz#3b9dce8a3fa6ceea5b650254ba284ef6c8bb4740" - integrity sha512-rvQOG7R1+r77Y9jwNqQB3EKW6D5kzIGoxqzFHd1oDqeY5+vqPXHC/J5iDrl8TZ4GES7ZMAHpkTySbY+rRQK7Ng== +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz" + integrity sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA== dependencies: - "@storybook/client-logger" "7.0.18" - "@storybook/preview-api" "7.0.18" + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" -"@storybook/telemetry@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-7.1.1.tgz#3061582dceeddeaba3daead5e8f2d4ddcd8f675a" - integrity sha512-7bQBfphEHJA1kHyPVVvrRXRet57JhyRD4uxoWYfp4jkSt2wHzAAdGU8Iz7U+ozv4TG7AA1gb1Uh5BS4nCiijsw== +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz" + integrity sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ== dependencies: - "@storybook/client-logger" "7.1.1" - "@storybook/core-common" "7.1.1" - "@storybook/csf-tools" "7.1.1" - chalk "^4.1.0" - detect-package-manager "^2.0.1" - fetch-retry "^5.0.2" - fs-extra "^11.1.0" - read-pkg-up "^7.0.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"@storybook/testing-library@^0.0.14-next.2": - version "0.0.14-next.2" - resolved "https://registry.yarnpkg.com/@storybook/testing-library/-/testing-library-0.0.14-next.2.tgz#458e6c7623118e24826ba73b80db0a887f3f57e8" - integrity sha512-i/SLSGm0o978ELok/SB4Qg1sZ3zr+KuuCkzyFqcCD0r/yf+bG35aQGkFqqxfSAdDxuQom0NO02FE+qys5Eapdg== - dependencies: - "@storybook/client-logger" "^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0" - "@storybook/instrumenter" "^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0" - "@testing-library/dom" "^8.3.0" - "@testing-library/user-event" "^13.2.1" - ts-dedent "^2.2.0" - -"@storybook/theming@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-7.0.18.tgz#566f5f42c9324b734f8aa9be4d16221278054734" - integrity sha512-P1gMKa/mKQHIMq0sxBIwTzAcF6v/6hrc62YmkuV62vXu+8zNV2YWbRwywqm3Q6faZEadmb/bL9+z8whaKhCL/g== - dependencies: - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" - "@storybook/client-logger" "7.0.18" - "@storybook/global" "^5.0.0" - memoizerific "^1.11.3" - -"@storybook/theming@7.0.24": - version "7.0.24" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-7.0.24.tgz#5e74f20bda1cdb9ba2a4a0c7a96ca014cdee5532" - integrity sha512-CMeCCfqffJ/D5rBl1HpAM/e5Vw0h7ucT+CLzP0ALtLrguz9ZzOiIZYgMj17KpfvWqje7HT+DwEtNkSrnJ01FNQ== - dependencies: - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" - "@storybook/client-logger" "7.0.24" - "@storybook/global" "^5.0.0" - memoizerific "^1.11.3" - -"@storybook/theming@7.0.26": - version "7.0.26" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-7.0.26.tgz#b537f92f6168d1228bd4ccc1c3c38dac1c6a02d3" - integrity sha512-7hxpT2yq+xZonSsEZHOF+HDHx6GE0qlys3EQ63K9XCJ8VeBnq9M5zHvMK9iXl90093ufxpvWsfDWgtja2zvmTw== - dependencies: - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" - "@storybook/client-logger" "7.0.26" - "@storybook/global" "^5.0.0" - memoizerific "^1.11.3" - -"@storybook/theming@7.0.27", "@storybook/theming@^7.0.2": - version "7.0.27" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-7.0.27.tgz#62d6f4af8e8e2089c0b84e4d47a1a4ec3ba06fb3" - integrity sha512-l2Lc8xX8QXQO8c9gpzdUUJ+0YqLoh8w74I7lzxiife0TzEQrhWD9aRJAVimm8Vzfq5x3CNeJNFHc5PcG8ypQig== - dependencies: - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" - "@storybook/client-logger" "7.0.27" - "@storybook/global" "^5.0.0" - memoizerific "^1.11.3" - -"@storybook/theming@7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-7.2.1.tgz#55a1c27ae3a2c1594126f80853422b9cf4d64bf0" - integrity sha512-cfnNCLvKmzxjmoYKfLl7Q64gSTouLvd23CtvBAOlWcRYnMJ9v4/7A2tK3xQyVRlJYh9OuXiHFLL8AXbN58Hkzw== - dependencies: - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" - "@storybook/client-logger" "7.2.1" - "@storybook/global" "^5.0.0" - memoizerific "^1.11.3" - -"@storybook/types@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.0.18.tgz#9418da288db3a1258996aab17fd49ca4eb810b7a" - integrity sha512-qPop2CbvmX42/BX29YT9jIzW2TlMcMjAE+KCpcKLBiD1oT5DJ1fhMzpe6RW9HkMegkBxjWx54iamN4oHM/pwcQ== - dependencies: - "@storybook/channels" "7.0.18" - "@types/babel__core" "^7.0.0" - "@types/express" "^4.7.0" - file-system-cache "^2.0.0" - -"@storybook/types@7.0.24": - version "7.0.24" - resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.0.24.tgz#22b2f6658f9a091ff584e1a0643ee1ea9a54ed39" - integrity sha512-SZh/XBHP1TT5bmEk0W52nT0v6fUnYwmZVls3da5noutdgOAiwL7TANtl41XrNjG+UDr8x0OE3PVVJi+LhwUaNA== - dependencies: - "@storybook/channels" "7.0.24" - "@types/babel__core" "^7.0.0" - "@types/express" "^4.7.0" - file-system-cache "2.3.0" - -"@storybook/types@7.0.26": - version "7.0.26" - resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.0.26.tgz#83be03bcd5ab4cfdac154a25731058466d055ff3" - integrity sha512-5RBi6agtDglNXdffmw4+Fyv2dUdlIdeOdUj0O5+JRYajTxfHdurZd9r/42z4OstN+ORDkLA/svt8Q9JyRpIb6Q== - dependencies: - "@storybook/channels" "7.0.26" - "@types/babel__core" "^7.0.0" - "@types/express" "^4.7.0" - file-system-cache "2.3.0" - -"@storybook/types@7.0.27", "@storybook/types@^7.0.2": - version "7.0.27" - resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.0.27.tgz#5e8a3bc8d973a519f1ca48fca5b34d53de9683e0" - integrity sha512-pmJuIm+kGaZiDMyl2i5KFS9iGWrpW1jVcp9OMtHeK20LBzY5Hxq/JMc3E+fbVNkAX2hVlVGbbVUNPTvd9AjbrA== - dependencies: - "@storybook/channels" "7.0.27" - "@types/babel__core" "^7.0.0" - "@types/express" "^4.7.0" - file-system-cache "2.3.0" - -"@storybook/types@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.1.1.tgz#610ffeae955a2f4e8935b9a1d677430d6374ccea" - integrity sha512-0yxEHxYd/N0XfVCGrEq86QIMC4ljZBspHSDrjdLSCIYmmglMvwKboZBgHlLQmpcLP+of8m1E8Frbslpnt0giBg== +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz" + integrity sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q== dependencies: - "@storybook/channels" "7.1.1" - "@types/babel__core" "^7.0.0" - "@types/express" "^4.7.0" - file-system-cache "2.3.0" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"@storybook/types@7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.2.1.tgz#c10449955a1fc1ef57e270feace2bbd3bd87a1e6" - integrity sha512-YwlIY1uyxfJjijbB5x1d1QOKaUUDJnMX8BSb8oGqU4cyT76X/Is4CbGs+vccFsJo0tZu1GfuahYXl0EDT0nnSQ== +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz" + integrity sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng== dependencies: - "@storybook/channels" "7.2.1" - "@types/babel__core" "^7.0.0" - "@types/express" "^4.7.0" - file-system-cache "2.3.0" + babel-runtime "^6.22.0" + babel-types "^6.24.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== +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz" + integrity sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw== dependencies: - 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@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" - integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" - integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz" + integrity sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA== + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" - integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz" + integrity sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg== + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" -"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" - integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== - -"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" - integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== - -"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" - integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== - -"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" - integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== - -"@svgr/babel-plugin-transform-svg-component@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" - integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz" + integrity sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg== + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"@svgr/babel-preset@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" - integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" - "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" - "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" - "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" - "@svgr/babel-plugin-transform-svg-component" "^5.5.0" - -"@svgr/core@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" - integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz" + integrity sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw== dependencies: - "@svgr/plugin-jsx" "^5.5.0" - camelcase "^6.2.0" - cosmiconfig "^7.0.0" + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"@svgr/hast-util-to-babel-ast@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" - integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz" + integrity sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ== dependencies: - "@babel/types" "^7.12.6" + babel-runtime "^6.22.0" + babel-template "^6.24.1" -"@svgr/plugin-jsx@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" - integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz" + integrity sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w== dependencies: - "@babel/core" "^7.12.3" - "@svgr/babel-preset" "^5.5.0" - "@svgr/hast-util-to-babel-ast" "^5.5.0" - svg-parser "^2.0.2" + babel-runtime "^6.22.0" -"@svgr/plugin-svgo@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" - integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz" + integrity sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA== dependencies: - cosmiconfig "^7.0.0" - deepmerge "^4.2.2" - svgo "^1.2.2" + babel-runtime "^6.22.0" -"@svgr/webpack@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" - integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== - dependencies: - "@babel/core" "^7.12.3" - "@babel/plugin-transform-react-constant-elements" "^7.12.1" - "@babel/preset-env" "^7.12.1" - "@babel/preset-react" "^7.12.5" - "@svgr/core" "^5.5.0" - "@svgr/plugin-jsx" "^5.5.0" - "@svgr/plugin-svgo" "^5.5.0" - loader-utils "^2.0.0" +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz" + integrity sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw== -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz" + integrity sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ== -"@szmarczak/http-timer@^4.0.5": - 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" +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz" + integrity sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ== -"@szmarczak/http-timer@^5.0.1": - version "5.0.1" - resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz" - integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== +babel-plugin-transform-async-to-generator@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz" + integrity sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw== dependencies: - defer-to-connect "^2.0.1" + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" -"@tanem/svg-injector@^10.1.56": - version "10.1.57" - resolved "https://registry.yarnpkg.com/@tanem/svg-injector/-/svg-injector-10.1.57.tgz#abb6a440f571d474c084d8afb2d2d32d5c0d7b89" - integrity sha512-XbkU63nZUVhkUvC709swATTiZ7GRb7+l6AAuoz0t1m3Liia0Iac0WwBFij3JeTve08Pd0J5xATAhHxDdJkXunw== +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz" + integrity sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg== dependencies: - "@babel/runtime" "^7.22.3" - content-type "^1.0.5" - tslib "^2.5.2" + babel-runtime "^6.22.0" -"@testing-library/dom@^8.0.0", "@testing-library/dom@^8.3.0": - version "8.20.0" - resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.0.tgz" - integrity sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA== +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz" + integrity sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A== dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^5.0.1" - 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.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz" - integrity sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA== - 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" + babel-runtime "^6.22.0" -"@testing-library/react@^12.1.2": - version "12.1.5" - resolved "https://registry.npmjs.org/@testing-library/react/-/react-12.1.5.tgz" - integrity sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg== +babel-plugin-transform-es2015-block-scoping@^6.23.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz" + integrity sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw== dependencies: - "@babel/runtime" "^7.12.5" - "@testing-library/dom" "^8.0.0" - "@types/react-dom" "<18.0.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" -"@testing-library/user-event@^13.2.1": - version "13.5.0" - resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-13.5.0.tgz#69d77007f1e124d55314a2b73fd204b333b13295" - integrity sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg== +babel-plugin-transform-es2015-classes@^6.23.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz" + integrity sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag== dependencies: - "@babel/runtime" "^7.12.5" - -"@textlint/ast-node-types@^12.3.0": - version "12.3.0" - resolved "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.3.0.tgz" - integrity sha512-ke5hlKy/xZ/vQt6j+h4k9GradJPDsV3FKsUqWpCpF/X8qWCU2zM4e1SMUAFjoUcLuF9in+eXIQ71Qm/AdjjkZQ== + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"@textlint/markdown-to-ast@^12.1.1": - version "12.5.0" - resolved "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.5.0.tgz" - integrity sha512-+fUslPm0+ukMnRVMPUQwKv1DEwmDP/rXFuzc5+k5tCMhighZ/Fv/e3Y9MUe7SgNDte7ilajTa3/uP0Iurr60WA== +babel-plugin-transform-es2015-computed-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz" + integrity sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw== dependencies: - "@textlint/ast-node-types" "^12.3.0" - debug "^4.3.4" - mdast-util-gfm-autolink-literal "^0.1.3" - remark-footnotes "^3.0.0" - remark-frontmatter "^3.0.0" - remark-gfm "^1.0.0" - remark-parse "^9.0.0" - traverse "^0.6.7" - unified "^9.2.2" + babel-runtime "^6.22.0" + babel-template "^6.24.1" -"@thehubbleproject/bls@^0.5.1": - version "0.5.1" - resolved "https://registry.npmjs.org/@thehubbleproject/bls/-/bls-0.5.1.tgz" - integrity sha512-g5zeMZ8js/yg6MjFoC+pt0eqfCL2jC46yLY1LbKNriyqftB1tE3jpG/FMMDIW3x9/yRg/AgUb8Nluqj15tQs+A== +babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz" + integrity sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA== dependencies: - ethers "^5.5.3" - mcl-wasm "^1.0.0" - -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + babel-runtime "^6.22.0" -"@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== +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz" + integrity sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug== + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"@truffle/abi-utils@^0.3.6": - version "0.3.6" - resolved "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-0.3.6.tgz" - integrity sha512-61aTH2QmwVA1INaPMufRHTsS6jsEhS+GCkuCDdvBDmwctSnCKGDOr185BGt65QrpMRxYmIoH6WFBSNMYxW9GRw== +babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz" + integrity sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw== dependencies: - change-case "3.0.2" - fast-check "3.1.1" - web3-utils "1.8.1" + babel-runtime "^6.22.0" -"@truffle/blockchain-utils@^0.1.6": - version "0.1.6" - resolved "https://registry.npmjs.org/@truffle/blockchain-utils/-/blockchain-utils-0.1.6.tgz" - integrity sha512-SldoNRIFSm3+HMBnSc2jFsu5TWDkCN4X6vL3wrd0t6DIeF7nD6EoPPjxwbFSoqCnkkRxMuZeL6sUx7UMJS/wSA== +babel-plugin-transform-es2015-function-name@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz" + integrity sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg== + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"@truffle/codec@^0.14.12": - version "0.14.12" - resolved "https://registry.npmjs.org/@truffle/codec/-/codec-0.14.12.tgz" - integrity sha512-0RIUoZQiGqNNp0zogeoCLoFoKSY65ih129rjrDqyv7Yy+IIpKgdOk8zZqg2sWIt7ukQFjZmAOwPznhYNGg/eKA== +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz" + integrity sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ== dependencies: - "@truffle/abi-utils" "^0.3.6" - "@truffle/compile-common" "^0.9.2" - big.js "^6.0.3" - bn.js "^5.1.3" - cbor "^5.2.0" - debug "^4.3.1" - lodash "^4.17.21" - semver "7.3.7" - utf8 "^3.0.0" - web3-utils "1.8.1" + babel-runtime "^6.22.0" -"@truffle/compile-common@^0.9.2": - version "0.9.2" - resolved "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.2.tgz" - integrity sha512-n7MF/4/dntccj44RGe3PRMD8Vk46PU8dJtzd1VLAfgokK2Y2N+SjAzDskBnmAydZVWAM315nZIUQsgnY8xoATw== +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz" + integrity sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA== dependencies: - "@truffle/error" "^0.2.0" - colors "1.4.0" + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" -"@truffle/contract-schema@^3.4.11": - version "3.4.11" - resolved "https://registry.npmjs.org/@truffle/contract-schema/-/contract-schema-3.4.11.tgz" - integrity sha512-wReyVZUPyU9Zy5PSCugBLG1nnruBmRAJ/gmoirQiJ9N2n+s1iGBTY49tkDqFMz3XUUE0kplfdb9YKZJlLkTWzQ== +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.2" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz" + integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== dependencies: - ajv "^6.10.0" - debug "^4.3.1" + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" -"@truffle/contract@^4.0.35": - version "4.6.11" - resolved "https://registry.npmjs.org/@truffle/contract/-/contract-4.6.11.tgz" - integrity sha512-0YUS+4D4M+tLFx9JSxFgr7zfYBnHytmLDBjQKemhH/19NbSfos3bajdB08nKAphVM7IisoKnaCd5HOsEWusJJw== +babel-plugin-transform-es2015-modules-systemjs@^6.23.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz" + integrity sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg== dependencies: - "@ensdomains/ensjs" "^2.1.0" - "@truffle/blockchain-utils" "^0.1.6" - "@truffle/contract-schema" "^3.4.11" - "@truffle/debug-utils" "^6.0.43" - "@truffle/error" "^0.2.0" - "@truffle/interface-adapter" "^0.5.26" - bignumber.js "^7.2.1" - debug "^4.3.1" - ethers "^4.0.32" - web3 "1.8.1" - web3-core-helpers "1.8.1" - web3-core-promievent "1.8.1" - web3-eth-abi "1.8.1" - web3-utils "1.8.1" + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" -"@truffle/debug-utils@^6.0.43": - version "6.0.43" - resolved "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-6.0.43.tgz" - integrity sha512-vJQmfSyrEgLjn7tp7K6WlZAkjISb5MFlN8mAjGnMz30Ja6/cTMQ0l6NLZGPYgZYk5uB4KrqcmNC+PqXrgXWt2Q== +babel-plugin-transform-es2015-modules-umd@^6.23.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz" + integrity sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw== dependencies: - "@truffle/codec" "^0.14.12" - "@trufflesuite/chromafi" "^3.0.0" - bn.js "^5.1.3" - chalk "^2.4.2" - debug "^4.3.1" - highlightjs-solidity "^2.0.5" - -"@truffle/error@^0.1.1": - version "0.1.1" - resolved "https://registry.npmjs.org/@truffle/error/-/error-0.1.1.tgz" - integrity sha512-sE7c9IHIGdbK4YayH4BC8i8qMjoAOeg6nUXUDZZp8wlU21/EMpaG+CLx+KqcIPyR+GSWIW3Dm0PXkr2nlggFDA== - -"@truffle/error@^0.2.0": - version "0.2.0" - resolved "https://registry.npmjs.org/@truffle/error/-/error-0.2.0.tgz" - integrity sha512-Fe0/z4WWb7IP2gBnv3l6zqP87Y0kSMs7oiSLakKJq17q3GUunrHSdioKuNspdggxkXIBhEQLhi8C+LJdwmHKWQ== + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" -"@truffle/interface-adapter@^0.5.25", "@truffle/interface-adapter@^0.5.26": - version "0.5.26" - resolved "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.5.26.tgz" - integrity sha512-fBhoqtT+CT4XKXcOijvw0RIMgyUi3FJg+n5i5PyGBsoRzqbLZd9cZq+oMNjOZPdf3GH68hsOFOaQO5tZH7oZow== +babel-plugin-transform-es2015-object-super@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz" + integrity sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA== dependencies: - bn.js "^5.1.3" - ethers "^4.0.32" - web3 "1.8.1" + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" -"@truffle/provider@^0.2.24": - version "0.2.64" - resolved "https://registry.npmjs.org/@truffle/provider/-/provider-0.2.64.tgz" - integrity sha512-ZwPsofw4EsCq/2h0t73SPnnFezu4YQWBmK4FxFaOUX0F+o8NsZuHKyfJzuZwyZbiktYmefM3yD9rM0Dj4BhNbw== +babel-plugin-transform-es2015-parameters@^6.23.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz" + integrity sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ== dependencies: - "@truffle/error" "^0.1.1" - "@truffle/interface-adapter" "^0.5.25" - debug "^4.3.1" - web3 "1.7.4" + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"@trufflesuite/chromafi@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@trufflesuite/chromafi/-/chromafi-3.0.0.tgz" - integrity sha512-oqWcOqn8nT1bwlPPfidfzS55vqcIDdpfzo3HbU9EnUmcSTX+I8z0UyUFI3tZQjByVJulbzxHxUGS3ZJPwK/GPQ== +babel-plugin-transform-es2015-shorthand-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz" + integrity sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw== dependencies: - camelcase "^4.1.0" - chalk "^2.3.2" - cheerio "^1.0.0-rc.2" - detect-indent "^5.0.0" - highlight.js "^10.4.1" - lodash.merge "^4.6.2" - strip-ansi "^4.0.0" - strip-indent "^2.0.0" - -"@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== - -"@tsconfig/node10@^1.0.7": - version "1.0.9" - resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" - integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.3" - resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz" - integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"@typechain/ethers-v5@^10.1.0": - version "10.2.0" - resolved "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-10.2.0.tgz" - integrity sha512-ikaq0N/w9fABM+G01OFmU3U3dNnyRwEahkdvi9mqy1a3XwKiPZaF/lu54OcNaEWnpvEYyhhS0N7buCtLQqC92w== +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz" + integrity sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg== dependencies: - lodash "^4.17.15" - ts-essentials "^7.0.1" + babel-runtime "^6.22.0" -"@typechain/ethers-v5@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-2.0.0.tgz" - integrity sha512-0xdCkyGOzdqh4h5JSf+zoWx85IusEjDcPIwNEHP8mrWSnCae4rvrqB+/gtpdNfX7zjlFlZiMeePn2r63EI3Lrw== +babel-plugin-transform-es2015-sticky-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz" + integrity sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ== dependencies: - ethers "^5.0.2" + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"@typechain/hardhat@^6.1.2": - version "6.1.5" - resolved "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-6.1.5.tgz" - integrity sha512-lg7LW4qDZpxFMknp3Xool61Fg6Lays8F8TXdFGBG+MxyYcYU5795P1U2XdStuzGq9S2Dzdgh+1jGww9wvZ6r4Q== +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz" + integrity sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg== dependencies: - fs-extra "^9.1.0" - -"@types/abstract-leveldown@*": - version "7.2.1" - resolved "https://registry.npmjs.org/@types/abstract-leveldown/-/abstract-leveldown-7.2.1.tgz" - integrity sha512-YK8irIC+eMrrmtGx0H4ISn9GgzLd9dojZWJaMbjp1YHLl2VqqNFBNrL5Q3KjGf4VE3sf/4hmq6EhQZ7kZp1NoQ== - -"@types/aria-query@^5.0.1": - version "5.0.1" - resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz" - integrity sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q== - -"@types/async-eventemitter@^0.2.1": - version "0.2.1" - resolved "https://registry.npmjs.org/@types/async-eventemitter/-/async-eventemitter-0.2.1.tgz" - integrity sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg== + babel-runtime "^6.22.0" -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.1.tgz#916ecea274b0c776fec721e333e55762d3a9614b" - integrity sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw== +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz" + integrity sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw== dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" + babel-runtime "^6.22.0" -"@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== +babel-plugin-transform-es2015-unicode-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz" + integrity sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ== dependencies: - "@babel/types" "^7.0.0" + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.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== +babel-plugin-transform-exponentiation-operator@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz" + integrity sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ== dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.18.3" - resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz" - integrity sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w== +babel-plugin-transform-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz" + integrity sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg== dependencies: - "@babel/types" "^7.3.0" + regenerator-transform "^0.10.0" -"@types/babel__traverse@^7.0.4": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.1.tgz#dd6f1d2411ae677dcb2db008c962598be31d6acf" - integrity sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg== +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz" + integrity sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw== dependencies: - "@babel/types" "^7.20.7" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"@types/bn.js@*", "@types/bn.js@^5.1.0": - version "5.1.1" - resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz" - integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== +babel-preset-env@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz" + integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== dependencies: - "@types/node" "*" + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^3.2.6" + invariant "^2.2.2" + semver "^5.3.0" -"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5": - 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== +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz" + integrity sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A== dependencies: - "@types/node" "*" + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" -"@types/body-parser@*": - version "1.19.2" - resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" - integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz" + integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== dependencies: - "@types/connect" "*" - "@types/node" "*" + core-js "^2.4.0" + regenerator-runtime "^0.11.0" -"@types/bonjour@^3.5.9": - version "3.5.10" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" - integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== +babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz" + integrity sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg== dependencies: - "@types/node" "*" + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" -"@types/browser-or-node@^1.3.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@types/browser-or-node/-/browser-or-node-1.3.0.tgz" - integrity sha512-MVetr65IR7RdJbUxVHsaPFaXAO8fi89zv1g8L/mHygh1Q7xnnK02XZLwfMh57FOpTO6gtnagoPMQ/UOFfctXRQ== +babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz" + integrity sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA== + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" -"@types/cacheable-request@^6.0.1", "@types/cacheable-request@^6.0.2": - version "6.0.3" - resolved "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz" - integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz" + integrity sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== dependencies: - "@types/http-cache-semantics" "*" - "@types/keyv" "^3.1.4" - "@types/node" "*" - "@types/responselike" "^1.0.0" + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" -"@types/chai-as-promised@^7.1.3", "@types/chai-as-promised@^7.1.4": - version "7.1.5" - resolved "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.5.tgz" - integrity sha512-jStwss93SITGBwt/niYrkf2C+/1KTeZCZl1LaeezTlqppAKeoQC7jxyqYuP72sxBGKCIbw7oHgbYssIRzT5FCQ== +babelify@^7.3.0: + version "7.3.0" + resolved "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz" + integrity sha512-vID8Fz6pPN5pJMdlUnNFSfrlcx5MUule4k9aKs/zbZPyXxMTcRrB0M4Tarw22L8afr8eYSWxDPYCob3TdrqtlA== dependencies: - "@types/chai" "*" + babel-core "^6.0.14" + object-assign "^4.0.0" -"@types/chai@*", "@types/chai@^4.2.0", "@types/chai@^4.2.17", "@types/chai@^4.2.18", "@types/chai@^4.2.21", "@types/chai@^4.3.1": - version "4.3.5" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.5.tgz#ae69bcbb1bebb68c4ac0b11e9d8ed04526b3562b" - integrity sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng== +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== -"@types/concat-stream@^1.6.0": - version "1.6.1" - resolved "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz" - integrity sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA== +backoff@^2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz" + integrity sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA== dependencies: - "@types/node" "*" + precond "0.2" -"@types/connect-history-api-fallback@^1.3.5": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#9fd20b3974bdc2bcd4ac6567e2e0f6885cb2cf41" - integrity sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig== - dependencies: - "@types/express-serve-static-core" "*" - "@types/node" "*" +bail@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz" + integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== -"@types/connect@*": - version "3.4.35" - resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== - dependencies: - "@types/node" "*" +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -"@types/cors@^2.8.12", "@types/cors@^2.8.9": - version "2.8.13" - resolved "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz" - integrity sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA== +base-x@^3.0.2, base-x@^3.0.8: + 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== dependencies: - "@types/node" "*" + safe-buffer "^5.0.1" -"@types/cross-spawn@^6.0.2": - version "6.0.2" - resolved "https://registry.yarnpkg.com/@types/cross-spawn/-/cross-spawn-6.0.2.tgz#168309de311cd30a2b8ae720de6475c2fbf33ac7" - integrity sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw== - dependencies: - "@types/node" "*" +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -"@types/d3-color@^2": - version "2.0.3" - resolved "https://registry.npmjs.org/@types/d3-color/-/d3-color-2.0.3.tgz" - integrity sha512-+0EtEjBfKEDtH9Rk3u3kLOUXM5F+iZK+WvASPb0MhIZl8J8NUvGeZRwKCXl+P3HkYx5TdU4YtcibpqHkSR9n7w== +base64-sol@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/base64-sol/-/base64-sol-1.0.1.tgz" + integrity sha512-ld3cCNMeXt4uJXmLZBHFGMvVpK9KsLVEhPpFRXnvSVAqABKbuNZg/+dsq3NuM+wxFLb/UrVkz7m1ciWmkMfTbg== -"@types/d3-interpolate@^2.0.0": - version "2.0.2" - resolved "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-2.0.2.tgz" - integrity sha512-lElyqlUfIPyWG/cD475vl6msPL4aMU7eJvx1//Q177L8mdXoVPFl1djIESF2FKnc0NyaHvQlJpWwKJYwAhUoCw== +base@^0.11.1: + version "0.11.2" + resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== dependencies: - "@types/d3-color" "^2" - -"@types/d3-path@^2": - version "2.0.2" - resolved "https://registry.npmjs.org/@types/d3-path/-/d3-path-2.0.2.tgz" - integrity sha512-3YHpvDw9LzONaJzejXLOwZ3LqwwkoXb9LI2YN7Hbd6pkGo5nIlJ09ul4bQhBN4hQZJKmUpX8HkVqbzgUKY48cg== + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" -"@types/d3-scale@^3.0.0": - version "3.3.2" - resolved "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-3.3.2.tgz" - integrity sha512-gGqr7x1ost9px3FvIfUMi5XA/F/yAf4UkUDtdQhpH92XCT0Oa7zkkRzY61gPVJq+DxpHn/btouw5ohWkbBsCzQ== +basic-auth@~2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz" + integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== dependencies: - "@types/d3-time" "^2" + safe-buffer "5.1.2" -"@types/d3-shape@^2.0.0": - version "2.1.3" - resolved "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-2.1.3.tgz" - integrity sha512-HAhCel3wP93kh4/rq+7atLdybcESZ5bRHDEZUojClyZWsRuEMo3A52NGYJSh48SxfxEU6RZIVbZL2YFZ2OAlzQ== +bcfg@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/bcfg/-/bcfg-0.2.1.tgz#d6ebd9827a99ff62bfad326edd349babc58d6e97" + integrity sha512-Q69DG2V9QJexdXvYoiXM4xfQ5m65tIOAzJCcW4USQdvbWEJJqBQ9MEDdyJb2ei5fadAJPVp8rUpLbFnkC37FZA== dependencies: - "@types/d3-path" "^2" - -"@types/d3-time@^2": - version "2.1.1" - resolved "https://registry.npmjs.org/@types/d3-time/-/d3-time-2.1.1.tgz" - integrity sha512-9MVYlmIgmRR31C5b4FVSWtuMmBHh2mOWQYfl7XAYOa8dsnb7iEmUmRSWSFgXFtkjxO65d7hTUHQC+RhR/9IWFg== + bsert "~0.0.10" -"@types/debug@^4.1.7": - version "4.1.7" - resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz" - integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: - "@types/ms" "*" + tweetnacl "^0.14.3" -"@types/detect-port@^1.3.0": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@types/detect-port/-/detect-port-1.3.3.tgz#124c5d4c283f48a21f80826bcf39433b3e64aa81" - integrity sha512-bV/jQlAJ/nPY3XqSatkGpu+nGzou+uSwrH1cROhn+jBFg47yaNH+blW4C7p9KhopC7QxCv/6M86s37k8dMk0Yg== +bech32@1.1.4, bech32@^1.1.3: + version "1.1.4" + resolved "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== -"@types/doctrine@^0.0.3": - version "0.0.3" - resolved "https://registry.yarnpkg.com/@types/doctrine/-/doctrine-0.0.3.tgz#e892d293c92c9c1d3f9af72c15a554fbc7e0895a" - integrity sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA== +before-after-hook@^2.2.0: + version "2.2.3" + resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz" + integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== -"@types/ejs@^3.1.1": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@types/ejs/-/ejs-3.1.2.tgz#75d277b030bc11b3be38c807e10071f45ebc78d9" - integrity sha512-ZmiaE3wglXVWBM9fyVC17aGPkLo/UgaOjEiI2FXQfyczrCefORPxIe+2dVmnmk3zkVIbizjrlQzmPGhSYGXG5g== +better-path-resolve@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/better-path-resolve/-/better-path-resolve-1.0.0.tgz" + integrity sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g== + dependencies: + is-windows "^1.0.0" -"@types/emscripten@^1.39.6": - version "1.39.7" - resolved "https://registry.yarnpkg.com/@types/emscripten/-/emscripten-1.39.7.tgz#3025183ea56e12bf4d096aadc48ce74ca051233d" - integrity sha512-tLqYV94vuqDrXh515F/FOGtBcRMTPGvVV1LzLbtYDcQmmhtpf/gLYf+hikBbQk8MzOHNz37wpFfJbYAuSn8HqA== +bfj@^7.0.2: + version "7.0.2" + resolved "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz" + integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== + dependencies: + bluebird "^3.5.5" + check-types "^11.1.1" + hoopy "^0.1.4" + tryer "^1.0.1" -"@types/escodegen@^0.0.6": - version "0.0.6" - resolved "https://registry.yarnpkg.com/@types/escodegen/-/escodegen-0.0.6.tgz#5230a9ce796e042cda6f086dbf19f22ea330659c" - integrity sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig== +big-integer@1.6.36: + 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== -"@types/eslint-scope@^3.7.3": - version "3.7.4" - resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz" - integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -"@types/eslint@*": - version "8.21.1" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.1.tgz" - integrity sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" +big.js@^6.0.3: + version "6.2.1" + resolved "https://registry.npmjs.org/big.js/-/big.js-6.2.1.tgz" + integrity sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ== -"@types/eslint@^7.29.0 || ^8.4.1": - version "8.40.0" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.40.0.tgz#ae73dc9ec5237f2794c4f79efd6a4c73b13daf23" - integrity sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g== +bigint-crypto-utils@^3.0.23: + version "3.1.8" + resolved "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.1.8.tgz" + integrity sha512-+VMV9Laq8pXLBKKKK49nOoq9bfR3j7NNQAtbA617a4nw9bVLo8rsqkKMBgM2AJWlNX9fEIyYaYX+d0laqYV4tw== dependencies: - "@types/estree" "*" - "@types/json-schema" "*" + bigint-mod-arith "^3.1.0" -"@types/estree@*": - version "1.0.0" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz" - integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== +bigint-mod-arith@^3.1.0: + version "3.1.2" + resolved "https://registry.npmjs.org/bigint-mod-arith/-/bigint-mod-arith-3.1.2.tgz" + integrity sha512-nx8J8bBeiRR+NlsROFH9jHswW5HO8mgfOSqW0AmjicMMvaONDa8AO+5ViKDUUNytBPWiwfvZP4/Bj4Y3lUfvgQ== -"@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== +bignumber.js@9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz" + integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== -"@types/estree@^0.0.51": - version "0.0.51" - resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz" - integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== +bignumber.js@^7.2.1: + version "7.2.1" + resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz" + integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== -"@types/estree@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" - integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== +bignumber.js@^9.0.0, bignumber.js@^9.0.1: + version "9.1.1" + resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz" + integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.17.35" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz#c95dd4424f0d32e525d23812aa8ab8e4d3906c4f" - integrity sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -"@types/express-serve-static-core@^4.17.31": - version "4.17.32" - resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz" - integrity sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA== +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" + file-uri-to-path "1.0.0" -"@types/express@*", "@types/express@^4.7.0": - version "4.17.17" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" - integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== +bintrees@1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz" + integrity sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw== + +bip39@2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/bip39/-/bip39-2.5.0.tgz" + integrity sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA== dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "*" + create-hash "^1.1.0" + pbkdf2 "^3.0.9" + randombytes "^2.0.1" + safe-buffer "^5.0.1" + unorm "^1.3.3" -"@types/express@^4.17.12", "@types/express@^4.17.13": - version "4.17.15" - resolved "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz" - integrity sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ== +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.31" - "@types/qs" "*" - "@types/serve-static" "*" + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" -"@types/find-cache-dir@^3.2.1": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@types/find-cache-dir/-/find-cache-dir-3.2.1.tgz#7b959a4b9643a1e6a1a5fe49032693cc36773501" - integrity sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw== +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== -"@types/form-data@0.0.33": - version "0.0.33" - resolved "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz" - integrity sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw== - dependencies: - "@types/node" "*" +bluebird@^3.5.0, bluebird@^3.5.2, bluebird@^3.5.3, bluebird@^3.5.5, bluebird@^3.7.2: + version "3.7.2" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -"@types/glob@^7.1.1": - version "7.2.0" - resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz" + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== -"@types/glob@^8.0.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" - integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w== - dependencies: - "@types/minimatch" "^5.1.2" - "@types/node" "*" +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.8.0: + version "4.12.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -"@types/graceful-fs@^4.1.2", "@types/graceful-fs@^4.1.3": - version "4.1.6" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" - integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== - dependencies: - "@types/node" "*" +bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -"@types/hoist-non-react-statics@*", "@types/hoist-non-react-statics@^3.3.1": - 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== +body-parser@1.20.1, body-parser@^1.16.0, body-parser@^1.20.0: + version "1.20.1" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: - "@types/react" "*" - hoist-non-react-statics "^3.3.0" + 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" -"@types/html-minifier-terser@^6.0.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" - integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== -"@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== +bowser@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== -"@types/http-proxy@^1.17.8": - version "1.17.11" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.11.tgz#0ca21949a5588d55ac2b659b69035c84bd5da293" - integrity sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA== +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: - "@types/node" "*" + balanced-match "^1.0.0" + concat-map "0.0.1" -"@types/is-ci@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@types/is-ci/-/is-ci-3.0.0.tgz" - integrity sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ== +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: - ci-info "^3.1.0" - -"@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.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + balanced-match "^1.0.0" -"@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== +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== dependencies: - "@types/istanbul-lib-coverage" "*" + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" -"@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== +braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: - "@types/istanbul-lib-report" "*" + fill-range "^7.0.1" -"@types/jest@*", "@types/jest@^29.5.1": - version "29.5.1" - resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.1.tgz" - integrity sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ== +breakword@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/breakword/-/breakword-1.0.5.tgz" + integrity sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg== dependencies: - expect "^29.0.0" - pretty-format "^29.0.0" + wcwidth "^1.0.1" -"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - 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== +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browser-level@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz" + integrity sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.1" + module-error "^1.0.2" + run-parallel-limit "^1.1.0" -"@types/json-schema@^7.0.4": - version "7.0.12" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" - integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== +browser-or-node@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/browser-or-node/-/browser-or-node-1.3.0.tgz" + integrity sha512-0F2z/VSnLbmEeBcUrSuDH5l0HxTXdQQzLjkmBR4cYfvg1zJrKSlmIZFqyFR8oX0NrwPhy3c3HQ6i3OxMbew4Tg== -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -"@types/keyv@^3.1.4": - version "3.1.4" - resolved "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz" - integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== +browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== dependencies: - "@types/node" "*" + 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" -"@types/level-errors@*": - version "3.0.0" - resolved "https://registry.npmjs.org/@types/level-errors/-/level-errors-3.0.0.tgz" - integrity sha512-/lMtoq/Cf/2DVOm6zE6ORyOM+3ZVm/BvzEZVxUhf6bgh8ZHglXlBqxbxSlJeVp8FCbD3IVvk/VbsaNmDjrQvqQ== +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" -"@types/levelup@^4.3.0": - version "4.3.3" - resolved "https://registry.npmjs.org/@types/levelup/-/levelup-4.3.3.tgz" - integrity sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA== +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== dependencies: - "@types/abstract-leveldown" "*" - "@types/level-errors" "*" - "@types/node" "*" + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" -"@types/levelup@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/levelup/-/levelup-5.1.2.tgz#3b987fe66c95871dc97e74f0bce5b2eb91140782" - integrity sha512-JhCKONvFg2rEbsyyCCRkiPF03tMV1NyBXER4iXKBemgjwS4+SF6HGNuL4cfq6ueM6Yc+4ZbwJnU/5v6q3ZziUQ== +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== dependencies: - "@types/abstract-leveldown" "*" - "@types/level-errors" "*" - "@types/node" "*" + bn.js "^5.0.0" + randombytes "^2.0.1" -"@types/lodash@^4.14.167": - version "4.14.195" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.195.tgz#bafc975b252eb6cea78882ce8a7b6bf22a6de632" - integrity sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg== +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz" + 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" -"@types/lodash@^4.14.168": - version "4.14.191" - resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz" - integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ== +browserslist@^3.2.6: + version "3.2.8" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz" + integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== + dependencies: + caniuse-lite "^1.0.30000844" + electron-to-chromium "^1.3.47" -"@types/lru-cache@^5.1.0": - version "5.1.1" - resolved "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz" - integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== +browserslist@^4.14.5: + version "4.21.5" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== + dependencies: + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" -"@types/mdast@^3.0.0": - version "3.0.10" - resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz" - integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA== +browserslist@^4.21.3: + version "4.21.4" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" + integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== dependencies: - "@types/unist" "*" + caniuse-lite "^1.0.30001400" + electron-to-chromium "^1.4.251" + node-releases "^2.0.6" + update-browserslist-db "^1.0.9" -"@types/mdx@^2.0.0": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.5.tgz#9a85a8f70c7c4d9e695a21d5ae5c93645eda64b1" - integrity sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg== +bs58@^4.0.0, bs58@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" -"@types/mersenne-twister@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@types/mersenne-twister/-/mersenne-twister-1.1.3.tgz#de903ccabe1773baef4de70333461eda43dd56f5" - integrity sha512-E2Y0Q+ScvIrvlK9X503cV7jFFwQX226DB15Wg+ULKjyIJ+878Q6lazznJFxrhF65v8xdL0neNGEPAYLIIym3nA== +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" -"@types/mime-types@^2.1.0": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@types/mime-types/-/mime-types-2.1.1.tgz#d9ba43490fa3a3df958759adf69396c3532cf2c1" - integrity sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw== +bsert@~0.0.10: + version "0.0.10" + resolved "https://registry.npmjs.org/bsert/-/bsert-0.0.10.tgz" + integrity sha512-NHNwlac+WPy4t2LoNh8pXk8uaIGH3NSaIUbTTRXGpE2WEbq0te/tDykYHkFK57YKLPjv/aGHmbqvnGeVWDz57Q== -"@types/mime@*": - version "3.0.1" - resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz" - integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== +buffer-from@^1.0.0, buffer-from@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -"@types/mime@^1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== +buffer-reverse@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/buffer-reverse/-/buffer-reverse-1.0.1.tgz" + integrity sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg== -"@types/minimatch@*", "@types/minimatch@^5.1.2": - version "5.1.2" - resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== +buffer-to-arraybuffer@^0.0.5: + version "0.0.5" + resolved "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz" + integrity sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ== -"@types/minimatch@^3.0.3": - version "3.0.5" - resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== +buffer-writer@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04" + integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== -"@types/minimist@^1.2.0": - version "1.2.2" - resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz" - integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== -"@types/mkdirp@^0.5.2": - version "0.5.2" - resolved "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz" - integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== +buffer-xor@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-2.0.2.tgz" + integrity sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ== dependencies: - "@types/node" "*" - -"@types/mocha@^8.2.2": - version "8.2.3" - resolved "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz" - integrity sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw== - -"@types/mocha@^9.0.0", "@types/mocha@^9.1.0": - version "9.1.1" - resolved "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz" - integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== + safe-buffer "^5.1.1" -"@types/morgan@^1.9.3": - version "1.9.4" - resolved "https://registry.npmjs.org/@types/morgan/-/morgan-1.9.4.tgz" - integrity sha512-cXoc4k+6+YAllH3ZHmx4hf7La1dzUk6keTR4bF4b4Sc0mZxU/zK4wO7l+ZzezXm/jkYj/qC+uYGZrarZdIVvyQ== +buffer@6.0.3, buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== dependencies: - "@types/node" "*" - -"@types/ms@*": - version "0.7.31" - resolved "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz" - integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== + base64-js "^1.3.1" + ieee754 "^1.2.1" -"@types/node-fetch@^2.5.10", "@types/node-fetch@^2.5.5": - version "2.6.2" - resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz" - integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== +buffer@^5.0.5, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: - "@types/node" "*" - form-data "^3.0.0" + base64-js "^1.3.1" + ieee754 "^1.1.13" -"@types/node-fetch@^2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.4.tgz#1bc3a26de814f6bf466b25aeb1473fa1afe6a660" - integrity sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg== +bufferutil@^4.0.1: + version "4.0.7" + resolved "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz" + integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw== dependencies: - "@types/node" "*" - form-data "^3.0.0" - -"@types/node@*", "@types/node@^18.0.0": - version "18.11.18" - resolved "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz" - integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== - -"@types/node@^10.0.3": - version "10.17.60" - resolved "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz" - integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== - -"@types/node@^12.0.0", "@types/node@^12.12.6", "@types/node@^12.7.1": - version "12.20.55" - resolved "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz" - integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== - -"@types/node@^15.12.2": - version "15.14.9" - resolved "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz" - integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== - -"@types/node@^16.0.0": - version "16.18.34" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.34.tgz#62d2099b30339dec4b1b04a14c96266459d7c8b2" - integrity sha512-VmVm7gXwhkUimRfBwVI1CHhwp86jDWR04B5FGebMMyxV90SlCmFujwUHrxTD4oO+SOYU86SoxvhgeRQJY7iXFg== - -"@types/node@^16.11.10": - version "16.18.36" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.36.tgz#0db5d7efc4760d36d0d1d22c85d1a53accd5dc27" - integrity sha512-8egDX8dE50XyXWH6C6PRCNkTP106DuUrvdrednFouDSmCi7IOvrqr0frznfZaHifHH/3aq/7a7v9N4wdXMqhBQ== + node-gyp-build "^4.3.0" -"@types/node@^16.4.12": - version "16.18.11" - resolved "https://registry.npmjs.org/@types/node/-/node-16.18.11.tgz" - integrity sha512-3oJbGBUWuS6ahSnEq1eN2XrCyf4YsWI8OyCvo7c64zQJNplk3mO84t53o8lfTk+2ji59g5ycfc6qQ3fdHliHuA== +bufio@^1.0.7: + version "1.2.0" + resolved "https://registry.npmjs.org/bufio/-/bufio-1.2.0.tgz" + integrity sha512-UlFk8z/PwdhYQTXSQQagwGAdtRI83gib2n4uy4rQnenxUM2yQi8lBDzF230BNk+3wAoZDxYRoBwVVUPgHa9MCA== -"@types/node@^17.0.21": - version "17.0.45" - resolved "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz" - integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== +builtin-modules@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz" + integrity sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ== -"@types/node@^8.0.0": - version "8.10.66" - resolved "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz" - integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== +builtin-modules@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== -"@types/normalize-package-data@^2.4.0": - version "2.4.1" - resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" - integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz" + integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== -"@types/npmlog@^4.1.2": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@types/npmlog/-/npmlog-4.1.4.tgz#30eb872153c7ead3e8688c476054ddca004115f6" - integrity sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ== +busboy@^1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +byline@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz" + integrity sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q== -"@types/pbkdf2@^3.0.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz" - integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== - dependencies: - "@types/node" "*" +byte-size@^7.0.0: + version "7.0.1" + resolved "https://registry.npmjs.org/byte-size/-/byte-size-7.0.1.tgz" + integrity sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A== -"@types/pino-multi-stream@^5.1.1": - version "5.1.3" - resolved "https://registry.npmjs.org/@types/pino-multi-stream/-/pino-multi-stream-5.1.3.tgz" - integrity sha512-OxIkhBpfXw1q1BkOIkTSrq0YAkOmlSBaZbM5EXjgjTvgNLZLBwC7/+HGVWw7wW5/ofRyNPDg8Ykd/cx4bq69PQ== - dependencies: - "@types/pino" "6.3" +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -"@types/pino-pretty@*": - version "5.0.0" - resolved "https://registry.npmjs.org/@types/pino-pretty/-/pino-pretty-5.0.0.tgz" - integrity sha512-N1uzqSzioqz8R3AkDbSJwcfDWeI3YMPNapSQQhnB2ISU4NYgUIcAh+hYT5ygqBM+klX4htpEhXMmoJv3J7GrdA== +bytewise-core@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz" + integrity sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA== dependencies: - pino-pretty "*" + typewise-core "^1.2" -"@types/pino-std-serializers@*", "@types/pino-std-serializers@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@types/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz" - integrity sha512-gXfUZx2xIBbFYozGms53fT0nvkacx/+62c8iTxrEqH5PkIGAQvDbXg2774VWOycMPbqn5YJBQ3BMsg4Li3dWbg== +bytewise@~1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz" + integrity sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ== dependencies: - pino-std-serializers "*" + bytewise-core "^1.2.2" + typewise "^1.0.3" -"@types/pino@6.3", "@types/pino@^6.3.6": - version "6.3.12" - resolved "https://registry.npmjs.org/@types/pino/-/pino-6.3.12.tgz" - integrity sha512-dsLRTq8/4UtVSpJgl9aeqHvbh6pzdmjYD3C092SYgLD2TyoCqHpTJk6vp8DvCTGGc7iowZ2MoiYiVUUCcu7muw== +cacache@^15.0.5, cacache@^15.2.0: + version "15.3.0" + resolved "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz" + integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== dependencies: - "@types/node" "*" - "@types/pino-pretty" "*" - "@types/pino-std-serializers" "*" - sonic-boom "^2.1.0" - -"@types/prettier@2.7.2", "@types/prettier@^2.1.1": - version "2.7.2" - resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz" - integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== + "@npmcli/fs" "^1.0.0" + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" + unique-filename "^1.1.1" -"@types/prettier@^2.1.5": - version "2.7.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" - integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== +cacache@^16.1.0: + version "16.1.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" + integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== + dependencies: + "@npmcli/fs" "^2.1.0" + "@npmcli/move-file" "^2.0.0" + chownr "^2.0.0" + fs-minipass "^2.1.0" + glob "^8.0.1" + infer-owner "^1.0.4" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + mkdirp "^1.0.4" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^9.0.0" + tar "^6.1.11" + unique-filename "^2.0.0" -"@types/pretty-hrtime@^1.0.0": +cache-base@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/pretty-hrtime/-/pretty-hrtime-1.0.1.tgz#72a26101dc567b0d68fd956cf42314556e42d601" - integrity sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ== - -"@types/prop-types@*", "@types/prop-types@^15.7.5": - 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/q@^1.5.1": - version "1.5.5" - resolved "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz" - integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== + resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" -"@types/qs@*", "@types/qs@^6.2.31", "@types/qs@^6.9.4", "@types/qs@^6.9.5", "@types/qs@^6.9.7": - version "6.9.7" - resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== -"@types/range-parser@*": - version "1.2.4" - resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== +cacheable-lookup@^6.0.4: + 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== -"@types/react-dom@<18.0.0": - version "17.0.19" - resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.19.tgz" - integrity sha512-PiYG40pnQRdPHnlf7tZnp0aQ6q9tspYr72vD61saO6zFCybLfMqwUCN0va1/P+86DXn18ZWeW30Bk7xlC5eEAQ== +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== dependencies: - "@types/react" "^17" + 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" -"@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== +cacheable-request@^7.0.2: + version "7.0.2" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz" + integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== dependencies: - "@types/react" "*" + 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" -"@types/react-transition-group@^4.4.0", "@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== +cachedown@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/cachedown/-/cachedown-1.0.0.tgz" + integrity sha512-t+yVk82vQWCJF3PsWHMld+jhhjkkWjcAzz8NbFx1iULOXWl8Tm/FdM4smZNVw3MRr0X+lVTx9PKzvEn4Ng19RQ== dependencies: - "@types/react" "*" + abstract-leveldown "^2.4.1" + lru-cache "^3.2.0" -"@types/react@*", "@types/react@>=16", "@types/react@^17": - version "17.0.58" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.58.tgz#c8bbc82114e5c29001548ebe8ed6c4ba4d3c9fb0" - integrity sha512-c1GzVY97P0fGxwGxhYq989j4XwlcHQoto6wQISOC2v6wm3h0PORRWJFHlkRjfGsiG3y1609WdQ+J+tKxvrEd6A== +caching-transform@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz" + integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA== dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" + hasha "^5.0.0" + make-dir "^3.0.0" + package-hash "^4.0.0" + write-file-atomic "^3.0.0" -"@types/redux-mock-store@^1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@types/redux-mock-store/-/redux-mock-store-1.0.3.tgz" - integrity sha512-Wqe3tJa6x9MxMN4DJnMfZoBRBRak1XTPklqj4qkVm5VBpZnC8PSADf4kLuFQ9NAdHaowfWoEeUMz7NWc2GMtnA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: - redux "^4.0.5" + function-bind "^1.1.1" + get-intrinsic "^1.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== +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== dependencies: - "@types/node" "*" + callsites "^2.0.0" -"@types/resolve@^0.0.8": - version "0.0.8" - resolved "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== dependencies: - "@types/node" "*" + caller-callsite "^2.0.0" -"@types/responselike@^1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz" - integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== - dependencies: - "@types/node" "*" +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== -"@types/retry@0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== +callsites@^3.0.0, callsites@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -"@types/scheduler@*": - version "0.16.2" - resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== +camel-case@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz" + integrity sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w== + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" -"@types/secp256k1@^4.0.1": - version "4.0.3" - resolved "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz" - integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== +camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== dependencies: - "@types/node" "*" + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" -"@types/semver@^6.0.0": - version "6.2.3" - resolved "https://registry.npmjs.org/@types/semver/-/semver-6.2.3.tgz" - integrity sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A== +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz" + integrity sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== -"@types/semver@^7.3.12": - version "7.3.13" - resolved "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz" - integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz" + integrity sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw== -"@types/semver@^7.3.4": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" - integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -"@types/send@*": - version "0.17.1" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" - integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== - dependencies: - "@types/mime" "^1" - "@types/node" "*" +camelcase@^6.0.0, camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -"@types/serve-index@^1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" - integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== - dependencies: - "@types/express" "*" +caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001400, caniuse-lite@^1.0.30001449: + version "1.0.30001513" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001513.tgz" + integrity sha512-pnjGJo7SOOjAGytZZ203Em95MRM8Cr6jhCXNF/FAXTpCTRTECnqQWLpiTRqrFtdYcth8hf4WECUpkezuYsMVww== -"@types/serve-static@*": - version "1.15.0" - resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz" - integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== +cardinal@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz" + integrity sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw== dependencies: - "@types/mime" "*" - "@types/node" "*" + ansicolors "~0.3.2" + redeyed "~2.1.0" -"@types/serve-static@^1.13.10": - version "1.15.1" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d" - integrity sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ== - dependencies: - "@types/mime" "*" - "@types/node" "*" +caseless@^0.12.0, caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== -"@types/sinon-chai@^3.2.3": - version "3.2.9" - resolved "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.9.tgz" - integrity sha512-/19t63pFYU0ikrdbXKBWj9PCdnKyTd0Qkz0X91Ta081cYsq90OxYdcWwK/dwEoDa6dtXgj2HJfmzgq+QZTHdmQ== - dependencies: - "@types/chai" "*" - "@types/sinon" "*" +catering@^2.0.0, catering@^2.1.0, catering@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz" + integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== -"@types/sinon@*", "@types/sinon@^10.0.13": - version "10.0.16" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.16.tgz#4bf10313bd9aa8eef1e50ec9f4decd3dd455b4d3" - integrity sha512-j2Du5SYpXZjJVJtXBokASpPRj+e2z+VUhCPHmM6WMfe3dpHu6iVKJMU6AiBcMp/XTAYnEj6Wc1trJUWwZ0QaAQ== +cbor@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/cbor/-/cbor-5.2.0.tgz" + integrity sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A== dependencies: - "@types/sinonjs__fake-timers" "*" - -"@types/sinonjs__fake-timers@*": - version "8.1.2" - resolved "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz" - integrity sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA== + bignumber.js "^9.0.1" + nofilter "^1.0.4" -"@types/sockjs@^0.3.33": - version "0.3.33" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" - integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== +cbor@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz" + integrity sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg== dependencies: - "@types/node" "*" - -"@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + nofilter "^3.1.0" -"@types/styled-components@^5.1.26": - version "5.1.26" - resolved "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.26.tgz" - integrity sha512-KuKJ9Z6xb93uJiIyxo/+ksS7yLjS1KzG6iv5i78dhVg/X3u5t1H7juRWqVmodIdz6wGVaIApo1u01kmFRdJHVw== - dependencies: - "@types/hoist-non-react-statics" "*" - "@types/react" "*" - csstype "^3.0.2" +ccount@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz" + integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== -"@types/testing-library__jest-dom@^5.14.6": - version "5.14.6" - resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.6.tgz#4887f6e1af11215428ab02777873bcede98a53b0" - integrity sha512-FkHXCb+ikSoUP4Y4rOslzTdX5sqYwMxfefKh1GmZ8ce1GOkEHntSp6b5cGadmNfp5e4BMEWOMx+WSKd5/MqlDA== +chai-as-promised@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz" + integrity sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA== dependencies: - "@types/jest" "*" + check-error "^1.0.2" -"@types/testing-library__jest-dom@^5.9.1": - 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== - dependencies: - "@types/jest" "*" +chai-bn@^0.2.1: + version "0.2.2" + resolved "https://registry.npmjs.org/chai-bn/-/chai-bn-0.2.2.tgz" + integrity sha512-MzjelH0p8vWn65QKmEq/DLBG1Hle4WeyqT79ANhXZhn/UxRWO0OogkAxi5oGGtfzwU9bZR8mvbvYdoqNVWQwFg== -"@types/truncate-middle@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/truncate-middle/-/truncate-middle-1.0.1.tgz#3e427c39d2b15bf0ef10401eee2e732be94f5ef6" - integrity sha512-HpUx5cnvMJpeCIqS3Q0neIviFWIH8W6nSmPhAMdzugxiCywOBy0n5OeZgJ+0u3GibDg8ZboxHYYKUg9ArtRdJg== +chai@^4.2.0, chai@^4.3.4, chai@^4.3.6: + version "4.3.7" + resolved "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz" + integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^4.1.2" + get-func-name "^2.0.0" + loupe "^2.3.1" + pathval "^1.1.1" + type-detect "^4.0.5" -"@types/trusted-types@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.3.tgz#a136f83b0758698df454e328759dbd3d44555311" - integrity sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g== +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" -"@types/underscore@*": - version "1.11.4" - resolved "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.4.tgz" - integrity sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg== +chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + 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" -"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2": - version "2.0.6" - resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz" - integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" -"@types/use-sync-external-store@^0.0.3": - 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== +chalk@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== -"@types/web3@1.0.19": - version "1.0.19" - resolved "https://registry.npmjs.org/@types/web3/-/web3-1.0.19.tgz" - integrity sha512-fhZ9DyvDYDwHZUp5/STa9XW2re0E8GxoioYJ4pEUZ13YHpApSagixj7IAdoYH5uAK+UalGq6Ml8LYzmgRA/q+A== +change-case@3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/change-case/-/change-case-3.0.2.tgz" + integrity sha512-Mww+SLF6MZ0U6kdg11algyKd5BARbyM4TbFBepwowYSR5ClfQGCGtxNXgykpN0uF/bstWeaGDT4JWaDh8zWAHA== dependencies: - "@types/bn.js" "*" - "@types/underscore" "*" + camel-case "^3.0.0" + constant-case "^2.0.0" + dot-case "^2.1.0" + header-case "^1.0.0" + is-lower-case "^1.1.0" + is-upper-case "^1.1.0" + lower-case "^1.1.1" + lower-case-first "^1.0.0" + no-case "^2.3.2" + param-case "^2.1.0" + pascal-case "^2.0.0" + path-case "^2.1.0" + sentence-case "^2.1.0" + snake-case "^2.1.0" + swap-case "^1.1.0" + title-case "^2.1.0" + upper-case "^1.1.1" + upper-case-first "^1.1.0" -"@types/ws@^8.5.1": - version "8.5.4" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.4.tgz#bb10e36116d6e570dd943735f86c933c1587b8a5" - integrity sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg== - dependencies: - "@types/node" "*" +character-entities-legacy@^1.0.0: + version "1.1.4" + resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz" + integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== -"@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== +character-entities@^1.0.0: + version "1.2.4" + resolved "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz" + integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== -"@types/yargs@^16.0.0": - version "16.0.5" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.5.tgz#12cc86393985735a283e387936398c2f9e5f88e3" - integrity sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ== - dependencies: - "@types/yargs-parser" "*" +character-reference-invalid@^1.0.0: + version "1.1.4" + resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz" + integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== -"@types/yargs@^17.0.8": - version "17.0.24" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz" - integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== - dependencies: - "@types/yargs-parser" "*" +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -"@typescript-eslint/eslint-plugin@^4.26.0": - version "4.33.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz" - integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== - dependencies: - "@typescript-eslint/experimental-utils" "4.33.0" - "@typescript-eslint/scope-manager" "4.33.0" - debug "^4.3.1" - functional-red-black-tree "^1.0.1" - ignore "^5.1.8" - regexpp "^3.1.0" - semver "^7.3.5" - tsutils "^3.21.0" +charenc@0.0.2, "charenc@>= 0.0.1": + version "0.0.2" + resolved "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== -"@typescript-eslint/eslint-plugin@^5.10.2", "@typescript-eslint/eslint-plugin@^5.30.5", "@typescript-eslint/eslint-plugin@^5.45.1", "@typescript-eslint/eslint-plugin@^5.5.0": - version "5.48.1" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.1.tgz" - integrity sha512-9nY5K1Rp2ppmpb9s9S2aBiF3xo5uExCehMDmYmmFqqyxgenbHJ3qbarcLt4ITgaD6r/2ypdlcFRdcuVPnks+fQ== - dependencies: - "@typescript-eslint/scope-manager" "5.48.1" - "@typescript-eslint/type-utils" "5.48.1" - "@typescript-eslint/utils" "5.48.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" +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz" + integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== -"@typescript-eslint/experimental-utils@4.33.0": - version "4.33.0" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz" - integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" +check-types@^11.1.1: + version "11.2.2" + resolved "https://registry.npmjs.org/check-types/-/check-types-11.2.2.tgz" + integrity sha512-HBiYvXvn9Z70Z88XKjz3AEKd4HJhBXsa3j7xFnITAzoS8+q6eIGi8qDB8FKPBAjtuxjI/zFpwuiCb8oDtKOYrA== -"@typescript-eslint/experimental-utils@^5.0.0": - version "5.48.1" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.48.1.tgz" - integrity sha512-8OoIZZuOeqsm5cxn2f01qHWtVC3M4iixSsfZXPiQUg4Sl4LiU+b5epcJFwxNfqeoLl+SGncELyi3x99zI6C0ng== +checkpoint-store@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz" + integrity sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg== dependencies: - "@typescript-eslint/utils" "5.48.1" + functional-red-black-tree "^1.0.1" -"@typescript-eslint/parser@^4.0.0", "@typescript-eslint/parser@^4.26.0": - version "4.33.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz" - integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== +cheerio-select@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz" + integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== dependencies: - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - debug "^4.3.1" + boolbase "^1.0.0" + css-select "^5.1.0" + css-what "^6.1.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" -"@typescript-eslint/parser@^5.10.2", "@typescript-eslint/parser@^5.30.5", "@typescript-eslint/parser@^5.45.1", "@typescript-eslint/parser@^5.5.0": - version "5.48.1" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.1.tgz" - integrity sha512-4yg+FJR/V1M9Xoq56SF9Iygqm+r5LMXvheo6DQ7/yUWynQ4YfCRnsKuRgqH4EQ5Ya76rVwlEpw4Xu+TgWQUcdA== +cheerio@^1.0.0-rc.2: + version "1.0.0-rc.12" + resolved "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz" + integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== dependencies: - "@typescript-eslint/scope-manager" "5.48.1" - "@typescript-eslint/types" "5.48.1" - "@typescript-eslint/typescript-estree" "5.48.1" - debug "^4.3.4" + cheerio-select "^2.1.0" + dom-serializer "^2.0.0" + domhandler "^5.0.3" + domutils "^3.0.1" + htmlparser2 "^8.0.1" + parse5 "^7.0.0" + parse5-htmlparser2-tree-adapter "^7.0.0" -"@typescript-eslint/scope-manager@4.33.0": - version "4.33.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz" - integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== +chokidar@3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz" + integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.2.0" + optionalDependencies: + fsevents "~2.1.1" -"@typescript-eslint/scope-manager@5.48.1": - version "5.48.1" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.1.tgz" - integrity sha512-S035ueRrbxRMKvSTv9vJKIWgr86BD8s3RqoRZmsSh/s8HhIs90g6UlK8ZabUSjUZQkhVxt7nmZ63VJ9dcZhtDQ== +chokidar@3.5.1: + version "3.5.1" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== dependencies: - "@typescript-eslint/types" "5.48.1" - "@typescript-eslint/visitor-keys" "5.48.1" + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.3.1" -"@typescript-eslint/scope-manager@5.59.9": - version "5.59.9" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.9.tgz#eadce1f2733389cdb58c49770192c0f95470d2f4" - integrity sha512-8RA+E+w78z1+2dzvK/tGZ2cpGigBZ58VMEHDZtpE1v+LLjzrYGc8mMaTONSxKyEkz3IuXFM0IqYiGHlCsmlZxQ== +chokidar@3.5.3, "chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.0, chokidar@^3.5.2, chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: - "@typescript-eslint/types" "5.59.9" - "@typescript-eslint/visitor-keys" "5.59.9" + 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" -"@typescript-eslint/type-utils@5.48.1": - version "5.48.1" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.1.tgz" - integrity sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ== - dependencies: - "@typescript-eslint/typescript-estree" "5.48.1" - "@typescript-eslint/utils" "5.48.1" - debug "^4.3.4" - tsutils "^3.21.0" +chownr@^1.1.1, chownr@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== -"@typescript-eslint/types@4.33.0": - version "4.33.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz" - integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== -"@typescript-eslint/types@5.48.1": - version "5.48.1" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.1.tgz" - integrity sha512-xHyDLU6MSuEEdIlzrrAerCGS3T7AA/L8Hggd0RCYBi0w3JMvGYxlLlXHeg50JI9Tfg5MrtsfuNxbS/3zF1/ATg== +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== -"@typescript-eslint/types@5.59.9": - version "5.59.9" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.9.tgz#3b4e7ae63718ce1b966e0ae620adc4099a6dcc52" - integrity sha512-uW8H5NRgTVneSVTfiCVffBb8AbwWSKg7qcA4Ot3JI3MPCJGsB4Db4BhvAODIIYE5mNj7Q+VJkK7JxmRhk2Lyjw== +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -"@typescript-eslint/typescript-estree@4.33.0": - version "4.33.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz" - integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== - dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" +ci-info@^3.1.0, ci-info@^3.1.1, ci-info@^3.2.0, ci-info@^3.3.0: + version "3.7.1" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz" + integrity sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w== -"@typescript-eslint/typescript-estree@5.48.1": - version "5.48.1" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.1.tgz" - integrity sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA== +cids@^0.7.1: + version "0.7.5" + resolved "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz" + integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== dependencies: - "@typescript-eslint/types" "5.48.1" - "@typescript-eslint/visitor-keys" "5.48.1" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" + buffer "^5.5.0" + class-is "^1.1.0" + multibase "~0.6.0" + multicodec "^1.0.0" + multihashes "~0.4.15" -"@typescript-eslint/typescript-estree@5.59.9": - version "5.59.9" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.9.tgz#6bfea844e468427b5e72034d33c9fffc9557392b" - integrity sha512-pmM0/VQ7kUhd1QyIxgS+aRvMgw+ZljB3eDb+jYyp6d2bC0mQWLzUDF+DLwCTkQ3tlNyVsvZRXjFyV0LkU/aXjA== +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: - "@typescript-eslint/types" "5.59.9" - "@typescript-eslint/visitor-keys" "5.59.9" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" + inherits "^2.0.1" + safe-buffer "^5.0.1" -"@typescript-eslint/utils@5.48.1", "@typescript-eslint/utils@^5.13.0": - version "5.48.1" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.1.tgz" - integrity sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA== - dependencies: - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.48.1" - "@typescript-eslint/types" "5.48.1" - "@typescript-eslint/typescript-estree" "5.48.1" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - semver "^7.3.7" +class-is@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz" + integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== -"@typescript-eslint/utils@^5.45.0": - version "5.59.9" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.9.tgz#adee890107b5ffe02cd46fdaa6c2125fb3c6c7c4" - integrity sha512-1PuMYsju/38I5Ggblaeb98TOoUvjhRvLpLa1DoTOFaLWqaXl/1iQ1eGurTXgBY58NUdtfTXKP5xBq7q9NDaLKg== +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.59.9" - "@typescript-eslint/types" "5.59.9" - "@typescript-eslint/typescript-estree" "5.59.9" - eslint-scope "^5.1.1" - semver "^7.3.7" + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" -"@typescript-eslint/visitor-keys@4.33.0": - version "4.33.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz" - integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== +classic-level@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/classic-level/-/classic-level-1.2.0.tgz" + integrity sha512-qw5B31ANxSluWz9xBzklRWTUAJ1SXIdaVKTVS7HcTGKOAmExx65Wo5BUICW+YGORe2FOUaDghoI9ZDxj82QcFg== dependencies: - "@typescript-eslint/types" "4.33.0" - eslint-visitor-keys "^2.0.0" + abstract-level "^1.0.2" + catering "^2.1.0" + module-error "^1.0.1" + napi-macros "~2.0.0" + node-gyp-build "^4.3.0" -"@typescript-eslint/visitor-keys@5.48.1": - version "5.48.1" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.1.tgz" - integrity sha512-Ns0XBwmfuX7ZknznfXozgnydyR8F6ev/KEGePP4i74uL3ArsKbEhJ7raeKr1JSa997DBDwol/4a0Y+At82c9dA== +clean-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz" + integrity sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw== dependencies: - "@typescript-eslint/types" "5.48.1" - eslint-visitor-keys "^3.3.0" + escape-string-regexp "^1.0.5" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -"@typescript-eslint/visitor-keys@5.59.9": - version "5.59.9" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.9.tgz#9f86ef8e95aca30fb5a705bb7430f95fc58b146d" - integrity sha512-bT7s0td97KMaLwpEBckbzj/YohnvXtqbe2XgqNvTl6RJVakY5mvENOTPvw5u66nljfZxthESpDozs86U+oLY8Q== +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz" + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== dependencies: - "@typescript-eslint/types" "5.59.9" - eslint-visitor-keys "^3.3.0" + restore-cursor "^2.0.0" -"@ungap/promise-all-settled@1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz" - integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" -"@uniswap/lib@^4.0.1-alpha": - version "4.0.1-alpha" - resolved "https://registry.npmjs.org/@uniswap/lib/-/lib-4.0.1-alpha.tgz" - integrity sha512-f6UIliwBbRsgVLxIaBANF6w09tYqc6Y/qXdsrbEmXHyFA7ILiKrIwRFXe1yOg8M3cksgVsO9N7yuL2DdCGQKBA== +cli-highlight@^2.1.11: + version "2.1.11" + resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.11.tgz#49736fa452f0aaf4fae580e30acb26828d2dc1bf" + integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg== + dependencies: + chalk "^4.0.0" + highlight.js "^10.7.1" + mz "^2.4.0" + parse5 "^5.1.1" + parse5-htmlparser2-tree-adapter "^6.0.0" + yargs "^16.0.0" -"@uniswap/sdk-core@^3.0.1": - version "3.1.0" - resolved "https://registry.npmjs.org/@uniswap/sdk-core/-/sdk-core-3.1.0.tgz" - integrity sha512-YRrp6vYAbYmi3uDXQGkvj2eT8BMpNnUdCFb8GifDG0Ei+ohIpC4RNAB+5/ru3zR2Byhx8VahGrSKuvdd6BVMyA== +cli-table3@^0.5.0: + version "0.5.1" + resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz" + integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== dependencies: - "@ethersproject/address" "^5.0.2" - big.js "^5.2.2" - decimal.js-light "^2.5.0" - jsbi "^3.1.4" - tiny-invariant "^1.1.0" - toformat "^2.0.0" + object-assign "^4.1.0" + string-width "^2.1.1" + optionalDependencies: + colors "^1.1.2" -"@uniswap/sdk@^3.0.3": - version "3.0.3" - resolved "https://registry.npmjs.org/@uniswap/sdk/-/sdk-3.0.3.tgz" - integrity sha512-t4s8bvzaCFSiqD2qfXIm3rWhbdnXp+QjD3/mRaeVDHK7zWevs6RGEb1ohMiNgOCTZANvBayb4j8p+XFdnMBadQ== +cli-table@^0.3.1: + version "0.3.11" + resolved "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz" + integrity sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ== dependencies: - "@uniswap/v2-core" "^1.0.0" - big.js "^5.2.2" - decimal.js-light "^2.5.0" - jsbi "^3.1.1" - tiny-invariant "^1.1.0" - tiny-warning "^1.0.3" - toformat "^2.0.0" + colors "1.0.3" -"@uniswap/swap-router-contracts@^1.2.1": - version "1.3.0" - resolved "https://registry.npmjs.org/@uniswap/swap-router-contracts/-/swap-router-contracts-1.3.0.tgz" - integrity sha512-iKvCuRkHXEe0EMjOf8HFUISTIhlxI57kKFllf3C3PUIE0HmwxrayyoflwAz5u/TRsFGYqJ9IjX2UgzLCsrNa5A== +cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== dependencies: - "@openzeppelin/contracts" "3.4.2-solc-0.7" - "@uniswap/v2-core" "1.0.1" - "@uniswap/v3-core" "1.0.0" - "@uniswap/v3-periphery" "1.4.1" - dotenv "^14.2.0" - hardhat-watcher "^2.1.1" + slice-ansi "^3.0.0" + string-width "^4.2.0" -"@uniswap/v2-core@1.0.1", "@uniswap/v2-core@^1.0.0": - version "1.0.1" - resolved "https://registry.npmjs.org/@uniswap/v2-core/-/v2-core-1.0.1.tgz" - integrity sha512-MtybtkUPSyysqLY2U210NBDeCHX+ltHt3oADGdjqoThZaFRDKwM6k1Nb3F0A3hk5hwuQvytFWhrWHOEq6nVJ8Q== +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== -"@uniswap/v3-core-optimism@^1.0.0-rc.0": - version "1.0.0-rc.0" - resolved "https://registry.npmjs.org/@uniswap/v3-core-optimism/-/v3-core-optimism-1.0.0-rc.0.tgz" - integrity sha512-mJ5TwiWabR02G8lceVc2+3lmFOqVI3p++wpQQcvVHv+pfGq38NSaHbirmGB8sbv7x29wUteiNL7soHoD6tGe7g== +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== -"@uniswap/v3-core@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@uniswap/v3-core/-/v3-core-1.0.0.tgz" - integrity sha512-kSC4djMGKMHj7sLMYVnn61k9nu+lHjMIxgg9CDQT+s2QYLoA56GbSK9Oxr+qJXzzygbkrmuY6cwgP6cW2JXPFA== +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz" + integrity sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" -"@uniswap/v3-periphery@1.4.1": - version "1.4.1" - resolved "https://registry.npmjs.org/@uniswap/v3-periphery/-/v3-periphery-1.4.1.tgz" - integrity sha512-Ab0ZCKOQrQMKIcpBTezTsEhWfQjItd0TtkCG8mPhoQu+wC67nPaf4hYUhM6wGHeFUmDiYY5MpEQuokB0ENvoTg== +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== dependencies: - "@openzeppelin/contracts" "3.4.2-solc-0.7" - "@uniswap/lib" "^4.0.1-alpha" - "@uniswap/v2-core" "1.0.1" - "@uniswap/v3-core" "1.0.0" - base64-sol "1.0.1" - hardhat-watcher "^2.1.1" - -"@uniswap/v3-periphery@^1.0.1", "@uniswap/v3-periphery@^1.1.1": - version "1.4.3" - resolved "https://registry.npmjs.org/@uniswap/v3-periphery/-/v3-periphery-1.4.3.tgz" - integrity sha512-80c+wtVzl5JJT8UQskxVYYG3oZb4pkhY0zDe0ab/RX4+8f9+W5d8wI4BT0wLB0wFQTSnbW+QdBSpkHA/vRyGBA== - dependencies: - "@openzeppelin/contracts" "3.4.2-solc-0.7" - "@uniswap/lib" "^4.0.1-alpha" - "@uniswap/v2-core" "1.0.1" - "@uniswap/v3-core" "1.0.0" - base64-sol "1.0.1" - -"@uniswap/v3-sdk@^3.6.2": - version "3.9.0" - resolved "https://registry.npmjs.org/@uniswap/v3-sdk/-/v3-sdk-3.9.0.tgz" - integrity sha512-LuoF3UcY1DxSAQKJ3E4/1Eq4HaNp+x+7q9mvbpiu+/PBj+O1DjLforAMrKxu+RsA0aarmZtz7yBnAPy+akgfgQ== - dependencies: - "@ethersproject/abi" "^5.0.12" - "@ethersproject/solidity" "^5.0.9" - "@uniswap/sdk-core" "^3.0.1" - "@uniswap/swap-router-contracts" "^1.2.1" - "@uniswap/v3-periphery" "^1.1.1" - "@uniswap/v3-staker" "1.0.0" - tiny-invariant "^1.1.0" - tiny-warning "^1.0.3" + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" -"@uniswap/v3-staker@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@uniswap/v3-staker/-/v3-staker-1.0.0.tgz" - integrity sha512-JV0Qc46Px5alvg6YWd+UIaGH9lDuYG/Js7ngxPit1SPaIP30AlVer1UYB7BRYeUVVxE+byUyIeN5jeQ7LLDjIw== +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== dependencies: - "@openzeppelin/contracts" "3.4.1-solc-0.7-2" - "@uniswap/v3-core" "1.0.0" - "@uniswap/v3-periphery" "^1.0.1" + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" -"@vue/compiler-core@3.2.45": - version "3.2.45" - resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz" - integrity sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A== +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: - "@babel/parser" "^7.16.4" - "@vue/shared" "3.2.45" - estree-walker "^2.0.2" - source-map "^0.6.1" + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" -"@vue/compiler-dom@3.2.45": - version "3.2.45" - resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz" - integrity sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw== +cliui@^8.0.1: + 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== dependencies: - "@vue/compiler-core" "3.2.45" - "@vue/shared" "3.2.45" + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" -"@vue/compiler-sfc@^3.0.5": - version "3.2.45" - resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz" - integrity sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q== +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== dependencies: - "@babel/parser" "^7.16.4" - "@vue/compiler-core" "3.2.45" - "@vue/compiler-dom" "3.2.45" - "@vue/compiler-ssr" "3.2.45" - "@vue/reactivity-transform" "3.2.45" - "@vue/shared" "3.2.45" - estree-walker "^2.0.2" - magic-string "^0.25.7" - postcss "^8.1.10" - source-map "^0.6.1" + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" -"@vue/compiler-ssr@3.2.45": - version "3.2.45" - resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz" - integrity sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ== +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== dependencies: - "@vue/compiler-dom" "3.2.45" - "@vue/shared" "3.2.45" + mimic-response "^1.0.0" -"@vue/reactivity-transform@3.2.45": - version "3.2.45" - resolved "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz" - integrity sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ== - dependencies: - "@babel/parser" "^7.16.4" - "@vue/compiler-core" "3.2.45" - "@vue/shared" "3.2.45" - estree-walker "^2.0.2" - magic-string "^0.25.7" +clone@2.1.2, clone@^2.0.0: + version "2.1.2" + resolved "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== -"@vue/shared@3.2.45": - version "3.2.45" - resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz" - integrity sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg== +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== -"@walletconnect/browser-utils@^1.8.0": - version "1.8.0" - resolved "https://registry.npmjs.org/@walletconnect/browser-utils/-/browser-utils-1.8.0.tgz" - integrity sha512-Wcqqx+wjxIo9fv6eBUFHPsW1y/bGWWRboni5dfD8PtOmrihrEpOCmvRJe4rfl7xgJW8Ea9UqKEaq0bIRLHlK4A== +cmd-shim@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz" + integrity sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw== 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" + mkdirp-infer-owner "^2.0.0" -"@walletconnect/client@^1.8.0": - version "1.8.0" - resolved "https://registry.npmjs.org/@walletconnect/client/-/client-1.8.0.tgz" - integrity sha512-svyBQ14NHx6Cs2j4TpkQaBI/2AF4+LXz64FojTjMtV4VMMhl81jSO1vNeg+yYhQzvjcGH/GpSwixjyCW0xFBOQ== - dependencies: - "@walletconnect/core" "^1.8.0" - "@walletconnect/iso-crypto" "^1.8.0" - "@walletconnect/types" "^1.8.0" - "@walletconnect/utils" "^1.8.0" +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== -"@walletconnect/core@^1.8.0": - version "1.8.0" - resolved "https://registry.npmjs.org/@walletconnect/core/-/core-1.8.0.tgz" - integrity sha512-aFTHvEEbXcZ8XdWBw6rpQDte41Rxwnuk3SgTD8/iKGSRTni50gI9S3YEzMj05jozSiOBxQci4pJDMVhIUMtarw== +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== dependencies: - "@walletconnect/socket-transport" "^1.8.0" - "@walletconnect/types" "^1.8.0" - "@walletconnect/utils" "^1.8.0" + map-visit "^1.0.0" + object-visit "^1.0.0" -"@walletconnect/crypto@^1.0.2": - version "1.0.3" - resolved "https://registry.npmjs.org/@walletconnect/crypto/-/crypto-1.0.3.tgz" - integrity sha512-+2jdORD7XQs76I2Odgr3wwrtyuLUXD/kprNVsjWRhhhdO9Mt6WqVzOPu0/t7OHSmgal8k7SoBQzUc5hu/8zL/g== +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 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" + color-name "1.1.3" -"@walletconnect/encoding@^1.0.1", "@walletconnect/encoding@^1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/@walletconnect/encoding/-/encoding-1.0.2.tgz" - integrity sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag== +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: - is-typedarray "1.0.0" - tslib "1.14.1" - typedarray-to-buffer "3.1.5" + color-name "~1.1.4" -"@walletconnect/environment@^1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@walletconnect/environment/-/environment-1.0.1.tgz" - integrity sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg== - dependencies: - tslib "1.14.1" +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -"@walletconnect/http-connection@^1.8.0": - version "1.8.0" - resolved "https://registry.npmjs.org/@walletconnect/http-connection/-/http-connection-1.8.0.tgz" - integrity sha512-IziEr3c53qsMromK7jz0EkbKDHlryRbxXdFR+xaG+S5nfxtUdAfjzlZabvczXdDCgmTij6KbNsZAjBMqCBzACw== - dependencies: - "@walletconnect/types" "^1.8.0" - "@walletconnect/utils" "^1.8.0" - eventemitter3 "4.0.7" - xhr2-cookies "1.1.0" +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -"@walletconnect/iso-crypto@^1.8.0": - version "1.8.0" - resolved "https://registry.npmjs.org/@walletconnect/iso-crypto/-/iso-crypto-1.8.0.tgz" - integrity sha512-pWy19KCyitpfXb70hA73r9FcvklS+FvO9QUIttp3c2mfW8frxgYeRXfxLRCIQTkaYueRKvdqPjbyhPLam508XQ== - dependencies: - "@walletconnect/crypto" "^1.0.2" - "@walletconnect/types" "^1.8.0" - "@walletconnect/utils" "^1.8.0" +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -"@walletconnect/jsonrpc-types@^1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.2.tgz" - integrity sha512-CZe8tjJX73OWdHjrBHy7HtAapJ2tT0Q3TYhPBhRxi3643lwPIQWC9En45ldY14TZwgSewkbZ0FtGBZK0G7Bbyg== - dependencies: - keyvaluestorage-interface "^1.0.0" - tslib "1.14.1" +colorette@^2.0.14, colorette@^2.0.16, colorette@^2.0.7: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== -"@walletconnect/jsonrpc-utils@^1.0.3": - version "1.0.6" - resolved "https://registry.npmjs.org/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.6.tgz" - integrity sha512-snp0tfkjPiDLQp/jrBewI+9SM33GPV4+Gjgldod6XQ7rFyQ5FZjnBxUkY4xWH0+arNxzQSi6v5iDXjCjSaorpg== - dependencies: - "@walletconnect/environment" "^1.0.1" - "@walletconnect/jsonrpc-types" "^1.0.2" - tslib "1.14.1" +colors@1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz" + integrity sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== -"@walletconnect/mobile-registry@^1.4.0": +colors@1.4.0, colors@^1.1.2: version "1.4.0" - resolved "https://registry.npmjs.org/@walletconnect/mobile-registry/-/mobile-registry-1.4.0.tgz" - integrity sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw== + resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== -"@walletconnect/qrcode-modal@^1.8.0": - version "1.8.0" - resolved "https://registry.npmjs.org/@walletconnect/qrcode-modal/-/qrcode-modal-1.8.0.tgz" - integrity sha512-BueaFefaAi8mawE45eUtztg3ZFbsAH4DDXh1UNwdUlsvFMjqcYzLUG0xZvDd6z2eOpbgDg2N3bl6gF0KONj1dg== +columnify@^1.5.4: + version "1.6.0" + resolved "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz" + integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== 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" + strip-ansi "^6.0.1" + wcwidth "^1.0.0" -"@walletconnect/randombytes@^1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@walletconnect/randombytes/-/randombytes-1.0.3.tgz" - integrity sha512-35lpzxcHFbTN3ABefC9W+uBpNZl1GC4Wpx0ed30gibfO/y9oLdy1NznbV96HARQKSBV9J9M/rrtIvf6a23jfYw== +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: - "@walletconnect/encoding" "^1.0.2" - "@walletconnect/environment" "^1.0.1" - randombytes "^2.1.0" - tslib "1.14.1" + delayed-stream "~1.0.0" -"@walletconnect/safe-json@1.0.0": - 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== +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== -"@walletconnect/socket-transport@^1.8.0": - version "1.8.0" - resolved "https://registry.npmjs.org/@walletconnect/socket-transport/-/socket-transport-1.8.0.tgz" - integrity sha512-5DyIyWrzHXTcVp0Vd93zJ5XMW61iDM6bcWT4p8DTRfFsOtW46JquruMhxOLeCOieM4D73kcr3U7WtyR4JUsGuQ== +command-line-args@^4.0.7: + version "4.0.7" + resolved "https://registry.npmjs.org/command-line-args/-/command-line-args-4.0.7.tgz" + integrity sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA== dependencies: - "@walletconnect/types" "^1.8.0" - "@walletconnect/utils" "^1.8.0" - ws "7.5.3" - -"@walletconnect/types@^1.8.0": - version "1.8.0" - resolved "https://registry.npmjs.org/@walletconnect/types/-/types-1.8.0.tgz" - integrity sha512-Cn+3I0V0vT9ghMuzh1KzZvCkiAxTq+1TR2eSqw5E5AVWfmCtECFkVZBP6uUJZ8YjwLqXheI+rnjqPy7sVM4Fyg== - -"@walletconnect/utils@^1.8.0": - version "1.8.0" - resolved "https://registry.npmjs.org/@walletconnect/utils/-/utils-1.8.0.tgz" - integrity sha512-zExzp8Mj1YiAIBfKNm5u622oNw44WOESzo6hj+Q3apSMIb0Jph9X3GDIdbZmvVZsNPxWDL7uodKgZcCInZv2vA== - 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" + array-back "^2.0.0" + find-replace "^1.0.3" + typical "^2.6.1" -"@walletconnect/web3-provider@^1.8.0": - version "1.8.0" - resolved "https://registry.npmjs.org/@walletconnect/web3-provider/-/web3-provider-1.8.0.tgz" - integrity sha512-lqqEO0oRmCehH+c8ZPk3iH7I7YtbzmkWd58/Or2AgWAl869JamzndKCD3sTlNsPRQLxxPpraHQqzur7uclLWvg== +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== dependencies: - "@walletconnect/client" "^1.8.0" - "@walletconnect/http-connection" "^1.8.0" - "@walletconnect/qrcode-modal" "^1.8.0" - "@walletconnect/types" "^1.8.0" - "@walletconnect/utils" "^1.8.0" - web3-provider-engine "16.0.1" - -"@walletconnect/window-getters@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.0.tgz" - integrity sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA== + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" -"@walletconnect/window-getters@^1.0.0": - version "1.0.1" - resolved "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz" - integrity sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q== +command-line-usage@^6.1.0: + 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== dependencies: - tslib "1.14.1" + array-back "^4.0.2" + chalk "^2.4.2" + table-layout "^1.0.2" + typical "^5.2.0" -"@walletconnect/window-metadata@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.0.tgz" - integrity sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA== - dependencies: - "@walletconnect/window-getters" "^1.0.0" +commander@2.18.0: + version "2.18.0" + resolved "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz" + integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ== -"@webassemblyjs/ast@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz" - integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - -"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" - integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - -"@webassemblyjs/floating-point-hex-parser@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz" - integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== +commander@3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz" + integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -"@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== +commander@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-11.0.0.tgz#43e19c25dbedc8256203538e8d7e9346877a6f67" + integrity sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ== -"@webassemblyjs/helper-api-error@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz" - integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== +commander@^2.12.1, commander@^2.19.0, commander@^2.20.0: + 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== -"@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== -"@webassemblyjs/helper-buffer@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz" - integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== +commander@^9.4.1: + version "9.5.0" + resolved "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== -"@webassemblyjs/helper-buffer@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" - integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== +comment-parser@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.3.1.tgz#3d7ea3adaf9345594aedee6563f422348f165c1b" + integrity sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA== -"@webassemblyjs/helper-numbers@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz" - integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@xtuc/long" "4.2.2" +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== -"@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== +compare-func@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz" + integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz" - integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== + array-ify "^1.0.0" + dot-prop "^5.1.0" -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== +component-emitter@^1.2.1, component-emitter@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== -"@webassemblyjs/helper-wasm-section@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz" - integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -"@webassemblyjs/helper-wasm-section@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" - integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== +concat-stream@^1.5.1, concat-stream@^1.6.0, concat-stream@^1.6.2: + version "1.6.2" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" -"@webassemblyjs/ieee754@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz" - integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== +concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== dependencies: - "@xtuc/ieee754" "^1.2.0" + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.0.2" + typedarray "^0.0.6" -"@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== +config-chain@^1.1.12: + version "1.1.13" + resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== dependencies: - "@xtuc/ieee754" "^1.2.0" + ini "^1.3.4" + proto-list "~1.2.1" -"@webassemblyjs/leb128@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz" - integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== - dependencies: - "@xtuc/long" "4.2.2" +console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== -"@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== +constant-case@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz" + integrity sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ== dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz" - integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== - -"@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== + snake-case "^2.1.0" + upper-case "^1.1.1" -"@webassemblyjs/wasm-edit@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz" - integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/helper-wasm-section" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-opt" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - "@webassemblyjs/wast-printer" "1.11.1" + safe-buffer "5.2.1" -"@webassemblyjs/wasm-edit@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" - integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== +content-hash@^2.5.2: + version "2.5.2" + resolved "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz" + integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-opt" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - "@webassemblyjs/wast-printer" "1.11.6" + cids "^0.7.1" + multicodec "^0.5.5" + multihashes "^0.4.15" -"@webassemblyjs/wasm-gen@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz" - integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -"@webassemblyjs/wasm-gen@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" - integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== +conventional-changelog-angular@^5.0.12: + version "5.0.13" + resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz" + integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" + compare-func "^2.0.0" + q "^1.5.1" -"@webassemblyjs/wasm-opt@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz" - integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== +conventional-changelog-core@^4.2.2: + version "4.2.4" + resolved "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz" + integrity sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg== dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" + add-stream "^1.0.0" + conventional-changelog-writer "^5.0.0" + conventional-commits-parser "^3.2.0" + dateformat "^3.0.0" + get-pkg-repo "^4.0.0" + git-raw-commits "^2.0.8" + git-remote-origin-url "^2.0.0" + git-semver-tags "^4.1.1" + lodash "^4.17.15" + normalize-package-data "^3.0.0" + q "^1.5.1" + read-pkg "^3.0.0" + read-pkg-up "^3.0.0" + through2 "^4.0.0" -"@webassemblyjs/wasm-opt@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" - integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" +conventional-changelog-preset-loader@^2.3.4: + version "2.3.4" + resolved "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz" + integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== -"@webassemblyjs/wasm-parser@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz" - integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== +conventional-changelog-writer@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz" + integrity sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ== dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" + conventional-commits-filter "^2.0.7" + dateformat "^3.0.0" + handlebars "^4.7.7" + json-stringify-safe "^5.0.1" + lodash "^4.17.15" + meow "^8.0.0" + semver "^6.0.0" + split "^1.0.0" + through2 "^4.0.0" -"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" - integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== +conventional-commits-filter@^2.0.7: + version "2.0.7" + resolved "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz" + integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" + lodash.ismatch "^4.4.0" + modify-values "^1.0.0" -"@webassemblyjs/wast-printer@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz" - integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== +conventional-commits-parser@^3.2.0: + version "3.2.4" + resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz" + integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== dependencies: - "@webassemblyjs/ast" "1.11.1" - "@xtuc/long" "4.2.2" + JSONStream "^1.0.4" + is-text-path "^1.0.1" + lodash "^4.17.15" + meow "^8.0.0" + split2 "^3.0.0" + through2 "^4.0.0" -"@webassemblyjs/wast-printer@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" - integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== +conventional-recommended-bump@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz" + integrity sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw== dependencies: - "@webassemblyjs/ast" "1.11.6" - "@xtuc/long" "4.2.2" + concat-stream "^2.0.0" + conventional-changelog-preset-loader "^2.3.4" + conventional-commits-filter "^2.0.7" + conventional-commits-parser "^3.2.0" + git-raw-commits "^2.0.8" + git-semver-tags "^4.1.1" + meow "^8.0.0" + q "^1.5.1" -"@webpack-cli/configtest@^2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.1.tgz" - integrity sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A== +convert-source-map@^1.5.1, convert-source-map@^1.7.0: + 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== -"@webpack-cli/info@^2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.1.tgz" - integrity sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA== +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -"@webpack-cli/serve@^2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.1.tgz" - integrity sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw== +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== -"@wry/context@^0.7.0": - version "0.7.0" - resolved "https://registry.npmjs.org/@wry/context/-/context-0.7.0.tgz" - integrity sha512-LcDAiYWRtwAoSOArfk7cuYvFXytxfVrdX7yxoUmK7pPITLk5jYh2F8knCwS7LjgYL8u1eidPlKKV6Ikqq0ODqQ== - dependencies: - tslib "^2.3.0" +cookie@^0.4.1: + version "0.4.2" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== -"@wry/equality@^0.5.0": - version "0.5.3" - resolved "https://registry.npmjs.org/@wry/equality/-/equality-0.5.3.tgz" - integrity sha512-avR+UXdSrsF2v8vIqIgmeTY0UR91UT+IyablCyKe/uk22uOJ8fusKZnH9JH9e1/EtLeNJBtagNmL3eJdnOV53g== - dependencies: - tslib "^2.3.0" +cookiejar@^2.1.1, cookiejar@^2.1.3: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" + integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== -"@wry/trie@^0.3.0": - version "0.3.2" - resolved "https://registry.npmjs.org/@wry/trie/-/trie-0.3.2.tgz" - integrity sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ== - dependencies: - tslib "^2.3.0" +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== -"@wry/trie@^0.4.0": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.4.3.tgz#077d52c22365871bf3ffcbab8e95cb8bc5689af4" - integrity sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w== +copyfiles@^2.3.0: + version "2.4.1" + resolved "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz" + integrity sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg== dependencies: - tslib "^2.3.0" + glob "^7.0.5" + minimatch "^3.0.3" + mkdirp "^1.0.4" + noms "0.0.0" + through2 "^2.0.1" + untildify "^4.0.0" + yargs "^16.1.0" -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== +core-js-pure@^3.0.1: + version "3.27.1" + resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.27.1.tgz" + integrity sha512-BS2NHgwwUppfeoqOXqi08mUqS5FiZpuRuJJpKsaME7kJz0xxuk0xkhDdfMIlP/zLa80krBqss1LtD7f889heAw== -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +core-js@^2.4.0, core-js@^2.5.0: + version "2.6.12" + resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -"@yarnpkg/esbuild-plugin-pnp@^3.0.0-rc.10": - version "3.0.0-rc.15" - resolved "https://registry.yarnpkg.com/@yarnpkg/esbuild-plugin-pnp/-/esbuild-plugin-pnp-3.0.0-rc.15.tgz#4e40e7d2eb28825c9a35ab9d04c363931d7c0e67" - integrity sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA== - dependencies: - tslib "^2.4.0" +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -"@yarnpkg/fslib@2.10.3": - version "2.10.3" - resolved "https://registry.yarnpkg.com/@yarnpkg/fslib/-/fslib-2.10.3.tgz#a8c9893df5d183cf6362680b9f1c6d7504dd5717" - integrity sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A== +cors@^2.8.1, cors@^2.8.5: + version "2.8.5" + resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== dependencies: - "@yarnpkg/libzip" "^2.3.0" - tslib "^1.13.0" + object-assign "^4" + vary "^1" -"@yarnpkg/libzip@2.3.0", "@yarnpkg/libzip@^2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@yarnpkg/libzip/-/libzip-2.3.0.tgz#fe1e762e47669f6e2c960fc118436608d834e3be" - integrity sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg== +cosmiconfig@^5.0.7: + version "5.2.1" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== dependencies: - "@types/emscripten" "^1.39.6" - tslib "^1.13.0" + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" -"@yarnpkg/lockfile@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz" - integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== +cosmiconfig@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" -"@zeit/schemas@2.6.0": - version "2.6.0" - resolved "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.6.0.tgz" - integrity sha512-uUrgZ8AxS+Lio0fZKAipJjAh415JyrOZowliZAzmnJSsf7piVL5w+G0+gFJ0KSu3QRhvui/7zuvpLz03YjXAhg== +crc-32@^1.2.0: + version "1.2.2" + resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== -Base64@~0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/Base64/-/Base64-0.2.1.tgz#ba3a4230708e186705065e66babdd4c35cf60028" - integrity sha512-reGEWshDmTDQDsCec/HduOO9Wyj6yMOupMfhIf3ugN1TDlK2NQW4DDJSqNNtp380SNcvRfXtO8HSCQot0d0SMw== +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" -JSONStream@^1.0.4, JSONStream@^1.3.5: - version "1.3.5" - resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" -abab@^2.0.3, abab@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" - integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" + 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" -abbrev@1, abbrev@^1.0.0: +create-require@^1.1.0: version "1.1.1" - resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -abbrev@1.0.x: - version "1.0.9" - resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" - integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q== + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== +cross-fetch@^2.1.0, cross-fetch@^2.1.1: + version "2.2.6" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.6.tgz" + integrity sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA== dependencies: - event-target-shim "^5.0.0" - -abortcontroller-polyfill@^1.7.3: - version "1.7.5" - resolved "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz" - integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== + node-fetch "^2.6.7" + whatwg-fetch "^2.0.4" -abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz" - integrity sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA== +cross-fetch@^3.1.4: + version "3.1.5" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== dependencies: - buffer "^6.0.3" - catering "^2.1.0" - is-buffer "^2.0.5" - level-supports "^4.0.0" - level-transcoder "^1.0.1" - module-error "^1.0.1" - queue-microtask "^1.2.3" + node-fetch "2.6.7" -abstract-leveldown@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-3.0.0.tgz" - integrity sha512-KUWx9UWGQD12zsmLNj64/pndaz4iJh/Pj7nopgkfDG6RlCcbMZvT6+9l7dchK4idog2Is8VdC/PvNbFuFmalIQ== +cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz" + integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A== dependencies: - xtend "~4.0.0" + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" -abstract-leveldown@^2.4.1, abstract-leveldown@~2.7.1: - version "2.7.2" - resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz" - integrity sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w== +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: - xtend "~4.0.0" + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" -abstract-leveldown@^5.0.0, abstract-leveldown@~5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz" - integrity sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A== +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: - xtend "~4.0.0" + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" -abstract-leveldown@^6.2.1: - version "6.3.0" - resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz" - integrity sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ== - dependencies: - buffer "^5.5.0" - immediate "^3.2.3" - level-concat-iterator "~2.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" +crypt@0.0.2, "crypt@>= 0.0.1": + version "0.0.2" + resolved "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== -abstract-leveldown@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz#08d19d4e26fb5be426f7a57004851b39e1795a2e" - integrity sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ== - dependencies: - buffer "^6.0.3" - catering "^2.0.0" - is-buffer "^2.0.5" - level-concat-iterator "^3.0.0" - level-supports "^2.0.1" - queue-microtask "^1.2.3" - -abstract-leveldown@~0.12.0, abstract-leveldown@~0.12.1: - version "0.12.4" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-0.12.4.tgz#29e18e632e60e4e221d5810247852a63d7b2e410" - integrity sha512-TOod9d5RDExo6STLMGa+04HGkl+TlMfbDnTyN93/ETJ9DpQ0DaYLqcMZlbXvdc4W3vVo1Qrl+WhSp8zvDsJ+jA== - dependencies: - xtend "~3.0.0" - -abstract-leveldown@~2.6.0: - version "2.6.3" - resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz" - integrity sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA== +crypto-addr-codec@^0.1.7: + version "0.1.7" + resolved "https://registry.npmjs.org/crypto-addr-codec/-/crypto-addr-codec-0.1.7.tgz" + integrity sha512-X4hzfBzNhy4mAc3UpiXEC/L0jo5E8wAa9unsnA8nNXYzXjCcGk83hfC5avJWCSGT8V91xMnAS9AKMHmjw5+XCg== dependencies: - xtend "~4.0.0" + base-x "^3.0.8" + big-integer "1.6.36" + blakejs "^1.1.0" + bs58 "^4.0.1" + ripemd160-min "0.0.6" + safe-buffer "^5.2.0" + sha3 "^2.1.1" -abstract-leveldown@~6.2.1, abstract-leveldown@~6.2.3: - version "6.2.3" - resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz" - integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ== +crypto-browserify@3.12.0: + version "3.12.0" + resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== dependencies: - buffer "^5.5.0" - immediate "^3.2.3" - level-concat-iterator "~2.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" + 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" -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: - 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" +crypto-js@^3.1.9-1: + version "3.3.0" + resolved "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz" + integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q== -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== +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -acorn-import-assertions@^1.7.6: - version "1.8.0" - resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz" - integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== - -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== - -acorn-jsx@^5.0.0, acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^7.1.1, acorn-walk@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" -acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== +css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== -acorn@^6.0.7: - version "6.4.2" - resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== +csv-generate@^3.4.3: + version "3.4.3" + resolved "https://registry.npmjs.org/csv-generate/-/csv-generate-3.4.3.tgz" + integrity sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw== -acorn@^7.1.1, acorn@^7.4.0, acorn@^7.4.1: - version "7.4.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +csv-parse@^4.16.3: + version "4.16.3" + resolved "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz" + integrity sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg== -acorn@^8.2.4, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.2: - version "8.8.2" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz" - integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== +csv-stringify@^5.6.5: + version "5.6.5" + resolved "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.6.5.tgz" + integrity sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A== -acorn@^8.4.1, acorn@^8.8.0: - version "8.8.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz" - integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== +csv@^5.5.0: + version "5.5.3" + resolved "https://registry.npmjs.org/csv/-/csv-5.5.3.tgz" + integrity sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g== + dependencies: + csv-generate "^3.4.3" + csv-parse "^4.16.3" + csv-stringify "^5.6.5" + stream-transform "^2.1.3" -add-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz" - integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" -address@^1.0.1, address@^1.1.2: - version "1.2.2" - resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz" - integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== +dargs@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz" + integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== -adjust-sourcemap-loader@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99" - integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: - loader-utils "^2.0.0" - regex-parser "^2.2.11" + assert-plus "^1.0.0" -adm-zip@^0.4.16: - version "0.4.16" - resolved "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz" - integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== +date-fns@^2.29.3: + version "2.30.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" + integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== + dependencies: + "@babel/runtime" "^7.21.0" -aes-js@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz" - integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== +dateformat@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz" + integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== -aes-js@^3.1.1, aes-js@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz" - integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== +dateformat@^4.6.3: + version "4.6.3" + resolved "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz" + integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== -agent-base@5: - version "5.1.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" - integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== +death@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/death/-/death-1.1.0.tgz" + integrity sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w== -agent-base@6, agent-base@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: - debug "4" + ms "2.0.0" -agentkeepalive@^4.1.3: - version "4.2.1" - resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz" - integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== +debug@3.2.6: + version "3.2.6" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: - debug "^4.1.0" - depd "^1.1.2" - humanize-ms "^1.2.1" + ms "^2.1.1" -agentkeepalive@^4.2.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" - integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg== +debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: - debug "^4.1.0" - depd "^2.0.0" - humanize-ms "^1.2.1" + ms "2.1.2" -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== +debug@4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" + ms "2.1.2" -ajv-formats@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== +debug@^3.1.0, debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: - ajv "^8.0.0" + ms "^2.1.1" -ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== +debuglog@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz" + integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== -ajv-keywords@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== +decamelize-keys@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz" + integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== dependencies: - fast-deep-equal "^3.1.3" + decamelize "^1.1.0" + map-obj "^1.0.0" -ajv@6.5.3: - version "6.5.3" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz" - integrity sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg== - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" +decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.6.1, ajv@^6.9.1: - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - 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" +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== -ajv@^8.0.0, ajv@^8.0.1, ajv@^8.6.0, ajv@^8.9.0: - version "8.12.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" +decimal.js-light@^2.5.0: + version "2.5.1" + resolved "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz" + integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg== -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" - integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== +decode-uri-component@^0.2.0: + version "0.2.2" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== -anchor-markdown-header@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.6.0.tgz" - integrity sha512-v7HJMtE1X7wTpNFseRhxsY/pivP4uAJbidVhPT+yhz4i/vV1+qx371IXuV9V7bN6KjFtheLJxqaSm0Y/8neJTA== +decompress-response@^3.3.0: + 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: - emoji-regex "~10.1.0" + mimic-response "^1.0.0" -ansi-align@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz" - integrity sha512-TdlOggdA/zURfMYa7ABC66j+oqfMew58KpJMbUlH3bcZP1b+cBHIHDDn5uH9INsxrHBPjsqM0tDB4jPTF/vgJA== +decompress-response@^4.2.0: + version "4.2.1" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz" + integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== dependencies: - string-width "^2.0.0" - -ansi-colors@3.2.3: - version "3.2.3" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz" - integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== + mimic-response "^2.0.0" -ansi-colors@4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== +decompress-response@^6.0.0: + 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" -ansi-colors@^3.2.3: - version "3.2.4" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== -ansi-colors@^4.1.1, ansi-colors@^4.1.3: +deep-eql@^4.0.1, deep-eql@^4.1.2: 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== - -ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz" + integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== + dependencies: + type-detect "^4.0.0" -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0, ansi-escapes@^4.3.1: - version "4.3.2" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== +deep-equal@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== dependencies: - type-fest "^0.21.3" + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" -ansi-html-community@0.0.8, ansi-html-community@^0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" - integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== +deep-extend@^0.6.0, deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== +deep-is@^0.1.3, deep-is@~0.1.3: + 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== -ansi-regex@^3.0.0: +default-require-extensions@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz" - integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== - -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + resolved "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz" + integrity sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw== + dependencies: + strip-bom "^4.0.0" -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" -ansi-sequence-parser@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz#4d790f31236ac20366b23b3916b789e1bde39aed" - integrity sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ== +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== +defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - 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== +deferred-leveldown@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-7.0.0.tgz#39802715fda6ec06d0159a8b28bd1c7e2b1cf0bf" + integrity sha512-QKN8NtuS3BC6m0B8vAnBls44tX1WXAFATUsJlruyAYbZpysWV3siH6o/i3g9DCHauzodksO60bdj5NazNbjCmg== dependencies: - color-convert "^1.9.0" + abstract-leveldown "^7.2.0" + inherits "^2.0.3" -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== +deferred-leveldown@~1.2.1: + version "1.2.2" + resolved "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz" + integrity sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA== dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + abstract-leveldown "~2.6.0" -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== +deferred-leveldown@~4.0.0: + version "4.0.2" + resolved "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz" + integrity sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww== + dependencies: + abstract-leveldown "~5.0.0" + inherits "^2.0.3" -ansicolors@~0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz" - integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg== +deferred-leveldown@~5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz" + integrity sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw== + dependencies: + abstract-leveldown "~6.2.1" + inherits "^2.0.3" -antlr4@4.7.1: - version "4.7.1" - resolved "https://registry.npmjs.org/antlr4/-/antlr4-4.7.1.tgz" - integrity sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ== +define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" -antlr4ts@^0.5.0-alpha.4: - version "0.5.0-alpha.4" - resolved "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz" - integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== + dependencies: + is-descriptor "^0.1.0" -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== + dependencies: + is-descriptor "^1.0.0" -anymatch@^3.0.3, anymatch@~3.1.1, anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" + is-descriptor "^1.0.2" + isobject "^3.0.1" -app-root-dir@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/app-root-dir/-/app-root-dir-1.0.2.tgz#38187ec2dea7577fff033ffcb12172692ff6e118" - integrity sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g== +defined@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz" + integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== -app-root-path@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-3.1.0.tgz#5971a2fc12ba170369a7a1ef018c71e6e47c2e86" - integrity sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA== +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -append-transform@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz" - integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg== - dependencies: - default-require-extensions "^3.0.0" +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== +depcheck@^1.4.3: + version "1.4.3" + resolved "https://registry.npmjs.org/depcheck/-/depcheck-1.4.3.tgz" + integrity sha512-vy8xe1tlLFu7t4jFyoirMmOR7x7N601ubU9Gkifyr9z8rjBFtEdWHDBMqXyk6OkK+94NXutzddVXJuo0JlUQKQ== + dependencies: + "@babel/parser" "7.16.4" + "@babel/traverse" "^7.12.5" + "@vue/compiler-sfc" "^3.0.5" + camelcase "^6.2.0" + cosmiconfig "^7.0.0" + debug "^4.2.0" + deps-regex "^0.1.4" + ignore "^5.1.8" + is-core-module "^2.4.0" + js-yaml "^3.14.0" + json5 "^2.1.3" + lodash "^4.17.20" + minimatch "^3.0.4" + multimatch "^5.0.0" + please-upgrade-node "^3.2.0" + query-ast "^1.0.3" + readdirp "^3.5.0" + require-package-name "^2.0.1" + resolve "^1.18.1" + sass "^1.29.0" + scss-parser "^1.0.4" + semver "^7.3.2" + yargs "^16.1.0" -"aproba@^1.0.3 || ^2.0.0", aproba@^2.0.0: +depd@2.0.0, depd@^2.0.0, depd@~2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -arch@^2.1.0: - version "2.2.0" - resolved "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz" - integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== +depd@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== -archy@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz" - integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== +deprecation@^2.0.0, deprecation@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz" + integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== -are-docs-informative@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/are-docs-informative/-/are-docs-informative-0.0.2.tgz#387f0e93f5d45280373d387a59d34c96db321963" - integrity sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig== +deps-regex@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/deps-regex/-/deps-regex-0.1.4.tgz" + integrity sha512-3tzwGYogSJi8HoG93R5x9NrdefZQOXgHgGih/7eivloOq6yC6O+yoFxZnkgP661twvfILONfoKRdF9GQOGx2RA== -are-we-there-yet@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" - integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" -are-we-there-yet@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" - integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -are-we-there-yet@~1.1.2: - version "1.1.7" - resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz" - integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz" + integrity sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A== dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" + repeating "^2.0.0" -arg@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/arg/-/arg-2.0.0.tgz" - integrity sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w== +detect-indent@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz" + integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== +detect-indent@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== -arg@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" - integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz" + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== +detect-port@^1.3.0: + version "1.5.1" + resolved "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz" + integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + address "^1.0.1" + debug "4" -aria-query@^4.2.2: - 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== +dezalgo@^1.0.0, dezalgo@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz" + integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" + asap "^2.0.0" + wrappy "1" -aria-query@^5.0.0: - version "5.1.3" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" - integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== - dependencies: - deep-equal "^2.0.5" +diff@3.5.0, diff@^3.1.0: + version "3.5.0" + resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" - integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== +diff@5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" - integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== +diff@^5.0.0, diff@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz" + integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== -array-back@^1.0.3, array-back@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz" - integrity sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw== +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== dependencies: - typical "^2.6.0" + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" -array-back@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz" - integrity sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw== +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: - typical "^2.6.1" - -array-back@^3.0.1, array-back@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + path-type "^4.0.0" -array-back@^4.0.1, array-back@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz" - integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== +directory-tree@^2.2.7: + version "2.4.0" + resolved "https://registry.npmjs.org/directory-tree/-/directory-tree-2.4.0.tgz" + integrity sha512-AM03Th+ypDAHefyB6SP3uezaWkTbol1P43CS5yFU7wePTuHnR4YoHgY6KbGHLr/a065ocN26l9lXOoFBzzM31w== -array-differ@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz" - integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== +doctoc@^2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/doctoc/-/doctoc-2.2.1.tgz" + integrity sha512-qNJ1gsuo7hH40vlXTVVrADm6pdg30bns/Mo7Nv1SxuXSM1bwF9b4xQ40a6EFT/L1cI+Yylbyi8MPI4G4y7XJzQ== + dependencies: + "@textlint/markdown-to-ast" "^12.1.1" + anchor-markdown-header "^0.6.0" + htmlparser2 "^7.2.0" + minimist "^1.2.6" + underscore "^1.13.2" + update-section "^0.3.3" -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" -array-flatten@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" -array-ify@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz" - integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" -array-includes@^3.1.4, array-includes@^3.1.5, array-includes@^3.1.6: - version "3.1.6" - resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz" - integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== 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" + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" -array-union@^2.1.0: - 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-union@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz" - integrity sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw== - -array-uniq@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" - integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" - integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== +domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== -array.prototype.flat@^1.2.3, array.prototype.flat@^1.2.5: - 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== +domhandler@^4.2.0, domhandler@^4.2.2: + version "4.3.1" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" + domelementtype "^2.2.0" -array.prototype.flatmap@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz" - integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== +domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" + domelementtype "^2.3.0" -array.prototype.reduce@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz" - integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q== +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.7" + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" -array.prototype.tosorted@^1.1.1: - 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== +domutils@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz" + integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== 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" - -arrify@^1.0.0, arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" - integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== - -arrify@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - -asap@^2.0.0, asap@~2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" - integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.1" -asn1.js@^5.2.0, asn1.js@^5.4.1: - version "5.4.1" - resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== +dot-case@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/dot-case/-/dot-case-2.1.1.tgz" + integrity sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug== dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" + no-case "^2.2.0" -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== +dot-prop@^5.1.0: + version "5.3.0" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + is-obj "^2.0.0" -assert@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" - integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== +dot-prop@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== dependencies: - es6-object-assign "^1.1.0" - is-nan "^1.2.1" - object-is "^1.0.1" - util "^0.12.0" + is-obj "^2.0.0" -assertion-error@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" - integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== +dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" - integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== -ast-parents@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/ast-parents/-/ast-parents-0.0.1.tgz" - integrity sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA== +dotenv@^14.2.0: + version "14.3.2" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-14.3.2.tgz" + integrity sha512-vwEppIphpFdvaMCaHfCEv9IgwcxMljMw2TnAQBB4VWPvzXQLTb82jwmdOKzlEVUL3gNFT4l4TPKO+Bn+sqcrVQ== -ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" - integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== +dotenv@^16.0.0: + version "16.0.3" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz" + integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== -ast-types@0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.15.2.tgz#39ae4809393c4b16df751ee563411423e85fb49d" - integrity sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg== - dependencies: - tslib "^2.0.1" +dotenv@^16.0.3: + version "16.3.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" + integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== -ast-types@^0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" - integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== - dependencies: - tslib "^2.0.1" +dotenv@^8.2.0, dotenv@^8.6.0: + version "8.6.0" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz" + integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== -ast-types@^0.16.1: - version "0.16.1" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.16.1.tgz#7a9da1617c9081bc121faafe91711b4c8bb81da2" - integrity sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg== +dotenv@^9.0.0: + version "9.0.2" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz" + integrity sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg== + +dotignore@~0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz" + integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== dependencies: - tslib "^2.0.1" + minimatch "^3.0.4" -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +duplexer3@^0.1.4: + version "0.1.5" + resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz" + integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== +duplexer@^0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -async-eventemitter@^0.2.2, async-eventemitter@^0.2.4: - version "0.2.4" - resolved "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz" - integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== +duplexify@^4.1.1: + version "4.1.2" + resolved "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz" + integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== dependencies: - async "^2.4.0" - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + end-of-stream "^1.4.1" + inherits "^2.0.3" + readable-stream "^3.1.1" + stream-shift "^1.0.0" -async-mutex@^0.2.6: - version "0.2.6" - resolved "https://registry.npmjs.org/async-mutex/-/async-mutex-0.2.6.tgz" - integrity sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw== +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: - tslib "^2.0.0" + jsbn "~0.1.0" + safer-buffer "^2.1.0" -async-mutex@^0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/async-mutex/-/async-mutex-0.3.2.tgz" - integrity sha512-HuTK7E7MT7jZEh1P9GtRW9+aTWiDWWi9InbZ5hjxrnRa39KS4BW04+xLBhYNS2aXhHUIKZSw3gj4Pn1pj+qGAA== - dependencies: - tslib "^2.3.1" +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -async@1.x, async@^1.4.2: - version "1.5.2" - resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz" - integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== +electron-to-chromium@^1.3.47, electron-to-chromium@^1.4.251: + 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== -async@2.6.2: - version "2.6.2" - resolved "https://registry.npmjs.org/async/-/async-2.6.2.tgz" - integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== - dependencies: - lodash "^4.17.11" +electron-to-chromium@^1.4.284: + version "1.4.324" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.324.tgz" + integrity sha512-m+eBs/kh3TXnCuqDF6aHLLRwLK2U471JAbZ1KYigf0TM96fZglxv0/ZFBvyIxnLKsIWUoDiVnHTA2mhYz1fqdA== -async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.1: - version "2.6.4" - resolved "https://registry.npmjs.org/async/-/async-2.6.4.tgz" - integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== +elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== dependencies: - lodash "^4.17.14" - -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.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + 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" -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== -atomic-sleep@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz" - integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -audit-ci@^3.1.1: - version "3.2.0" - resolved "https://registry.npmjs.org/audit-ci/-/audit-ci-3.2.0.tgz" - integrity sha512-kRFfl/AdmyCrnuc/M4T3l/G/Hy8U4JsgnyRJgGq1532bCwh62ZGeL5rEk2Snk8Umyd3CRgY4V+mVI/LzQoN/Rg== - dependencies: - JSONStream "^1.3.5" - cross-spawn "^7.0.3" - event-stream "4.0.1" - readline-transform "1.0.0" - semver "^7.0.0" - yargs "^15.0.0" - -autoprefixer@^10.4.13: - version "10.4.14" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d" - integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ== - dependencies: - browserslist "^4.21.5" - caniuse-lite "^1.0.30001464" - fraction.js "^4.2.0" - normalize-range "^0.1.2" - picocolors "^1.0.0" - postcss-value-parser "^4.2.0" +emoji-regex@~10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.1.0.tgz" + integrity sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg== -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +encode-utf8@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz" + integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== -aws-sign2@~0.7.0: - 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== +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -aws4@^1.8.0: - version "1.12.0" - resolved "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz" - integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== +encoding-down@5.0.4, encoding-down@~5.0.0: + version "5.0.4" + resolved "https://registry.npmjs.org/encoding-down/-/encoding-down-5.0.4.tgz" + integrity sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw== + dependencies: + abstract-leveldown "^5.0.0" + inherits "^2.0.3" + level-codec "^9.0.0" + level-errors "^2.0.0" + xtend "^4.0.1" -axe-core@^4.4.3: - version "4.6.2" - resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.6.2.tgz" - integrity sha512-b1WlTV8+XKLj9gZy2DZXgQiyDp9xkkoe2a6U6UbYccScq2wgH/YwCeI2/Jq2mgo0HzQxqJOjWZBLeA/mqsk5Mg== +encoding-down@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/encoding-down/-/encoding-down-6.3.0.tgz" + integrity sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw== + dependencies: + abstract-leveldown "^6.2.1" + inherits "^2.0.3" + level-codec "^9.0.0" + level-errors "^2.0.0" -axios@^0.21.1: - version "0.21.4" - resolved "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== +encoding@^0.1.11, encoding@^0.1.12, encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== dependencies: - follow-redirects "^1.14.0" + iconv-lite "^0.6.2" -axobject-query@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + 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== + dependencies: + once "^1.4.0" -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz" - integrity sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g== +enhanced-resolve@^5.10.0: + version "5.12.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz" + integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" + graceful-fs "^4.2.4" + tapable "^2.2.0" -babel-core@^6.0.14, babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz" - integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== +enquirer@^2.3.0, enquirer@^2.3.5, enquirer@^2.3.6: + version "2.3.6" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" + ansi-colors "^4.1.1" -babel-core@^7.0.0-bridge.0: - version "7.0.0-bridge.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" - integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz" - integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" +entities@^3.0.1, entities@~3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz" + integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz" - integrity sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q== - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" +entities@^4.2.0, entities@^4.3.0, entities@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz" + integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz" - integrity sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ== - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" +entities@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== -babel-helper-define-map@^6.24.1: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz" - integrity sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA== - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz" - integrity sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ== +envalid@^7.1.0, envalid@^7.2.2: + version "7.3.1" + resolved "https://registry.npmjs.org/envalid/-/envalid-7.3.1.tgz" + integrity sha512-KL1YRwn8WcoF/Ty7t+yLLtZol01xr9ZJMTjzoGRM8NaSU+nQQjSWOQKKJhJP2P57bpdakJ9jbxqQX4fGTOicZg== dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" + tslib "2.3.1" -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz" - integrity sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q== - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" +envinfo@^7.7.3, envinfo@^7.7.4: + version "7.8.1" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz" - integrity sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz" - integrity sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw== +errno@~0.1.1: + version "0.1.8" + resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" + prr "~1.0.1" -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz" - integrity sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA== +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" + is-arrayish "^0.2.1" -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz" - integrity sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg== +es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.21.0" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.0.tgz" + integrity sha512-GUGtW7eXQay0c+PRq0sGIKSdaBorfVqsCMhGHo4elP7YVqZu9nCZS4UkK4gv71gOWNMra/PaSKD3ao1oWExO0g== dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.0" + 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" + 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.4" + is-array-buffer "^3.0.0" + 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.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" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.9" -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz" - integrity sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg== - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz" - integrity sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw== - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz" - integrity sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ== +es-set-tostringtag@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-jest@^27.4.2, babel-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" - integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== - dependencies: - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^27.5.1" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" -babel-loader@^8.2.3: - 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== +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== dependencies: - find-cache-dir "^3.3.1" - loader-utils "^2.0.0" - make-dir "^3.1.0" - schema-utils "^2.6.5" + has "^1.0.3" -babel-loader@^9.0.0: - version "9.1.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.2.tgz#a16a080de52d08854ee14570469905a5fc00d39c" - integrity sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA== +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: - find-cache-dir "^3.3.2" - schema-utils "^4.0.0" + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz" - integrity sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w== +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.62" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== dependencies: - babel-runtime "^6.22.0" + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" -babel-plugin-add-react-displayname@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz#339d4cddb7b65fd62d1df9db9fe04de134122bd5" - integrity sha512-LY3+Y0XVDYcShHHorshrDbt4KFWL4bSeniCtl4SYZbask+Syngk1uMPCeN9+nSiZo6zX5s0RTq/J9Pnaaf/KHw== +es6-error@^4.0.1: + version "4.1.1" + resolved "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz" + integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz" - integrity sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA== +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== dependencies: - babel-runtime "^6.22.0" + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" -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== - 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" +es6-promise@^4.2.8: + version "4.2.8" + resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== -babel-plugin-jest-hoist@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" - integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + 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== dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" + d "^1.0.1" + ext "^1.1.2" -babel-plugin-macros@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz" - integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== - dependencies: - "@babel/runtime" "^7.12.5" - cosmiconfig "^7.0.0" - resolve "^1.19.0" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -babel-plugin-named-asset-import@^0.3.8: - version "0.3.8" - resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" - integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== -babel-plugin-named-exports-order@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/babel-plugin-named-exports-order/-/babel-plugin-named-exports-order-0.0.2.tgz#ae14909521cf9606094a2048239d69847540cb09" - integrity sha512-OgOYHOLoRK+/mvXU9imKHlG6GkPLYrUCvFXG/CM93R/aNNO8pOOF4aS+S8CCHMDQoNSeiOYEZb/G6RwL95Jktw== +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -babel-plugin-polyfill-corejs2@^0.3.3: - 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== - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.3" - semver "^6.1.1" +escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -babel-plugin-polyfill-corejs2@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz#75044d90ba5043a5fb559ac98496f62f3eb668fd" - integrity sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw== +escodegen@1.8.x: + version "1.8.1" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz" + integrity sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A== dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.4.0" - semver "^6.1.1" + esprima "^2.7.1" + estraverse "^1.9.1" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.2.0" -babel-plugin-polyfill-corejs2@^0.4.4: - version "0.4.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c" - integrity sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg== - dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.4.2" - semver "^6.3.1" +eslint-config-prettier@^8.3.0: + version "8.6.0" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz" + integrity sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA== -babel-plugin-polyfill-corejs3@^0.6.0: - 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== +eslint-config-standard-with-typescript@^21.0.1: + version "21.0.1" + resolved "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-21.0.1.tgz" + integrity sha512-FeiMHljEJ346Y0I/HpAymNKdrgKEpHpcg/D93FvPHWfCzbT4QyUJba/0FwntZeGLXfUiWDSeKmdJD597d9wwiw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - core-js-compat "^3.25.1" + "@typescript-eslint/parser" "^4.0.0" + eslint-config-standard "^16.0.0" -babel-plugin-polyfill-corejs3@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz#39248263c38191f0d226f928d666e6db1b4b3a8a" - integrity sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.0" - core-js-compat "^3.30.1" +eslint-config-standard@^16.0.0, eslint-config-standard@^16.0.3: + version "16.0.3" + resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz" + integrity sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg== -babel-plugin-polyfill-corejs3@^0.8.2: - version "0.8.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz#b4f719d0ad9bb8e0c23e3e630c0c8ec6dd7a1c52" - integrity sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.2" - core-js-compat "^3.31.0" +eslint-config-standard@^17.0.0: + version "17.0.0" + resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz" + integrity sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg== -babel-plugin-polyfill-regenerator@^0.4.1: - 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== +eslint-import-resolver-node@^0.3.6: + version "0.3.6" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz" + integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" + debug "^3.2.7" + resolve "^1.20.0" -babel-plugin-polyfill-regenerator@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz#e7344d88d9ef18a3c47ded99362ae4a757609380" - integrity sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g== +eslint-module-utils@^2.7.3: + version "2.7.4" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz" + integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.0" + debug "^3.2.7" -babel-plugin-polyfill-regenerator@^0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz#80d0f3e1098c080c8b5a65f41e9427af692dc326" - integrity sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA== +eslint-plugin-es@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz" + integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.2" + eslint-utils "^2.0.0" + regexpp "^3.0.0" -babel-plugin-react-docgen@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.2.1.tgz#7cc8e2f94e8dc057a06e953162f0810e4e72257b" - integrity sha512-UQ0NmGHj/HAqi5Bew8WvNfCk8wSsmdgNd8ZdMjBCICtyCJCq9LiqgqvjCYe570/Wg7AQArSq1VQ60Dd/CHN7mQ== +eslint-plugin-import@^2.23.4, eslint-plugin-import@^2.26.0: + version "2.26.0" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz" + integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== dependencies: - ast-types "^0.14.2" - lodash "^4.17.15" - react-docgen "^5.0.0" + 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" -"babel-plugin-styled-components@>= 1.12.0": - version "2.1.1" - resolved "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.1.tgz" - integrity sha512-c8lJlszObVQPguHkI+akXv8+Jgb9Ccujx0EetL7oIvwU100LxO6XAGe45qry37wUL40a5U9f23SYrivro2XKhA== +eslint-plugin-jsdoc@^46.2.6: + version "46.2.6" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.2.6.tgz#f25590d371859f20691d65b5dcd4cbe370d65564" + integrity sha512-zIaK3zbSrKuH12bP+SPybPgcHSM6MFzh3HFeaODzmsF1N8C1l8dzJ22cW1aq4g0+nayU1VMjmNf7hg0dpShLrA== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" - "@babel/helper-module-imports" "^7.16.0" - babel-plugin-syntax-jsx "^6.18.0" - lodash "^4.17.21" - picomatch "^2.3.0" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz" - integrity sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw== - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz" - integrity sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ== + "@es-joy/jsdoccomment" "~0.39.4" + are-docs-informative "^0.0.2" + comment-parser "1.3.1" + debug "^4.3.4" + escape-string-regexp "^4.0.0" + esquery "^1.5.0" + is-builtin-module "^3.2.1" + semver "^7.5.1" + spdx-expression-parse "^3.0.1" -babel-plugin-syntax-jsx@^6.18.0: - version "6.18.0" - resolved "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz" - integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw== +eslint-plugin-node@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz" + integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== + dependencies: + eslint-plugin-es "^3.0.0" + eslint-utils "^2.0.0" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz" - integrity sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ== +eslint-plugin-prefer-arrow@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.3.tgz" + integrity sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ== -babel-plugin-transform-async-to-generator@^6.22.0: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz" - integrity sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw== +eslint-plugin-prettier@^3.4.0: + version "3.4.1" + resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz" + integrity sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g== dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" + prettier-linter-helpers "^1.0.0" -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz" - integrity sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg== +eslint-plugin-prettier@^4.0.0: + 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== dependencies: - babel-runtime "^6.22.0" + prettier-linter-helpers "^1.0.0" -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz" - integrity sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A== - dependencies: - babel-runtime "^6.22.0" +eslint-plugin-promise@^5.1.0: + version "5.2.0" + resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz" + integrity sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw== -babel-plugin-transform-es2015-block-scoping@^6.23.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz" - integrity sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw== - dependencies: - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" +eslint-plugin-promise@^6.0.0: + version "6.1.1" + resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz" + integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== -babel-plugin-transform-es2015-classes@^6.23.0: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz" - integrity sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag== +eslint-plugin-react@^7.24.0: + version "7.32.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" + integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" + 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.4" + semver "^6.3.0" + string.prototype.matchall "^4.0.8" -babel-plugin-transform-es2015-computed-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz" - integrity sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw== - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" +eslint-plugin-standard@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-5.0.0.tgz" + integrity sha512-eSIXPc9wBM4BrniMzJRBm2uoVuXz2EPa+NXPk2+itrVt+r5SbKFERx/IgrK/HmfjddyKVz2f+j+7gBRvu19xLg== -babel-plugin-transform-es2015-destructuring@^6.23.0: - version "6.23.0" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz" - integrity sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA== +eslint-plugin-unicorn@^32.0.1: + version "32.0.1" + resolved "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-32.0.1.tgz" + integrity sha512-LaZ9utnXtOJjnoDkpm+nQsONUUmyRR0WD6PGROSdQRRW3LRmgK/ZP8wxjW+Ai+2uolKTtuJzLx2mvbIeIoLqpg== dependencies: - babel-runtime "^6.22.0" + ci-info "^3.1.1" + clean-regexp "^1.0.0" + eslint-template-visitor "^2.3.2" + eslint-utils "^2.1.0" + import-modules "^2.1.0" + is-builtin-module "^3.1.0" + lodash "^4.17.21" + pluralize "^8.0.0" + read-pkg-up "^7.0.1" + regexp-tree "^0.1.23" + reserved-words "^0.1.2" + safe-regex "^2.1.1" + semver "^7.3.5" -babel-plugin-transform-es2015-duplicate-keys@^6.22.0: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz" - integrity sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug== +eslint-plugin-unicorn@^42.0.0: + version "42.0.0" + resolved "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-42.0.0.tgz" + integrity sha512-ixBsbhgWuxVaNlPTT8AyfJMlhyC5flCJFjyK3oKE8TRrwBnaHvUbuIkCM1lqg8ryYrFStL/T557zfKzX4GKSlg== dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" + "@babel/helper-validator-identifier" "^7.15.7" + ci-info "^3.3.0" + clean-regexp "^1.0.0" + eslint-utils "^3.0.0" + esquery "^1.4.0" + indent-string "^4.0.0" + is-builtin-module "^3.1.0" + lodash "^4.17.21" + pluralize "^8.0.0" + read-pkg-up "^7.0.1" + regexp-tree "^0.1.24" + safe-regex "^2.1.1" + semver "^7.3.5" + strip-indent "^3.0.0" -babel-plugin-transform-es2015-for-of@^6.23.0: - version "6.23.0" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz" - integrity sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw== +eslint-scope@5.1.1, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: - babel-runtime "^6.22.0" + esrecurse "^4.3.0" + estraverse "^4.1.1" -babel-plugin-transform-es2015-function-name@^6.22.0: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz" - integrity sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg== +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" + esrecurse "^4.1.0" + estraverse "^4.1.1" -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz" - integrity sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ== +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== dependencies: - babel-runtime "^6.22.0" + esrecurse "^4.3.0" + estraverse "^5.2.0" -babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz" - integrity sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA== +eslint-template-visitor@^2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/eslint-template-visitor/-/eslint-template-visitor-2.3.2.tgz" + integrity sha512-3ydhqFpuV7x1M9EK52BPNj6V0Kwu0KKkcIAfpUhwHbR8ocRln/oUHgfxQupY8O1h4Qv/POHDumb/BwwNfxbtnA== dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" + "@babel/core" "^7.12.16" + "@babel/eslint-parser" "^7.12.16" + eslint-visitor-keys "^2.0.0" + esquery "^1.3.1" + multimap "^1.1.0" -babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.26.2" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz" - integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== +eslint-utils@^1.3.1: + version "1.4.3" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" + eslint-visitor-keys "^1.1.0" -babel-plugin-transform-es2015-modules-systemjs@^6.23.0: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz" - integrity sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg== +eslint-utils@^2.0.0, eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" + eslint-visitor-keys "^1.1.0" -babel-plugin-transform-es2015-modules-umd@^6.23.0: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz" - integrity sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw== +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" + eslint-visitor-keys "^2.0.0" -babel-plugin-transform-es2015-object-super@^6.22.0: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz" - integrity sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA== - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.23.0: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz" - integrity sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ== - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz" - integrity sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz" - integrity sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz" - integrity sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ== - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz" - integrity sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.23.0: - version "6.23.0" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz" - integrity sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz" - integrity sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ== - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.22.0: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz" - integrity sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ== - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-remove-prop-types@^0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz" - integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== - -babel-plugin-transform-regenerator@^6.22.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz" - integrity sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg== - dependencies: - regenerator-transform "^0.10.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz" - integrity sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -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== - 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" - -babel-preset-env@^1.7.0: - version "1.7.0" - resolved "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz" - integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.23.0" - babel-plugin-transform-es2015-classes "^6.23.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.23.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.23.0" - babel-plugin-transform-es2015-function-name "^6.22.0" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.23.0" - babel-plugin-transform-es2015-modules-systemjs "^6.23.0" - babel-plugin-transform-es2015-modules-umd "^6.23.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.23.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.23.0" - babel-plugin-transform-es2015-unicode-regex "^6.22.0" - babel-plugin-transform-exponentiation-operator "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" - browserslist "^3.2.6" - invariant "^2.2.2" - semver "^5.3.0" +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -babel-preset-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" - integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== - dependencies: - babel-plugin-jest-hoist "^27.5.1" - babel-preset-current-node-syntax "^1.0.0" +eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: + 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== -babel-preset-react-app@^10.0.1: - version "10.0.1" - resolved "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz" - integrity sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg== - dependencies: - "@babel/core" "^7.16.0" - "@babel/plugin-proposal-class-properties" "^7.16.0" - "@babel/plugin-proposal-decorators" "^7.16.4" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" - "@babel/plugin-proposal-numeric-separator" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.0" - "@babel/plugin-proposal-private-methods" "^7.16.0" - "@babel/plugin-transform-flow-strip-types" "^7.16.0" - "@babel/plugin-transform-react-display-name" "^7.16.0" - "@babel/plugin-transform-runtime" "^7.16.4" - "@babel/preset-env" "^7.16.4" - "@babel/preset-react" "^7.16.0" - "@babel/preset-typescript" "^7.16.0" - "@babel/runtime" "^7.16.3" - babel-plugin-macros "^3.1.0" - babel-plugin-transform-react-remove-prop-types "^0.4.24" +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz" - integrity sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A== +eslint@^5.6.0: + version "5.16.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz" + integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" + "@babel/code-frame" "^7.0.0" + ajv "^6.9.1" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^4.0.3" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^5.0.1" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^6.2.2" + js-yaml "^3.13.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.11" + minimatch "^3.0.4" mkdirp "^0.5.1" - source-map-support "^0.4.15" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^5.5.1" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^5.2.3" + text-table "^0.2.0" -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz" - integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== +eslint@^7.27.0: + version "7.32.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" -babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz" - integrity sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg== +eslint@^8.16.0, eslint@^8.19.0: + version "8.31.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz" + integrity sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA== dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz" - integrity sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA== - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz" - integrity sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babelify@^7.3.0: - version "7.3.0" - resolved "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz" - integrity sha512-vID8Fz6pPN5pJMdlUnNFSfrlcx5MUule4k9aKs/zbZPyXxMTcRrB0M4Tarw22L8afr8eYSWxDPYCob3TdrqtlA== - dependencies: - babel-core "^6.0.14" - object-assign "^4.0.0" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - -backoff@^2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz" - integrity sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA== - dependencies: - precond "0.2" - -bail@^1.0.0: - version "1.0.5" - resolved "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz" - integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base-x@^3.0.2, base-x@^3.0.8: - 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== - dependencies: - safe-buffer "^5.0.1" - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base64-sol@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/base64-sol/-/base64-sol-1.0.1.tgz" - integrity sha512-ld3cCNMeXt4uJXmLZBHFGMvVpK9KsLVEhPpFRXnvSVAqABKbuNZg/+dsq3NuM+wxFLb/UrVkz7m1ciWmkMfTbg== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -basic-auth@~2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz" - integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== - dependencies: - safe-buffer "5.1.2" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" - integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== - -bcfg@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/bcfg/-/bcfg-0.2.1.tgz#d6ebd9827a99ff62bfad326edd349babc58d6e97" - integrity sha512-Q69DG2V9QJexdXvYoiXM4xfQ5m65tIOAzJCcW4USQdvbWEJJqBQ9MEDdyJb2ei5fadAJPVp8rUpLbFnkC37FZA== - dependencies: - bsert "~0.0.10" - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" - integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== - dependencies: - tweetnacl "^0.14.3" - -bech32@1.1.4, bech32@^1.1.3: - version "1.1.4" - resolved "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz" - integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== - -before-after-hook@^2.2.0: - version "2.2.3" - resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz" - integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== - -better-opn@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-3.0.2.tgz#f96f35deaaf8f34144a4102651babcf00d1d8817" - integrity sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ== - dependencies: - open "^8.0.4" - -better-path-resolve@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/better-path-resolve/-/better-path-resolve-1.0.0.tgz" - integrity sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g== - dependencies: - is-windows "^1.0.0" - -bfj@^7.0.2: - version "7.0.2" - resolved "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz" - integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== - dependencies: - bluebird "^3.5.5" - check-types "^11.1.1" - hoopy "^0.1.4" - tryer "^1.0.1" - -big-integer@1.6.36: - 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-integer@^1.6.44: - 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.npmjs.org/big.js/-/big.js-5.2.2.tgz" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -big.js@^6.0.3: - version "6.2.1" - resolved "https://registry.npmjs.org/big.js/-/big.js-6.2.1.tgz" - integrity sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ== - -bigint-crypto-utils@^3.0.23: - version "3.1.8" - resolved "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.1.8.tgz" - integrity sha512-+VMV9Laq8pXLBKKKK49nOoq9bfR3j7NNQAtbA617a4nw9bVLo8rsqkKMBgM2AJWlNX9fEIyYaYX+d0laqYV4tw== - dependencies: - bigint-mod-arith "^3.1.0" - -bigint-mod-arith@^3.1.0: - version "3.1.2" - resolved "https://registry.npmjs.org/bigint-mod-arith/-/bigint-mod-arith-3.1.2.tgz" - integrity sha512-nx8J8bBeiRR+NlsROFH9jHswW5HO8mgfOSqW0AmjicMMvaONDa8AO+5ViKDUUNytBPWiwfvZP4/Bj4Y3lUfvgQ== - -bignumber.js@9.0.0: - version "9.0.0" - resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz" - integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== - -bignumber.js@^7.2.1: - version "7.2.1" - resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz" - integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== - -bignumber.js@^9.0.0, bignumber.js@^9.0.1: - version "9.1.1" - resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz" - integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bintrees@1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz" - integrity sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw== - -bip39@2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/bip39/-/bip39-2.5.0.tgz" - integrity sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA== - dependencies: - create-hash "^1.1.0" - pbkdf2 "^3.0.9" - randombytes "^2.0.1" - safe-buffer "^5.0.1" - unorm "^1.3.3" - -bl@^4.0.3, bl@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -bl@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-0.8.2.tgz#c9b6bca08d1bc2ea00fc8afb4f1a5fd1e1c66e4e" - integrity sha512-pfqikmByp+lifZCS0p6j6KreV6kNU6Apzpm2nKOk+94cZb/jvle55+JxWiByUQ0Wo/+XnDXEy5MxxKMb6r0VIw== - dependencies: - readable-stream "~1.0.26" - -blakejs@^1.1.0: - version "1.2.1" - resolved "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz" - integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== - -bluebird@^3.5.0, bluebird@^3.5.2, bluebird@^3.5.3, bluebird@^3.5.5, bluebird@^3.7.2: - version "3.7.2" - resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@4.11.6: - version "4.11.6" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz" - integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== - -bn.js@4.11.8: - version "4.11.8" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.8.0: - version "4.12.0" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0, bn.js@^5.2.1: - version "5.2.1" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - -body-parser@1.20.1, body-parser@^1.16.0, body-parser@^1.20.0: - 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" - -bonjour-service@^1.0.11: - version "1.1.1" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.1.1.tgz#960948fa0e0153f5d26743ab15baf8e33752c135" - integrity sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg== - dependencies: - array-flatten "^2.1.2" - dns-equal "^1.0.0" - fast-deep-equal "^3.1.3" - multicast-dns "^7.2.5" - -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - -bootstrap-daterangepicker@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bootstrap-daterangepicker/-/bootstrap-daterangepicker-3.1.0.tgz#632e6fb2de4b6360c5c0a9d5f6adb9aace051fe8" - integrity sha512-oaQZx6ZBDo/dZNyXGVi2rx5GmFXThyQLAxdtIqjtLlYVaQUfQALl5JZMJJZzyDIX7blfy4ppZPAJ10g8Ma4d/g== - dependencies: - jquery ">=1.10" - moment "^2.9.0" - -bowser@^2.11.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" - integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== - -boxen@1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz" - integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== - dependencies: - ansi-align "^2.0.0" - camelcase "^4.0.0" - chalk "^2.0.1" - cli-boxes "^1.0.0" - string-width "^2.0.0" - term-size "^1.2.0" - widest-line "^2.0.0" - -bplist-parser@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" - integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== - dependencies: - big-integer "^1.6.44" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -breakword@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/breakword/-/breakword-1.0.5.tgz" - integrity sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg== - dependencies: - wcwidth "^1.0.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -browser-assert@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/browser-assert/-/browser-assert-1.2.1.tgz#9aaa5a2a8c74685c2ae05bfe46efd606f068c200" - integrity sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ== - -browser-level@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz" - integrity sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ== - dependencies: - abstract-level "^1.0.2" - catering "^2.1.1" - module-error "^1.0.2" - run-parallel-limit "^1.1.0" - -browser-or-node@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/browser-or-node/-/browser-or-node-1.3.0.tgz" - integrity sha512-0F2z/VSnLbmEeBcUrSuDH5l0HxTXdQQzLjkmBR4cYfvg1zJrKSlmIZFqyFR8oX0NrwPhy3c3HQ6i3OxMbew4Tg== - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browser-stdout@1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== - -browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" - 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.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" - 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.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" - 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-fs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browserify-fs/-/browserify-fs-1.0.0.tgz#f075aa8a729d4d1716d066620e386fcc1311a96f" - integrity sha512-8LqHRPuAEKvyTX34R6tsw4bO2ro6j9DmlYBhiYWHRM26Zv2cBw1fJOU0NeUQ0RkXkPn/PFBjhA0dm4AgaBurTg== - dependencies: - level-filesystem "^1.0.1" - level-js "^2.1.3" - levelup "^0.18.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz" - 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.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz" - 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" - -browserify-zlib@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" - integrity sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ== - dependencies: - pako "~0.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@^3.2.6: - version "3.2.8" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz" - integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== - dependencies: - caniuse-lite "^1.0.30000844" - electron-to-chromium "^1.3.47" - -browserslist@^4.0.0, browserslist@^4.21.3, browserslist@^4.21.4: - version "4.21.4" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" - 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" - -browserslist@^4.14.5: - version "4.21.5" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz" - integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== - dependencies: - caniuse-lite "^1.0.30001449" - electron-to-chromium "^1.4.284" - node-releases "^2.0.8" - update-browserslist-db "^1.0.10" - -browserslist@^4.18.1, browserslist@^4.21.5: - version "4.21.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.7.tgz#e2b420947e5fb0a58e8f4668ae6e23488127e551" - integrity sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA== - dependencies: - caniuse-lite "^1.0.30001489" - electron-to-chromium "^1.4.411" - node-releases "^2.0.12" - update-browserslist-db "^1.0.11" - -browserslist@^4.21.9: - version "4.21.10" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0" - integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ== - dependencies: - caniuse-lite "^1.0.30001517" - electron-to-chromium "^1.4.477" - node-releases "^2.0.13" - update-browserslist-db "^1.0.11" - -bs58@^4.0.0, bs58@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" - integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== - dependencies: - base-x "^3.0.2" - -bs58check@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz" - integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== - dependencies: - bs58 "^4.0.0" - create-hash "^1.1.0" - safe-buffer "^5.1.2" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -bsert@~0.0.10: - version "0.0.10" - resolved "https://registry.npmjs.org/bsert/-/bsert-0.0.10.tgz" - integrity sha512-NHNwlac+WPy4t2LoNh8pXk8uaIGH3NSaIUbTTRXGpE2WEbq0te/tDykYHkFK57YKLPjv/aGHmbqvnGeVWDz57Q== - -btoa@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz" - integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== - -buffer-alloc-unsafe@^1.1.0: - 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-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz" - 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.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz" - integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== - -buffer-from@^1.0.0, buffer-from@^1.1.0, buffer-from@^1.1.1: - 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-reverse@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/buffer-reverse/-/buffer-reverse-1.0.1.tgz" - integrity sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg== - -buffer-to-arraybuffer@^0.0.5: - version "0.0.5" - resolved "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz" - integrity sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ== - -buffer-writer@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04" - integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -buffer-xor@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-2.0.2.tgz" - integrity sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ== - dependencies: - safe-buffer "^5.1.1" - -buffer@6.0.3, buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -buffer@^5.0.5, buffer@^5.2.1, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: - version "5.7.1" - resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - 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.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz" - integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw== - dependencies: - node-gyp-build "^4.3.0" - -bufio@^1.0.7: - version "1.2.0" - resolved "https://registry.npmjs.org/bufio/-/bufio-1.2.0.tgz" - integrity sha512-UlFk8z/PwdhYQTXSQQagwGAdtRI83gib2n4uy4rQnenxUM2yQi8lBDzF230BNk+3wAoZDxYRoBwVVUPgHa9MCA== - -builtin-modules@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz" - integrity sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ== - -builtin-modules@^3.1.0, builtin-modules@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz" - integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== - -busboy@^1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" - integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== - dependencies: - streamsearch "^1.1.0" - -byline@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz" - integrity sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q== - -byte-size@^7.0.0: - version "7.0.1" - resolved "https://registry.npmjs.org/byte-size/-/byte-size-7.0.1.tgz" - integrity sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A== - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" - integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -bytewise-core@^1.2.2: - version "1.2.3" - resolved "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz" - integrity sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA== - dependencies: - typewise-core "^1.2" - -bytewise@~1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz" - integrity sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ== - dependencies: - bytewise-core "^1.2.2" - typewise "^1.0.3" - -c8@^7.6.0: - version "7.14.0" - resolved "https://registry.yarnpkg.com/c8/-/c8-7.14.0.tgz#f368184c73b125a80565e9ab2396ff0be4d732f3" - integrity sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@istanbuljs/schema" "^0.1.3" - find-up "^5.0.0" - foreground-child "^2.0.0" - istanbul-lib-coverage "^3.2.0" - istanbul-lib-report "^3.0.0" - istanbul-reports "^3.1.4" - rimraf "^3.0.2" - test-exclude "^6.0.0" - v8-to-istanbul "^9.0.0" - yargs "^16.2.0" - yargs-parser "^20.2.9" - -cacache@^15.0.5, cacache@^15.2.0: - version "15.3.0" - resolved "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz" - integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== - dependencies: - "@npmcli/fs" "^1.0.0" - "@npmcli/move-file" "^1.0.1" - chownr "^2.0.0" - fs-minipass "^2.0.0" - glob "^7.1.4" - infer-owner "^1.0.4" - lru-cache "^6.0.0" - minipass "^3.1.1" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^1.0.3" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.0.2" - unique-filename "^1.1.1" - -cacache@^16.1.0: - version "16.1.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" - integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== - dependencies: - "@npmcli/fs" "^2.1.0" - "@npmcli/move-file" "^2.0.0" - chownr "^2.0.0" - fs-minipass "^2.1.0" - glob "^8.0.1" - infer-owner "^1.0.4" - lru-cache "^7.7.1" - minipass "^3.1.6" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - mkdirp "^1.0.4" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^9.0.0" - tar "^6.1.11" - unique-filename "^2.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cacheable-lookup@^5.0.3: - version "5.0.4" - resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz" - integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== - -cacheable-lookup@^6.0.4: - 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@^6.0.0: - version "6.1.0" - resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" - 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" - -cacheable-request@^7.0.2: - version "7.0.2" - resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz" - 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" - -cachedown@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/cachedown/-/cachedown-1.0.0.tgz" - integrity sha512-t+yVk82vQWCJF3PsWHMld+jhhjkkWjcAzz8NbFx1iULOXWl8Tm/FdM4smZNVw3MRr0X+lVTx9PKzvEn4Ng19RQ== - dependencies: - abstract-leveldown "^2.4.1" - lru-cache "^3.2.0" - -caching-transform@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz" - integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA== - dependencies: - hasha "^5.0.0" - make-dir "^3.0.0" - package-hash "^4.0.0" - write-file-atomic "^3.0.0" - -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" - integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" - integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" - integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== - -callsites@^3.0.0, callsites@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz" - integrity sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w== - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase-css@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" - integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== - -camelcase-keys@^6.2.2: - version "6.2.2" - resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz" - integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== - dependencies: - camelcase "^5.3.1" - map-obj "^4.0.0" - quick-lru "^4.0.1" - -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz" - integrity sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== - -camelcase@^4.0.0, camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz" - integrity sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw== - -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.0.0, camelcase@^6.2.0, camelcase@^6.2.1: - version "6.3.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -camelize@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz" - integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001400, caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001489: - version "1.0.30001513" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001513.tgz" - integrity sha512-pnjGJo7SOOjAGytZZ203Em95MRM8Cr6jhCXNF/FAXTpCTRTECnqQWLpiTRqrFtdYcth8hf4WECUpkezuYsMVww== - -caniuse-lite@^1.0.30001517: - version "1.0.30001517" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz#90fabae294215c3495807eb24fc809e11dc2f0a8" - integrity sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA== - -cardinal@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz" - integrity sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw== - dependencies: - ansicolors "~0.3.2" - redeyed "~2.1.0" - -case-sensitive-paths-webpack-plugin@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" - integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== - -caseless@^0.12.0, caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" - integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== - -catering@^2.0.0, catering@^2.1.0, catering@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz" - integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== - -cbor@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/cbor/-/cbor-5.2.0.tgz" - integrity sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A== - dependencies: - bignumber.js "^9.0.1" - nofilter "^1.0.4" - -cbor@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz" - integrity sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg== - dependencies: - nofilter "^3.1.0" - -ccount@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz" - integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== - -chai-as-promised@^7.1.1: - version "7.1.1" - resolved "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz" - integrity sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA== - dependencies: - check-error "^1.0.2" - -chai-bn@^0.2.1: - version "0.2.2" - resolved "https://registry.npmjs.org/chai-bn/-/chai-bn-0.2.2.tgz" - integrity sha512-MzjelH0p8vWn65QKmEq/DLBG1Hle4WeyqT79ANhXZhn/UxRWO0OogkAxi5oGGtfzwU9bZR8mvbvYdoqNVWQwFg== - -chai@^4.2.0, chai@^4.3.4, chai@^4.3.6: - version "4.3.7" - resolved "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz" - integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A== - dependencies: - assertion-error "^1.1.0" - check-error "^1.0.2" - deep-eql "^4.1.2" - get-func-name "^2.0.0" - loupe "^2.3.1" - pathval "^1.1.1" - type-detect "^4.0.5" - -chalk@2.4.1: - version "2.4.1" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz" - integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" - integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - 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.npmjs.org/chalk/-/chalk-3.0.0.tgz" - 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, chalk@^4.1.1, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" - integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== - -change-case@3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/change-case/-/change-case-3.0.2.tgz" - integrity sha512-Mww+SLF6MZ0U6kdg11algyKd5BARbyM4TbFBepwowYSR5ClfQGCGtxNXgykpN0uF/bstWeaGDT4JWaDh8zWAHA== - dependencies: - camel-case "^3.0.0" - constant-case "^2.0.0" - dot-case "^2.1.0" - header-case "^1.0.0" - is-lower-case "^1.1.0" - is-upper-case "^1.1.0" - lower-case "^1.1.1" - lower-case-first "^1.0.0" - no-case "^2.3.2" - param-case "^2.1.0" - pascal-case "^2.0.0" - path-case "^2.1.0" - sentence-case "^2.1.0" - snake-case "^2.1.0" - swap-case "^1.1.0" - title-case "^2.1.0" - upper-case "^1.1.1" - upper-case-first "^1.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== - -char-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.1.tgz#6dafdb25f9d3349914079f010ba8d0e6ff9cd01e" - integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== - -character-entities-legacy@^1.0.0: - version "1.1.4" - resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz" - integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== - -character-entities@^1.0.0: - version "1.2.4" - resolved "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz" - integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== - -character-reference-invalid@^1.0.0: - version "1.1.4" - resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz" - integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -charenc@0.0.2, "charenc@>= 0.0.1": - version "0.0.2" - resolved "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" - integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== - -check-error@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz" - integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== - -check-types@^11.1.1: - version "11.2.2" - resolved "https://registry.npmjs.org/check-types/-/check-types-11.2.2.tgz" - integrity sha512-HBiYvXvn9Z70Z88XKjz3AEKd4HJhBXsa3j7xFnITAzoS8+q6eIGi8qDB8FKPBAjtuxjI/zFpwuiCb8oDtKOYrA== - -checkpoint-store@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz" - integrity sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg== - dependencies: - functional-red-black-tree "^1.0.1" - -cheerio-select@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz" - integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== - dependencies: - boolbase "^1.0.0" - css-select "^5.1.0" - css-what "^6.1.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - -cheerio@^1.0.0-rc.2: - version "1.0.0-rc.12" - resolved "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz" - integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== - dependencies: - cheerio-select "^2.1.0" - dom-serializer "^2.0.0" - domhandler "^5.0.3" - domutils "^3.0.1" - htmlparser2 "^8.0.1" - parse5 "^7.0.0" - parse5-htmlparser2-tree-adapter "^7.0.0" - -chokidar@3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz" - integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.2.0" - optionalDependencies: - fsevents "~2.1.1" - -chokidar@3.5.1: - version "3.5.1" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.5.0" - optionalDependencies: - fsevents "~2.3.1" - -chokidar@3.5.3, "chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.0, chokidar@^3.4.2, chokidar@^3.5.2, chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" - 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" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.1.1, chownr@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -ci-info@^3.1.0, ci-info@^3.1.1, ci-info@^3.2.0, ci-info@^3.3.0: - version "3.7.1" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz" - integrity sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w== - -cids@^0.7.1: - version "0.7.5" - resolved "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz" - 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.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" - 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.npmjs.org/class-is/-/class-is-1.1.0.tgz" - integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -classic-level@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/classic-level/-/classic-level-1.2.0.tgz" - integrity sha512-qw5B31ANxSluWz9xBzklRWTUAJ1SXIdaVKTVS7HcTGKOAmExx65Wo5BUICW+YGORe2FOUaDghoI9ZDxj82QcFg== - dependencies: - abstract-level "^1.0.2" - catering "^2.1.0" - module-error "^1.0.1" - napi-macros "~2.0.0" - node-gyp-build "^4.3.0" - -classnames@^2.2.5, classnames@^2.2.6: - version "2.3.2" - resolved "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" - integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== - -clean-css@^5.2.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224" - integrity sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww== - dependencies: - source-map "~0.6.0" - -clean-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz" - integrity sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw== - dependencies: - escape-string-regexp "^1.0.5" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz" - integrity sha512-3Fo5wu8Ytle8q9iCzS4D2MWVL2X7JVWRiS1BnXbTFDhS9c/REkM9vd1AmabsoZoY5/dGi5TT9iKL8Kb6DeBRQg== - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz" - integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== - dependencies: - restore-cursor "^2.0.0" - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-highlight@^2.1.11: - version "2.1.11" - resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.11.tgz#49736fa452f0aaf4fae580e30acb26828d2dc1bf" - integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg== - dependencies: - chalk "^4.0.0" - highlight.js "^10.7.1" - mz "^2.4.0" - parse5 "^5.1.1" - parse5-htmlparser2-tree-adapter "^6.0.0" - yargs "^16.0.0" - -cli-spinners@^2.5.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.0.tgz#5881d0ad96381e117bbe07ad91f2008fe6ffd8db" - integrity sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g== - -cli-table3@^0.5.0: - version "0.5.1" - resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz" - integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== - dependencies: - object-assign "^4.1.0" - string-width "^2.1.1" - optionalDependencies: - colors "^1.1.2" - -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" - optionalDependencies: - "@colors/colors" "1.5.0" - -cli-table@^0.3.1: - version "0.3.11" - resolved "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz" - integrity sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ== - dependencies: - colors "1.0.3" - -cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== - dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -clipboardy@1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz" - integrity sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA== - dependencies: - arch "^2.1.0" - execa "^0.8.0" - -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz" - integrity sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w== - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" - 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.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" - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -cliui@^8.0.1: - 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== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clone-response@^1.0.2: - 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" - -clone@2.1.2, clone@^2.0.0, clone@^2.1.1: - version "2.1.2" - resolved "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz" - integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -clone@~0.1.9: - version "0.1.19" - resolved "https://registry.yarnpkg.com/clone/-/clone-0.1.19.tgz#613fb68639b26a494ac53253e15b1a6bd88ada85" - integrity sha512-IO78I0y6JcSpEPHzK4obKdsL7E7oLdRVDVOLwr2Hkbjsb+Eoz0dxW6tef0WizoKu0gLC4oZSZuEF4U2K6w1WQw== - -clsx@^1.1.1, clsx@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" - 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== - -cmd-shim@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz" - integrity sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw== - dependencies: - mkdirp-infer-owner "^2.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" - integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== - -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== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" - integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - 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.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - 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.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-support@^1.1.2, color-support@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - -colord@^2.9.1: - version "2.9.3" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" - integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== - -colorette@^2.0.10, colorette@^2.0.14, colorette@^2.0.16, colorette@^2.0.19, colorette@^2.0.7: - version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" - integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== - -colors@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz" - integrity sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== - -colors@1.4.0, colors@^1.1.2: - version "1.4.0" - resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -columnify@^1.5.4: - version "1.6.0" - resolved "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz" - integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== - dependencies: - strip-ansi "^6.0.1" - wcwidth "^1.0.0" - -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -command-exists@^1.2.8: - version "1.2.9" - resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" - integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== - -command-line-args@^4.0.7: - version "4.0.7" - resolved "https://registry.npmjs.org/command-line-args/-/command-line-args-4.0.7.tgz" - integrity sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA== - dependencies: - array-back "^2.0.0" - find-replace "^1.0.3" - typical "^2.6.1" - -command-line-args@^5.1.1: - version "5.2.1" - resolved "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz" - 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.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz" - 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.18.0: - version "2.18.0" - resolved "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz" - integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ== - -commander@3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz" - integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== - -commander@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-11.0.0.tgz#43e19c25dbedc8256203538e8d7e9346877a6f67" - integrity sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ== - -commander@^2.12.1, commander@^2.19.0, commander@^2.20.0: - 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== - -commander@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -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.npmjs.org/commander/-/commander-7.2.0.tgz" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -commander@^8.3.0: - version "8.3.0" - resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - -commander@^9.4.1: - version "9.5.0" - resolved "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz" - integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== - -comment-parser@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.3.1.tgz#3d7ea3adaf9345594aedee6563f422348f165c1b" - integrity sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA== - -common-path-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" - integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== - -common-tags@^1.8.0: - 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@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - -compare-func@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz" - integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== - dependencies: - array-ify "^1.0.0" - dot-prop "^5.1.0" - -component-emitter@^1.2.1, component-emitter@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compressible@~2.0.14, compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@1.7.3: - version "1.7.3" - resolved "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz" - integrity sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.14" - debug "2.6.9" - on-headers "~1.0.1" - safe-buffer "5.1.2" - vary "~1.1.2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -concat-stream@^1.4.4, concat-stream@^1.5.1, concat-stream@^1.6.0, concat-stream@^1.6.2: - version "1.6.2" - resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -concat-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz" - integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.0.2" - typedarray "^0.0.6" - -config-chain@^1.1.12: - version "1.1.13" - resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -confusing-browser-globals@^1.0.11: - version "1.0.11" - resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" - integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== - -connect-history-api-fallback@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" - integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== - -console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - -constant-case@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz" - integrity sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ== - dependencies: - snake-case "^2.1.0" - upper-case "^1.1.1" - -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz" - integrity sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA== - -content-disposition@0.5.4: - 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" - -content-hash@^2.5.2: - 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" - -content-type@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -conventional-changelog-angular@^5.0.12: - version "5.0.13" - resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz" - integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== - dependencies: - compare-func "^2.0.0" - q "^1.5.1" - -conventional-changelog-core@^4.2.2: - version "4.2.4" - resolved "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz" - integrity sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg== - dependencies: - add-stream "^1.0.0" - conventional-changelog-writer "^5.0.0" - conventional-commits-parser "^3.2.0" - dateformat "^3.0.0" - get-pkg-repo "^4.0.0" - git-raw-commits "^2.0.8" - git-remote-origin-url "^2.0.0" - git-semver-tags "^4.1.1" - lodash "^4.17.15" - normalize-package-data "^3.0.0" - q "^1.5.1" - read-pkg "^3.0.0" - read-pkg-up "^3.0.0" - through2 "^4.0.0" - -conventional-changelog-preset-loader@^2.3.4: - version "2.3.4" - resolved "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz" - integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== - -conventional-changelog-writer@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz" - integrity sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ== - dependencies: - conventional-commits-filter "^2.0.7" - dateformat "^3.0.0" - handlebars "^4.7.7" - json-stringify-safe "^5.0.1" - lodash "^4.17.15" - meow "^8.0.0" - semver "^6.0.0" - split "^1.0.0" - through2 "^4.0.0" - -conventional-commits-filter@^2.0.7: - version "2.0.7" - resolved "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz" - integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== - dependencies: - lodash.ismatch "^4.4.0" - modify-values "^1.0.0" - -conventional-commits-parser@^3.2.0: - version "3.2.4" - resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz" - integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== - dependencies: - JSONStream "^1.0.4" - is-text-path "^1.0.1" - lodash "^4.17.15" - meow "^8.0.0" - split2 "^3.0.0" - through2 "^4.0.0" - -conventional-recommended-bump@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz" - integrity sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw== - dependencies: - concat-stream "^2.0.0" - conventional-changelog-preset-loader "^2.3.4" - conventional-commits-filter "^2.0.7" - conventional-commits-parser "^3.2.0" - git-raw-commits "^2.0.8" - git-semver-tags "^4.1.1" - meow "^8.0.0" - q "^1.5.1" - -convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - 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== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== - -cookie@^0.4.1: - version "0.4.2" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - -cookiejar@^2.1.1, cookiejar@^2.1.3: - version "2.1.4" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" - integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" - integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== - -copy-to-clipboard@^3.3.1: - version "3.3.3" - resolved "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz" - integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== - dependencies: - toggle-selection "^1.0.6" - -copyfiles@^2.3.0: - version "2.4.1" - resolved "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz" - integrity sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg== - dependencies: - glob "^7.0.5" - minimatch "^3.0.3" - mkdirp "^1.0.4" - noms "0.0.0" - through2 "^2.0.1" - untildify "^4.0.0" - yargs "^16.1.0" - -core-js-compat@^3.25.1: - version "3.27.1" - resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.1.tgz" - integrity sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA== - dependencies: - browserslist "^4.21.4" - -core-js-compat@^3.30.1, core-js-compat@^3.30.2: - version "3.30.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.30.2.tgz#83f136e375babdb8c80ad3c22d67c69098c1dd8b" - integrity sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA== - dependencies: - browserslist "^4.21.5" - -core-js-compat@^3.31.0: - version "3.32.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.0.tgz#f41574b6893ab15ddb0ac1693681bd56c8550a90" - integrity sha512-7a9a3D1k4UCVKnLhrgALyFcP7YCsLOQIxPd0dKjf/6GuPcgyiGP70ewWdCGrSK7evyhymi0qO4EqCmSJofDeYw== - dependencies: - browserslist "^4.21.9" - -core-js-pure@^3.0.1, core-js-pure@^3.25.1: - version "3.27.1" - resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.27.1.tgz" - integrity sha512-BS2NHgwwUppfeoqOXqi08mUqS5FiZpuRuJJpKsaME7kJz0xxuk0xkhDdfMIlP/zLa80krBqss1LtD7f889heAw== - -core-js-pure@^3.23.3: - version "3.30.2" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.30.2.tgz#005a82551f4af3250dcfb46ed360fad32ced114e" - integrity sha512-p/npFUJXXBkCCTIlEGBdghofn00jWG6ZOtdoIXSJmAu2QBvN0IqpZXWweOytcwE6cfx8ZvVUy1vw8zxhe4Y2vg== - -core-js@^2.4.0, core-js@^2.5.0: - version "2.6.12" - resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - -core-js@^3.19.2: - version "3.30.2" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.30.2.tgz#6528abfda65e5ad728143ea23f7a14f0dcf503fc" - integrity sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg== - -core-js@^3.8.2: - version "3.31.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.31.0.tgz#4471dd33e366c79d8c0977ed2d940821719db344" - integrity sha512-NIp2TQSGfR6ba5aalZD+ZQ1fSxGhDo/s1w0nx3RYzf2pnJxt7YynxFlFScP6eV7+GZsKO95NSjGxyJsU3DZgeQ== - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cors@^2.8.1, cors@^2.8.5: - 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" - -cosmiconfig@^5.0.7: - version "5.2.1" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - -cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: - version "7.1.0" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" - integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -cosmiconfig@^8.1.3: - version "8.2.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.2.0.tgz#f7d17c56a590856cd1e7cee98734dca272b0d8fd" - integrity sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ== - dependencies: - import-fresh "^3.2.1" - js-yaml "^4.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - -crc-32@^1.2.0: - version "1.2.2" - resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz" - integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" - 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.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" - 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.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" - 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.npmjs.org/create-require/-/create-require-1.1.1.tgz" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-fetch@^2.1.0, cross-fetch@^2.1.1: - version "2.2.6" - resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.6.tgz" - integrity sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA== - dependencies: - node-fetch "^2.6.7" - whatwg-fetch "^2.0.4" - -cross-fetch@^3.1.4: - version "3.1.5" - resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz" - integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== - dependencies: - node-fetch "2.6.7" - -cross-spawn@^5.0.1, cross-spawn@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz" - integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A== - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypt@0.0.2, "crypt@>= 0.0.1": - version "0.0.2" - resolved "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" - integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== - -crypto-addr-codec@^0.1.7: - version "0.1.7" - resolved "https://registry.npmjs.org/crypto-addr-codec/-/crypto-addr-codec-0.1.7.tgz" - integrity sha512-X4hzfBzNhy4mAc3UpiXEC/L0jo5E8wAa9unsnA8nNXYzXjCcGk83hfC5avJWCSGT8V91xMnAS9AKMHmjw5+XCg== - dependencies: - base-x "^3.0.8" - big-integer "1.6.36" - blakejs "^1.1.0" - bs58 "^4.0.1" - ripemd160-min "0.0.6" - safe-buffer "^5.2.0" - sha3 "^2.1.1" - -crypto-browserify@3.12.0: - version "3.12.0" - resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" - 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-js@^3.1.9-1: - version "3.3.0" - resolved "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz" - integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q== - -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-blank-pseudo@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz#36523b01c12a25d812df343a32c322d2a2324561" - integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ== - dependencies: - postcss-selector-parser "^6.0.9" - -css-color-keywords@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz" - integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== - -css-declaration-sorter@^6.3.1: - version "6.4.0" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz#630618adc21724484b3e9505bce812def44000ad" - integrity sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew== - -css-has-pseudo@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz#57f6be91ca242d5c9020ee3e51bbb5b89fc7af73" - integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw== - dependencies: - postcss-selector-parser "^6.0.9" - -css-loader@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645" - integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== - dependencies: - camelcase "^5.3.1" - cssesc "^3.0.0" - icss-utils "^4.1.1" - loader-utils "^1.2.3" - normalize-path "^3.0.0" - postcss "^7.0.32" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^3.0.2" - postcss-modules-scope "^2.2.0" - postcss-modules-values "^3.0.0" - postcss-value-parser "^4.1.0" - schema-utils "^2.7.0" - semver "^6.3.0" - -css-loader@^6.5.1, css-loader@^6.7.1, css-loader@^6.7.3: - version "6.8.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.8.1.tgz#0f8f52699f60f5e679eab4ec0fcd68b8e8a50a88" - integrity sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g== - dependencies: - icss-utils "^5.1.0" - postcss "^8.4.21" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.3" - postcss-modules-scope "^3.0.0" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.2.0" - semver "^7.3.8" - -css-minimizer-webpack-plugin@^3.2.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" - integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== - dependencies: - cssnano "^5.0.6" - jest-worker "^27.0.2" - postcss "^8.3.5" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - source-map "^0.6.1" - -css-prefers-color-scheme@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349" - integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" - 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-select@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" - integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== - dependencies: - boolbase "^1.0.0" - css-what "^6.1.0" - domhandler "^5.0.2" - domutils "^3.0.1" - nth-check "^2.0.1" - -css-to-react-native@^3.0.0: - version "3.2.0" - resolved "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz" - integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== - dependencies: - camelize "^1.0.0" - css-color-keywords "^1.0.0" - postcss-value-parser "^4.0.2" - -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-unit-converter@^1.1.1: - version "1.1.2" - resolved "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz" - integrity sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA== - -css-vendor@^2.0.8: - version "2.0.8" - resolved "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz" - integrity sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ== - dependencies: - "@babel/runtime" "^7.8.3" - is-in-browser "^1.0.2" - -css-what@^3.2.1: - version "3.4.2" - resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz" - integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== - -css-what@^6.0.1, css-what@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -css.escape@^1.5.1: - version "1.5.1" - resolved "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" - integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== - -cssdb@^7.1.0: - version "7.6.0" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.6.0.tgz#beac8f7a5f676db62d3c33da517ef4c9eb008f8b" - integrity sha512-Nna7rph8V0jC6+JBY4Vk4ndErUmfJfV6NJCaZdurL0omggabiy+QB2HCQtu5c/ACLZ0I7REv7A4QyPIoYzZx0w== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^5.2.14: - version "5.2.14" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" - integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== - dependencies: - css-declaration-sorter "^6.3.1" - cssnano-utils "^3.1.0" - postcss-calc "^8.2.3" - postcss-colormin "^5.3.1" - postcss-convert-values "^5.1.3" - postcss-discard-comments "^5.1.2" - postcss-discard-duplicates "^5.1.0" - postcss-discard-empty "^5.1.1" - postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.7" - postcss-merge-rules "^5.1.4" - postcss-minify-font-values "^5.1.0" - postcss-minify-gradients "^5.1.1" - postcss-minify-params "^5.1.4" - postcss-minify-selectors "^5.2.1" - postcss-normalize-charset "^5.1.0" - postcss-normalize-display-values "^5.1.0" - postcss-normalize-positions "^5.1.1" - postcss-normalize-repeat-style "^5.1.1" - postcss-normalize-string "^5.1.0" - postcss-normalize-timing-functions "^5.1.0" - postcss-normalize-unicode "^5.1.1" - postcss-normalize-url "^5.1.0" - postcss-normalize-whitespace "^5.1.1" - postcss-ordered-values "^5.1.3" - postcss-reduce-initial "^5.1.2" - postcss-reduce-transforms "^5.1.0" - postcss-svgo "^5.1.0" - postcss-unique-selectors "^5.1.1" - -cssnano-utils@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" - integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== - -cssnano@^5.0.6: - version "5.1.15" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" - integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== - dependencies: - cssnano-preset-default "^5.2.14" - lilconfig "^2.0.3" - yaml "^1.10.2" - -csso@^4.0.2, csso@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -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, csstype@^3.1.1, csstype@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" - integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== - -csv-generate@^3.4.3: - version "3.4.3" - resolved "https://registry.npmjs.org/csv-generate/-/csv-generate-3.4.3.tgz" - integrity sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw== - -csv-parse@^4.16.3: - version "4.16.3" - resolved "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz" - integrity sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg== - -csv-stringify@^5.6.5: - version "5.6.5" - resolved "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.6.5.tgz" - integrity sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A== - -csv@^5.5.0: - version "5.5.3" - resolved "https://registry.npmjs.org/csv/-/csv-5.5.3.tgz" - integrity sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g== - dependencies: - csv-generate "^3.4.3" - csv-parse "^4.16.3" - csv-stringify "^5.6.5" - stream-transform "^2.1.3" - -d3-array@2, d3-array@^2.3.0: - version "2.12.1" - resolved "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz" - integrity sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ== - dependencies: - internmap "^1.0.0" - -"d3-color@1 - 2": - version "2.0.0" - resolved "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz" - integrity sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ== - -"d3-format@1 - 2": - version "2.0.0" - resolved "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz" - integrity sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA== - -"d3-interpolate@1.2.0 - 2", d3-interpolate@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz" - integrity sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ== - dependencies: - d3-color "1 - 2" - -"d3-path@1 - 2": - version "2.0.0" - resolved "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz" - integrity sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA== - -d3-scale@^3.0.0: - version "3.3.0" - resolved "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz" - integrity sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ== - dependencies: - d3-array "^2.3.0" - d3-format "1 - 2" - d3-interpolate "1.2.0 - 2" - d3-time "^2.1.1" - d3-time-format "2 - 3" - -d3-shape@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz" - integrity sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA== - dependencies: - d3-path "1 - 2" - -"d3-time-format@2 - 3": - version "3.0.0" - resolved "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz" - integrity sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag== - dependencies: - d3-time "1 - 2" - -"d3-time@1 - 2", d3-time@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz" - integrity sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ== - dependencies: - d3-array "2" - -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz" - 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.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" - integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== - -dargs@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz" - integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" - integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== - dependencies: - assert-plus "^1.0.0" - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -date-fns@^2.29.3, date-fns@^2.30.0: - version "2.30.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" - integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== - dependencies: - "@babel/runtime" "^7.21.0" - -dateformat@^3.0.0: - version "3.0.3" - resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz" - integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== - -dateformat@^4.6.3: - version "4.6.3" - resolved "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz" - integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== - -dayjs@^1.11.7: - version "1.11.7" - resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz" - integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== - -death@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/death/-/death-1.1.0.tgz" - integrity sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w== - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9: - 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" - -debug@3.2.6: - version "3.2.6" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@4.3.1: - version "4.3.1" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - -debug@^3.1.0, debug@^3.2.7: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debuglog@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz" - integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== - -decamelize-keys@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz" - integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -decamelize@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" - integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== - -decimal.js-light@^2.4.1, decimal.js-light@^2.5.0: - version "2.5.1" - resolved "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz" - integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg== - -decimal.js@^10.2.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: - 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@^3.3.0: - 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" - -decompress-response@^4.2.0: - version "4.2.1" - resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz" - integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== - dependencies: - mimic-response "^2.0.0" - -decompress-response@^6.0.0: - 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" - -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" - integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== - -deep-eql@^4.0.1, deep-eql@^4.1.2: - version "4.1.3" - resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz" - integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== - dependencies: - type-detect "^4.0.0" - -deep-equal@^2.0.5: - version "2.2.0" - resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz" - integrity sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw== - dependencies: - call-bind "^1.0.2" - es-get-iterator "^1.1.2" - get-intrinsic "^1.1.3" - is-arguments "^1.1.1" - is-array-buffer "^3.0.1" - is-date-object "^1.0.5" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - isarray "^2.0.5" - object-is "^1.1.5" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" - side-channel "^1.0.4" - which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.9" - -deep-equal@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-extend@^0.6.0, deep-extend@~0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3, deep-is@~0.1.3: - 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== - -deepmerge@^4.2.2: - version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - -default-browser-id@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" - integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== - dependencies: - bplist-parser "^0.2.0" - untildify "^4.0.0" - -default-gateway@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" - integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== - dependencies: - execa "^5.0.0" - -default-require-extensions@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz" - integrity sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw== - dependencies: - strip-bom "^4.0.0" - -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" - integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== - -deferred-leveldown@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-7.0.0.tgz#39802715fda6ec06d0159a8b28bd1c7e2b1cf0bf" - integrity sha512-QKN8NtuS3BC6m0B8vAnBls44tX1WXAFATUsJlruyAYbZpysWV3siH6o/i3g9DCHauzodksO60bdj5NazNbjCmg== - dependencies: - abstract-leveldown "^7.2.0" - inherits "^2.0.3" - -deferred-leveldown@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-0.2.0.tgz#2cef1f111e1c57870d8bbb8af2650e587cd2f5b4" - integrity sha512-+WCbb4+ez/SZ77Sdy1iadagFiVzMB89IKOBhglgnUkVxOxRWmmFsz8UDSNWh4Rhq+3wr/vMFlYj+rdEwWUDdng== - dependencies: - abstract-leveldown "~0.12.1" - -deferred-leveldown@~1.2.1: - version "1.2.2" - resolved "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz" - integrity sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA== - dependencies: - abstract-leveldown "~2.6.0" - -deferred-leveldown@~4.0.0: - version "4.0.2" - resolved "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz" - integrity sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww== - dependencies: - abstract-leveldown "~5.0.0" - inherits "^2.0.3" - -deferred-leveldown@~5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz" - integrity sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw== - dependencies: - abstract-leveldown "~6.2.1" - inherits "^2.0.3" - -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.2, define-properties@^1.1.3, define-properties@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" - integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" - integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -defined@~1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz" - integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== - -defu@^6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.2.tgz#1217cba167410a1765ba93893c6dbac9ed9d9e5c" - integrity sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ== - -del@^6.0.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" - integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== - dependencies: - globby "^11.0.1" - graceful-fs "^4.2.4" - is-glob "^4.0.1" - is-path-cwd "^2.2.0" - is-path-inside "^3.0.2" - p-map "^4.0.0" - rimraf "^3.0.2" - slash "^3.0.0" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -depcheck@^1.4.3: - version "1.4.3" - resolved "https://registry.npmjs.org/depcheck/-/depcheck-1.4.3.tgz" - integrity sha512-vy8xe1tlLFu7t4jFyoirMmOR7x7N601ubU9Gkifyr9z8rjBFtEdWHDBMqXyk6OkK+94NXutzddVXJuo0JlUQKQ== - dependencies: - "@babel/parser" "7.16.4" - "@babel/traverse" "^7.12.5" - "@vue/compiler-sfc" "^3.0.5" - camelcase "^6.2.0" - cosmiconfig "^7.0.0" - debug "^4.2.0" - deps-regex "^0.1.4" - ignore "^5.1.8" - is-core-module "^2.4.0" - js-yaml "^3.14.0" - json5 "^2.1.3" - lodash "^4.17.20" - minimatch "^3.0.4" - multimatch "^5.0.0" - please-upgrade-node "^3.2.0" - query-ast "^1.0.3" - readdirp "^3.5.0" - require-package-name "^2.0.1" - resolve "^1.18.1" - sass "^1.29.0" - scss-parser "^1.0.4" - semver "^7.3.2" - yargs "^16.1.0" - -depd@2.0.0, depd@^2.0.0, 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, depd@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - -deprecation@^2.0.0, deprecation@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz" - integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== - -deps-regex@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/deps-regex/-/deps-regex-0.1.4.tgz" - integrity sha512-3tzwGYogSJi8HoG93R5x9NrdefZQOXgHgGih/7eivloOq6yC6O+yoFxZnkgP661twvfILONfoKRdF9GQOGx2RA== - -dequal@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" - 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.npmjs.org/destroy/-/destroy-1.2.0.tgz" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-browser@5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/detect-browser/-/detect-browser-5.2.0.tgz" - integrity sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA== - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz" - integrity sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A== - dependencies: - repeating "^2.0.0" - -detect-indent@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz" - integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== - -detect-indent@^6.0.0, detect-indent@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz" - integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== - -detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz" - integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== - -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== - -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -detect-package-manager@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/detect-package-manager/-/detect-package-manager-2.0.1.tgz#6b182e3ae5e1826752bfef1de9a7b828cffa50d8" - integrity sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A== - dependencies: - execa "^5.1.1" - -detect-port-alt@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" - integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== - dependencies: - address "^1.0.1" - debug "^2.6.0" - -detect-port@^1.3.0: - version "1.5.1" - resolved "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz" - integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== - dependencies: - address "^1.0.1" - debug "4" - -dezalgo@^1.0.0, dezalgo@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz" - integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== - dependencies: - asap "^2.0.0" - wrappy "1" - -didyoumean@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" - integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== - -diff-sequences@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" - integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== - -diff-sequences@^29.4.3: - version "29.4.3" - resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz" - integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== - -diff@3.5.0, diff@^3.1.0: - version "3.5.0" - resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== - -diff@5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz" - integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diff@^5.0.0, diff@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz" - integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" - 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.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz" - integrity sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -directory-tree@^2.2.7: - version "2.4.0" - resolved "https://registry.npmjs.org/directory-tree/-/directory-tree-2.4.0.tgz" - integrity sha512-AM03Th+ypDAHefyB6SP3uezaWkTbol1P43CS5yFU7wePTuHnR4YoHgY6KbGHLr/a065ocN26l9lXOoFBzzM31w== - -dlv@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" - integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" - integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== - -dns-packet@^5.2.2: - version "5.6.0" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.0.tgz#2202c947845c7a63c23ece58f2f70ff6ab4c2f7d" - integrity sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ== - dependencies: - "@leichtgewicht/ip-codec" "^2.0.1" - -doctoc@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/doctoc/-/doctoc-2.2.1.tgz" - integrity sha512-qNJ1gsuo7hH40vlXTVVrADm6pdg30bns/Mo7Nv1SxuXSM1bwF9b4xQ40a6EFT/L1cI+Yylbyi8MPI4G4y7XJzQ== - dependencies: - "@textlint/markdown-to-ast" "^12.1.1" - anchor-markdown-header "^0.6.0" - htmlparser2 "^7.2.0" - minimist "^1.2.6" - underscore "^1.13.2" - update-section "^0.3.3" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: - version "0.5.16" - resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz" - integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== - -dom-converter@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-helpers@^3.4.0: - version "3.4.0" - resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz" - integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA== - dependencies: - "@babel/runtime" "^7.1.2" - -dom-helpers@^5.0.1: - version "5.2.1" - resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz" - integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== - dependencies: - "@babel/runtime" "^7.8.7" - csstype "^3.0.2" - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -dom-serializer@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" - integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.2" - entities "^4.2.0" - -dom-walk@^0.1.0: - version "0.1.2" - resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz" - integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== - -domelementtype@1: - version "1.3.1" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - -domhandler@5.0.3, domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" - integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== - dependencies: - domelementtype "^2.3.0" - -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.2.2, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^2.5.2, domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -domutils@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz" - integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== - dependencies: - dom-serializer "^2.0.0" - domelementtype "^2.3.0" - domhandler "^5.0.1" - -domutils@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" - integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== - dependencies: - dom-serializer "^2.0.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - -dot-case@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/dot-case/-/dot-case-2.1.1.tgz" - integrity sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug== - dependencies: - no-case "^2.2.0" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dot-prop@^5.1.0: - version "5.3.0" - resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -dot-prop@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz" - integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== - dependencies: - is-obj "^2.0.0" - -dotenv-expand@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" - integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== - -dotenv-expand@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== - -dotenv@8.2.0: - version "8.2.0" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== - -dotenv@^10.0.0: - version "10.0.0" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== - -dotenv@^14.2.0: - version "14.3.2" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-14.3.2.tgz" - integrity sha512-vwEppIphpFdvaMCaHfCEv9IgwcxMljMw2TnAQBB4VWPvzXQLTb82jwmdOKzlEVUL3gNFT4l4TPKO+Bn+sqcrVQ== - -dotenv@^16.0.0: - version "16.0.3" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz" - integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== - -dotenv@^16.0.3: - version "16.3.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" - integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== - -dotenv@^8.2.0, dotenv@^8.6.0: - version "8.6.0" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz" - integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== - -dotenv@^9.0.0: - version "9.0.2" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz" - integrity sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg== - -dotignore@~0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz" - integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== - dependencies: - minimatch "^3.0.4" - -duplexer3@^0.1.4: - version "0.1.5" - resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz" - integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== - -duplexer@^0.1.1, duplexer@^0.1.2, duplexer@~0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -duplexify@^3.5.0, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -duplexify@^4.1.1: - 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" - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" - integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -ejs@^3.1.6, ejs@^3.1.8: - version "3.1.9" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" - integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== - dependencies: - jake "^10.8.5" - -electron-to-chromium@^1.3.47, electron-to-chromium@^1.4.251: - 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== - -electron-to-chromium@^1.4.284: - version "1.4.324" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.324.tgz" - integrity sha512-m+eBs/kh3TXnCuqDF6aHLLRwLK2U471JAbZ1KYigf0TM96fZglxv0/ZFBvyIxnLKsIWUoDiVnHTA2mhYz1fqdA== - -electron-to-chromium@^1.4.411: - version "1.4.423" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.423.tgz#99567f3a0563fe0d1d0931e9ce851bca239f6658" - integrity sha512-y4A7YfQcDGPAeSWM1IuoWzXpg9RY1nwHzHSwRtCSQFp9FgAVDgdWlFf0RbdWfLWQ2WUI+bddUgk5RgTjqRE6FQ== - -electron-to-chromium@^1.4.477: - version "1.4.477" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.477.tgz#05669aa6f161ee9076a6805457e9bd9fe6d0dfd1" - integrity sha512-shUVy6Eawp33dFBFIoYbIwLHrX0IZ857AlH9ug2o4rvbWmpaCUdBpQ5Zw39HRrfzAFm4APJE9V+E2A/WB0YqJw== - -elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: - version "6.5.4" - resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" - 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== - -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -emoji-regex@~10.1.0: - version "10.1.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.1.0.tgz" - integrity sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg== - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encode-utf8@^1.0.2: - 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@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -encoding-down@5.0.4, encoding-down@~5.0.0: - version "5.0.4" - resolved "https://registry.npmjs.org/encoding-down/-/encoding-down-5.0.4.tgz" - integrity sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw== - dependencies: - abstract-leveldown "^5.0.0" - inherits "^2.0.3" - level-codec "^9.0.0" - level-errors "^2.0.0" - xtend "^4.0.1" - -encoding-down@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/encoding-down/-/encoding-down-6.3.0.tgz" - integrity sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw== - dependencies: - abstract-leveldown "^6.2.1" - inherits "^2.0.3" - level-codec "^9.0.0" - level-errors "^2.0.0" - -encoding@^0.1.11, encoding@^0.1.12, encoding@^0.1.13: - version "0.1.13" - resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: - 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== - dependencies: - once "^1.4.0" - -endent@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/endent/-/endent-2.1.0.tgz#5aaba698fb569e5e18e69e1ff7a28ff35373cd88" - integrity sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w== - dependencies: - dedent "^0.7.0" - fast-json-parse "^1.0.3" - objectorarray "^1.0.5" - -enhanced-resolve@^5.10.0: - version "5.12.0" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz" - integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enhanced-resolve@^5.14.1: - version "5.14.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz#de684b6803724477a4af5d74ccae5de52c25f6b3" - integrity sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enquirer@^2.3.0, enquirer@^2.3.5, enquirer@^2.3.6: - version "2.3.6" - resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^3.0.1, entities@~3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz" - integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== - -entities@^4.2.0, entities@^4.3.0, entities@^4.4.0: - version "4.4.0" - resolved "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz" - integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== - -entities@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -entities@~2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz" - integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== - -env-paths@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - -envalid@^7.1.0, envalid@^7.2.2: - version "7.3.1" - resolved "https://registry.npmjs.org/envalid/-/envalid-7.3.1.tgz" - integrity sha512-KL1YRwn8WcoF/Ty7t+yLLtZol01xr9ZJMTjzoGRM8NaSU+nQQjSWOQKKJhJP2P57bpdakJ9jbxqQX4fGTOicZg== - dependencies: - tslib "2.3.1" - -envinfo@^7.7.3, envinfo@^7.7.4: - version "7.8.1" - resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz" - integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== - -err-code@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== - -errno@^0.1.1, errno@~0.1.1: - version "0.1.8" - resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -error-ex@^1.2.0, error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^2.0.6: - version "2.1.4" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" - integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== - dependencies: - stackframe "^1.3.4" - -es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.21.0" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.0.tgz" - integrity sha512-GUGtW7eXQay0c+PRq0sGIKSdaBorfVqsCMhGHo4elP7YVqZu9nCZS4UkK4gv71gOWNMra/PaSKD3ao1oWExO0g== - dependencies: - call-bind "^1.0.2" - es-set-tostringtag "^2.0.0" - 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" - 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.4" - is-array-buffer "^3.0.0" - 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.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" - typed-array-length "^1.0.4" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.9" - -es-array-method-boxes-properly@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz" - integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== - -es-get-iterator@^1.1.2: - version "1.1.3" - resolved "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz" - integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - has-symbols "^1.0.3" - is-arguments "^1.1.1" - is-map "^2.0.2" - is-set "^2.0.2" - is-string "^1.0.7" - isarray "^2.0.5" - stop-iteration-iterator "^1.0.0" - -es-module-lexer@^0.9.0: - version "0.9.3" - resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz" - integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== - -es-module-lexer@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.2.1.tgz#ba303831f63e6a394983fde2f97ad77b22324527" - integrity sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg== - -es-set-tostringtag@^2.0.0: - 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" - -es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== - dependencies: - has "^1.0.3" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" - 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.50: - version "0.10.62" - resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz" - integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== - dependencies: - es6-iterator "^2.0.3" - es6-symbol "^3.1.3" - next-tick "^1.1.0" - -es6-error@^4.0.1: - version "4.1.1" - resolved "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz" - integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== - -es6-iterator@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" - 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: - 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-symbol@^3.1.1, es6-symbol@^3.1.3: - 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== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -esbuild-plugin-alias@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz#45a86cb941e20e7c2bc68a2bea53562172494fcb" - integrity sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ== - -esbuild-register@^3.4.0: - version "3.4.2" - resolved "https://registry.yarnpkg.com/esbuild-register/-/esbuild-register-3.4.2.tgz#1e39ee0a77e8f320a9790e68c64c3559620b9175" - integrity sha512-kG/XyTDyz6+YDuyfB9ZoSIOOmgyFCH+xPRtsCa8W85HLRV5Csp+o3jWVbOSHgSLfyLc5DmP+KFDNwty4mEjC+Q== - dependencies: - debug "^4.3.4" - -esbuild@^0.17.0: - version "0.17.19" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" - integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== - optionalDependencies: - "@esbuild/android-arm" "0.17.19" - "@esbuild/android-arm64" "0.17.19" - "@esbuild/android-x64" "0.17.19" - "@esbuild/darwin-arm64" "0.17.19" - "@esbuild/darwin-x64" "0.17.19" - "@esbuild/freebsd-arm64" "0.17.19" - "@esbuild/freebsd-x64" "0.17.19" - "@esbuild/linux-arm" "0.17.19" - "@esbuild/linux-arm64" "0.17.19" - "@esbuild/linux-ia32" "0.17.19" - "@esbuild/linux-loong64" "0.17.19" - "@esbuild/linux-mips64el" "0.17.19" - "@esbuild/linux-ppc64" "0.17.19" - "@esbuild/linux-riscv64" "0.17.19" - "@esbuild/linux-s390x" "0.17.19" - "@esbuild/linux-x64" "0.17.19" - "@esbuild/netbsd-x64" "0.17.19" - "@esbuild/openbsd-x64" "0.17.19" - "@esbuild/sunos-x64" "0.17.19" - "@esbuild/win32-arm64" "0.17.19" - "@esbuild/win32-ia32" "0.17.19" - "@esbuild/win32-x64" "0.17.19" - -esbuild@^0.18.0: - version "0.18.17" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.17.tgz#2aaf6bc6759b0c605777fdc435fea3969e091cad" - integrity sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg== - optionalDependencies: - "@esbuild/android-arm" "0.18.17" - "@esbuild/android-arm64" "0.18.17" - "@esbuild/android-x64" "0.18.17" - "@esbuild/darwin-arm64" "0.18.17" - "@esbuild/darwin-x64" "0.18.17" - "@esbuild/freebsd-arm64" "0.18.17" - "@esbuild/freebsd-x64" "0.18.17" - "@esbuild/linux-arm" "0.18.17" - "@esbuild/linux-arm64" "0.18.17" - "@esbuild/linux-ia32" "0.18.17" - "@esbuild/linux-loong64" "0.18.17" - "@esbuild/linux-mips64el" "0.18.17" - "@esbuild/linux-ppc64" "0.18.17" - "@esbuild/linux-riscv64" "0.18.17" - "@esbuild/linux-s390x" "0.18.17" - "@esbuild/linux-x64" "0.18.17" - "@esbuild/netbsd-x64" "0.18.17" - "@esbuild/openbsd-x64" "0.18.17" - "@esbuild/sunos-x64" "0.18.17" - "@esbuild/win32-arm64" "0.18.17" - "@esbuild/win32-ia32" "0.18.17" - "@esbuild/win32-x64" "0.18.17" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@~1.0.3: - 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@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escodegen@1.8.x: - version "1.8.1" - resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz" - integrity sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A== - dependencies: - esprima "^2.7.1" - estraverse "^1.9.1" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.2.0" - -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" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-prettier@^8.3.0: - version "8.6.0" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz" - integrity sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA== - -eslint-config-react-app@^7.0.0, eslint-config-react-app@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz" - integrity sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA== - dependencies: - "@babel/core" "^7.16.0" - "@babel/eslint-parser" "^7.16.3" - "@rushstack/eslint-patch" "^1.1.0" - "@typescript-eslint/eslint-plugin" "^5.5.0" - "@typescript-eslint/parser" "^5.5.0" - babel-preset-react-app "^10.0.1" - confusing-browser-globals "^1.0.11" - eslint-plugin-flowtype "^8.0.3" - eslint-plugin-import "^2.25.3" - eslint-plugin-jest "^25.3.0" - eslint-plugin-jsx-a11y "^6.5.1" - eslint-plugin-react "^7.27.1" - eslint-plugin-react-hooks "^4.3.0" - eslint-plugin-testing-library "^5.0.1" - -eslint-config-standard-with-typescript@^21.0.1: - version "21.0.1" - resolved "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-21.0.1.tgz" - integrity sha512-FeiMHljEJ346Y0I/HpAymNKdrgKEpHpcg/D93FvPHWfCzbT4QyUJba/0FwntZeGLXfUiWDSeKmdJD597d9wwiw== - dependencies: - "@typescript-eslint/parser" "^4.0.0" - eslint-config-standard "^16.0.0" - -eslint-config-standard@^16.0.0, eslint-config-standard@^16.0.3: - version "16.0.3" - resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz" - integrity sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg== - -eslint-config-standard@^17.0.0: - version "17.0.0" - resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz" - integrity sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg== - -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== - dependencies: - debug "^3.2.7" - resolve "^1.20.0" - -eslint-module-utils@^2.7.3: - version "2.7.4" - resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz" - integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== - dependencies: - debug "^3.2.7" - -eslint-plugin-es@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz" - integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== - dependencies: - eslint-utils "^2.0.0" - regexpp "^3.0.0" - -eslint-plugin-flowtype@^8.0.3: - version "8.0.3" - resolved "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz" - integrity sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ== - dependencies: - lodash "^4.17.21" - string-natural-compare "^3.0.1" - -eslint-plugin-import@^2.23.4, eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.26.0: - version "2.26.0" - resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz" - 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-jest@^25.3.0: - version "25.7.0" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz" - integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== - dependencies: - "@typescript-eslint/experimental-utils" "^5.0.0" - -eslint-plugin-jsdoc@^46.2.6: - version "46.2.6" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.2.6.tgz#f25590d371859f20691d65b5dcd4cbe370d65564" - integrity sha512-zIaK3zbSrKuH12bP+SPybPgcHSM6MFzh3HFeaODzmsF1N8C1l8dzJ22cW1aq4g0+nayU1VMjmNf7hg0dpShLrA== - dependencies: - "@es-joy/jsdoccomment" "~0.39.4" - are-docs-informative "^0.0.2" - comment-parser "1.3.1" - debug "^4.3.4" - escape-string-regexp "^4.0.0" - esquery "^1.5.0" - is-builtin-module "^3.2.1" - semver "^7.5.1" - spdx-expression-parse "^3.0.1" - -eslint-plugin-jsx-a11y@^6.5.1: - 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== - 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-node@^11.1.0: - version "11.1.0" - resolved "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz" - integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== - dependencies: - eslint-plugin-es "^3.0.0" - eslint-utils "^2.0.0" - ignore "^5.1.1" - minimatch "^3.0.4" - resolve "^1.10.1" - semver "^6.1.0" - -eslint-plugin-prefer-arrow@^1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.3.tgz" - integrity sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ== - -eslint-plugin-prettier@^3.4.0: - version "3.4.1" - resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz" - integrity sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-plugin-prettier@^4.0.0: - 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== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-plugin-promise@^5.1.0: - version "5.2.0" - resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz" - integrity sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw== - -eslint-plugin-promise@^6.0.0: - version "6.1.1" - resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz" - integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== - -eslint-plugin-react-hooks@^4.3.0: - 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== - -eslint-plugin-react@^7.24.0, eslint-plugin-react@^7.27.1: - version "7.32.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" - integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== - 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.4" - semver "^6.3.0" - string.prototype.matchall "^4.0.8" - -eslint-plugin-standard@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-5.0.0.tgz" - integrity sha512-eSIXPc9wBM4BrniMzJRBm2uoVuXz2EPa+NXPk2+itrVt+r5SbKFERx/IgrK/HmfjddyKVz2f+j+7gBRvu19xLg== - -eslint-plugin-storybook@^0.6.12: - version "0.6.12" - resolved "https://registry.yarnpkg.com/eslint-plugin-storybook/-/eslint-plugin-storybook-0.6.12.tgz#7bdb3392bb03bebde40ed19accfd61246e9d6301" - integrity sha512-XbIvrq6hNVG6rpdBr+eBw63QhOMLpZneQVSooEDow8aQCWGCk/5vqtap1yxpVydNfSxi3S/3mBBRLQqKUqQRww== - dependencies: - "@storybook/csf" "^0.0.1" - "@typescript-eslint/utils" "^5.45.0" - requireindex "^1.1.0" - ts-dedent "^2.2.0" - -eslint-plugin-testing-library@^5.0.1: - version "5.9.1" - resolved "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.9.1.tgz" - integrity sha512-6BQp3tmb79jLLasPHJmy8DnxREe+2Pgf7L+7o09TSWPfdqqtQfRZmZNetr5mOs3yqZk/MRNxpN3RUpJe0wB4LQ== - dependencies: - "@typescript-eslint/utils" "^5.13.0" - -eslint-plugin-unicorn@^32.0.1: - version "32.0.1" - resolved "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-32.0.1.tgz" - integrity sha512-LaZ9utnXtOJjnoDkpm+nQsONUUmyRR0WD6PGROSdQRRW3LRmgK/ZP8wxjW+Ai+2uolKTtuJzLx2mvbIeIoLqpg== - dependencies: - ci-info "^3.1.1" - clean-regexp "^1.0.0" - eslint-template-visitor "^2.3.2" - eslint-utils "^2.1.0" - import-modules "^2.1.0" - is-builtin-module "^3.1.0" - lodash "^4.17.21" - pluralize "^8.0.0" - read-pkg-up "^7.0.1" - regexp-tree "^0.1.23" - reserved-words "^0.1.2" - safe-regex "^2.1.1" - semver "^7.3.5" - -eslint-plugin-unicorn@^42.0.0: - version "42.0.0" - resolved "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-42.0.0.tgz" - integrity sha512-ixBsbhgWuxVaNlPTT8AyfJMlhyC5flCJFjyK3oKE8TRrwBnaHvUbuIkCM1lqg8ryYrFStL/T557zfKzX4GKSlg== - dependencies: - "@babel/helper-validator-identifier" "^7.15.7" - ci-info "^3.3.0" - clean-regexp "^1.0.0" - eslint-utils "^3.0.0" - esquery "^1.4.0" - indent-string "^4.0.0" - is-builtin-module "^3.1.0" - lodash "^4.17.21" - pluralize "^8.0.0" - read-pkg-up "^7.0.1" - regexp-tree "^0.1.24" - safe-regex "^2.1.1" - semver "^7.3.5" - strip-indent "^3.0.0" - -eslint-scope@5.1.1, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-scope@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" - integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-template-visitor@^2.3.2: - version "2.3.2" - resolved "https://registry.npmjs.org/eslint-template-visitor/-/eslint-template-visitor-2.3.2.tgz" - integrity sha512-3ydhqFpuV7x1M9EK52BPNj6V0Kwu0KKkcIAfpUhwHbR8ocRln/oUHgfxQupY8O1h4Qv/POHDumb/BwwNfxbtnA== - dependencies: - "@babel/core" "^7.12.16" - "@babel/eslint-parser" "^7.12.16" - eslint-visitor-keys "^2.0.0" - esquery "^1.3.1" - multimap "^1.1.0" - -eslint-utils@^1.3.1: - version "1.4.3" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^2.0.0, eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: - 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== - -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint-visitor-keys@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" - integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== - -eslint-webpack-plugin@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz#1978cdb9edc461e4b0195a20da950cf57988347c" - integrity sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w== - dependencies: - "@types/eslint" "^7.29.0 || ^8.4.1" - jest-worker "^28.0.2" - micromatch "^4.0.5" - normalize-path "^3.0.0" - schema-utils "^4.0.0" - -eslint@^5.6.0: - version "5.16.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz" - integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.9.1" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^4.0.3" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^5.0.1" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.7.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^6.2.2" - js-yaml "^3.13.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.11" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" - table "^5.2.3" - text-table "^0.2.0" - -eslint@^7.27.0: - version "7.32.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -eslint@^8.16.0, eslint@^8.19.0: - version "8.31.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz" - integrity sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA== - 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" - -eslint@^8.3.0: - version "8.42.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.42.0.tgz#7bebdc3a55f9ed7167251fe7259f75219cade291" - integrity sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.4.0" - "@eslint/eslintrc" "^2.0.3" - "@eslint/js" "8.42.0" - "@humanwhocodes/config-array" "^0.11.10" - "@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.2.0" - eslint-visitor-keys "^3.4.1" - espree "^9.5.2" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.1" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - -espree@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz" - integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== - dependencies: - acorn "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" - -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -espree@^9.4.0: - version "9.4.1" - resolved "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz" - integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== - dependencies: - acorn "^8.8.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" - -espree@^9.5.2: - version "9.5.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b" - integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw== - dependencies: - acorn "^8.8.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@2.7.x, esprima@^2.7.1: - version "2.7.3" - resolved "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz" - integrity sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A== - -esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.0.1, esquery@^1.3.1, esquery@^1.4.0, esquery@^1.4.2, esquery@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.1.0, esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz" - integrity sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA== - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -estree-to-babel@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/estree-to-babel/-/estree-to-babel-3.2.1.tgz#82e78315275c3ca74475fdc8ac1a5103c8a75bf5" - integrity sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg== - dependencies: - "@babel/traverse" "^7.1.6" - "@babel/types" "^7.2.0" - c8 "^7.6.0" - -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.0.2: - 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@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -eth-block-tracker@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-3.0.1.tgz" - integrity sha512-WUVxWLuhMmsfenfZvFO5sbl1qFY2IqUlw/FPVmjjdElpqLsZtSG+wPe9Dz7W/sB6e80HgFKknOmKk2eNlznHug== - dependencies: - eth-query "^2.1.0" - ethereumjs-tx "^1.3.3" - ethereumjs-util "^5.1.3" - ethjs-util "^0.1.3" - json-rpc-engine "^3.6.0" - pify "^2.3.0" - tape "^4.6.3" - -eth-block-tracker@^4.4.2: - version "4.4.3" - resolved "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz" - integrity sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw== - 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-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: - 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" - -eth-gas-reporter@^0.2.25: - version "0.2.25" - resolved "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.25.tgz" - integrity sha512-1fRgyE4xUB8SoqLgN3eDfpDfwEfRxh2Sz1b7wzFbyQA+9TekMmvSjjoRu9SKcSVyK+vLkLIsVbJDsTWjw195OQ== - dependencies: - "@ethersproject/abi" "^5.0.0-beta.146" - "@solidity-parser/parser" "^0.14.0" - cli-table3 "^0.5.0" - colors "1.4.0" - ethereum-cryptography "^1.0.3" - ethers "^4.0.40" - fs-readdir-recursive "^1.1.0" - lodash "^4.17.14" - markdown-table "^1.1.3" - mocha "^7.1.1" - req-cwd "^2.0.0" - request "^2.88.0" - request-promise-native "^1.0.5" - sha1 "^1.1.1" - sync-request "^6.0.0" - -eth-json-rpc-filters@^4.2.1: - 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== - 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@^3.1.0: - version "3.2.1" - resolved "https://registry.npmjs.org/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.1.tgz" - integrity sha512-W7zR4DZvyTn23Bxc0EWsq4XGDdD63+XPUCEhV2zQvQGavDVC4ZpFDK4k99qN7bd7/fjj37+rxmuBOBeIqCA5Mw== - dependencies: - cross-fetch "^2.1.1" - eth-json-rpc-middleware "^1.5.0" - json-rpc-engine "^3.4.0" - json-rpc-error "^2.0.0" - -eth-json-rpc-infura@^5.1.0: - 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== - 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@^1.5.0: - version "1.6.0" - resolved "https://registry.npmjs.org/eth-json-rpc-middleware/-/eth-json-rpc-middleware-1.6.0.tgz" - integrity sha512-tDVCTlrUvdqHKqivYMjtFZsdD7TtpNLBCfKAcOpaVs7orBMS/A8HWro6dIzNtTZIR05FAbJ3bioFOnZpuCew9Q== - dependencies: - async "^2.5.0" - eth-query "^2.1.2" - eth-tx-summary "^3.1.2" - ethereumjs-block "^1.6.0" - ethereumjs-tx "^1.3.3" - ethereumjs-util "^5.1.2" - ethereumjs-vm "^2.1.0" - fetch-ponyfill "^4.0.0" - json-rpc-engine "^3.6.0" - json-rpc-error "^2.0.0" - json-stable-stringify "^1.0.1" - promise-to-callback "^1.0.0" - tape "^4.6.3" - -eth-json-rpc-middleware@^6.0.0: - 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== - 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.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" - -eth-lib@^0.1.26: - 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" - -eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz" - integrity sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA== - dependencies: - json-rpc-random-id "^1.0.0" - xtend "^4.0.1" - -eth-rpc-errors@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz" - integrity sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-rpc-errors@^4.0.2: - version "4.0.3" - resolved "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz" - integrity sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-sig-util@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-3.0.0.tgz" - integrity sha512-4eFkMOhpGbTxBQ3AMzVf0haUX2uTur7DpWiHzWyTURa28BVJJtOkcb9Ok5TV0YvEPG61DODPW7ZUATbJTslioQ== - dependencies: - buffer "^5.2.1" - elliptic "^6.4.0" - ethereumjs-abi "0.6.5" - ethereumjs-util "^5.1.1" - tweetnacl "^1.0.0" - tweetnacl-util "^0.15.0" - -eth-sig-util@^1.4.2: - 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== - dependencies: - ethereumjs-abi "git+https://github.com/ethereumjs/ethereumjs-abi.git" - ethereumjs-util "^5.1.1" - -eth-sig-util@^2.5.2: - version "2.5.4" - resolved "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-2.5.4.tgz" - integrity sha512-aCMBwp8q/4wrW4QLsF/HYBOSA7TpLKmkVwP3pYQNkEEseW2Rr8Z5Uxc9/h6HX+OG3tuHo+2bINVSihIeBfym6A== - dependencies: - ethereumjs-abi "0.6.8" - ethereumjs-util "^5.1.1" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.0" - -eth-sig-util@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-3.0.1.tgz" - integrity sha512-0Us50HiGGvZgjtWTyAI/+qTzYPMLy5Q451D0Xy68bxq1QMWdoOddDwGvsqcFT27uohKgalM9z/yxplyt+mY2iQ== - dependencies: - ethereumjs-abi "^0.6.8" - ethereumjs-util "^5.1.1" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.0" - -eth-tx-summary@^3.1.2: - version "3.2.4" - resolved "https://registry.npmjs.org/eth-tx-summary/-/eth-tx-summary-3.2.4.tgz" - integrity sha512-NtlDnaVZah146Rm8HMRUNMgIwG/ED4jiqk0TME9zFheMl1jOp6jL1m0NKGjJwehXQ6ZKCPr16MTr+qspKpEXNg== - dependencies: - async "^2.1.2" - clone "^2.0.0" - concat-stream "^1.5.1" - end-of-stream "^1.1.0" - eth-query "^2.0.2" - ethereumjs-block "^1.4.1" - ethereumjs-tx "^1.1.1" - ethereumjs-util "^5.0.1" - ethereumjs-vm "^2.6.0" - through2 "^2.0.3" - -ethashjs@~0.0.7: - version "0.0.8" - resolved "https://registry.npmjs.org/ethashjs/-/ethashjs-0.0.8.tgz" - integrity sha512-/MSbf/r2/Ld8o0l15AymjOTlPqpN8Cr4ByUEA9GtR4x0yAh3TdtDzEg29zMjXCNPI7u6E5fOQdj/Cf9Tc7oVNw== - dependencies: - async "^2.1.2" - buffer-xor "^2.0.1" - ethereumjs-util "^7.0.2" - miller-rabin "^4.0.0" - -ethereum-bloom-filters@^1.0.6: - version "1.0.10" - resolved "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz" - integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== - dependencies: - js-sha3 "^0.8.0" - -ethereum-common@0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz" - integrity sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA== - -ethereum-common@^0.0.18: - version "0.0.18" - resolved "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz" - integrity sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ== - -ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz" - integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== - 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.0.3: - 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" - -ethereum-cryptography@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz#18fa7108622e56481157a5cb7c01c0c6a672eb67" - integrity sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug== - dependencies: - "@noble/curves" "1.1.0" - "@noble/hashes" "1.3.1" - "@scure/bip32" "1.3.1" - "@scure/bip39" "1.2.1" - -ethereum-waffle@^3.3.0, ethereum-waffle@^3.4.0: - version "3.4.4" - resolved "https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.4.4.tgz" - integrity sha512-PA9+jCjw4WC3Oc5ocSMBj5sXvueWQeAbvCA+hUlb6oFgwwKyq5ka3bWQ7QZcjzIX+TdFkxP4IbFmoY2D8Dkj9Q== - dependencies: - "@ethereum-waffle/chai" "^3.4.4" - "@ethereum-waffle/compiler" "^3.4.4" - "@ethereum-waffle/mock-contract" "^3.4.4" - "@ethereum-waffle/provider" "^3.4.4" - ethers "^5.0.1" - -ethereumjs-abi@0.6.5: - version "0.6.5" - resolved "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz" - integrity sha512-rCjJZ/AE96c/AAZc6O3kaog4FhOsAViaysBxqJNy2+LHP0ttH0zkZ7nXdVHOAyt6lFwLO0nlCwWszysG/ao1+g== - dependencies: - bn.js "^4.10.0" - ethereumjs-util "^4.3.0" - -ethereumjs-abi@0.6.8, ethereumjs-abi@^0.6.8: - version "0.6.8" - resolved "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz" - integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== - dependencies: - 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@3.0.0, ethereumjs-account@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz" - integrity sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA== - dependencies: - ethereumjs-util "^6.0.0" - rlp "^2.2.1" - safe-buffer "^5.1.1" - -ethereumjs-account@^2.0.3: - version "2.0.5" - resolved "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz" - integrity sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA== - dependencies: - ethereumjs-util "^5.0.0" - rlp "^2.0.0" - safe-buffer "^5.1.1" - -ethereumjs-block@2.2.2, ethereumjs-block@^2.2.2, ethereumjs-block@~2.2.0, ethereumjs-block@~2.2.2: - version "2.2.2" - resolved "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz" - 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-block@^1.2.2, ethereumjs-block@^1.4.1, ethereumjs-block@^1.6.0: - version "1.7.1" - resolved "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz" - 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-blockchain@^4.0.3: - version "4.0.4" - resolved "https://registry.npmjs.org/ethereumjs-blockchain/-/ethereumjs-blockchain-4.0.4.tgz" - integrity sha512-zCxaRMUOzzjvX78DTGiKjA+4h2/sF0OYL1QuPux0DHpyq8XiNoF5GYHtb++GUxVlMsMfZV7AVyzbtgcRdIcEPQ== - dependencies: - async "^2.6.1" - ethashjs "~0.0.7" - ethereumjs-block "~2.2.2" - ethereumjs-common "^1.5.0" - ethereumjs-util "^6.1.0" - flow-stoplight "^1.0.0" - level-mem "^3.0.1" - lru-cache "^5.1.1" - rlp "^2.2.2" - semaphore "^1.1.0" - -ethereumjs-common@1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz" - integrity sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ== - -ethereumjs-common@^1.1.0, ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: - version "1.5.2" - resolved "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz" - integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== - -ethereumjs-tx@2.1.2, ethereumjs-tx@^2.1.1, ethereumjs-tx@^2.1.2: - 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== - dependencies: - ethereumjs-common "^1.5.0" - ethereumjs-util "^6.0.0" - -ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3: - version "1.3.7" - resolved "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz" - integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== - dependencies: - ethereum-common "^0.0.18" - ethereumjs-util "^5.0.0" - -ethereumjs-util@6.2.1, ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0, ethereumjs-util@^6.2.1: - version "6.2.1" - resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz" - integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== - 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-util@^4.3.0: - version "4.5.1" - resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-4.5.1.tgz" - integrity sha512-WrckOZ7uBnei4+AKimpuF1B3Fv25OmoRgmYCpGsP7u8PFxXAmAgiJSYT2kRWnt6fVIlKaQlZvuwXp7PIrmn3/w== - dependencies: - bn.js "^4.8.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - rlp "^2.0.0" - -ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.3, ethereumjs-util@^5.1.5, ethereumjs-util@^5.2.0: - version "5.2.1" - resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz" - 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@^7.0.10, ethereumjs-util@^7.0.2, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: - version "7.1.5" - resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz" - integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== - 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@4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-4.2.0.tgz" - integrity sha512-X6qqZbsY33p5FTuZqCnQ4+lo957iUJMM6Mpa6bL4UW0dxM6WmDSHuI4j/zOp1E2TDKImBGCJA9QPfc08PaNubA== - dependencies: - async "^2.1.2" - async-eventemitter "^0.2.2" - core-js-pure "^3.0.1" - ethereumjs-account "^3.0.0" - ethereumjs-block "^2.2.2" - ethereumjs-blockchain "^4.0.3" - ethereumjs-common "^1.5.0" - ethereumjs-tx "^2.1.2" - ethereumjs-util "^6.2.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" - util.promisify "^1.0.0" - -ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.6.0: - 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== - 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" - -ethereumjs-wallet@0.6.5: - version "0.6.5" - resolved "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-0.6.5.tgz" - integrity sha512-MDwjwB9VQVnpp/Dc1XzA6J1a3wgHQ4hSvA1uWNatdpOrtCbPVuQSKSyRnjLvS0a+KKMw2pvQ9Ybqpb3+eW8oNA== - dependencies: - aes-js "^3.1.1" - bs58check "^2.1.2" - ethereum-cryptography "^0.1.3" - ethereumjs-util "^6.0.0" - randombytes "^2.0.6" - safe-buffer "^5.1.2" - scryptsy "^1.2.1" - utf8 "^3.0.0" - uuid "^3.3.2" - -ethereumjs-wallet@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-1.0.2.tgz" - integrity sha512-CCWV4RESJgRdHIvFciVQFnCHfqyhXWchTPlkfp28Qc53ufs+doi5I/cV2+xeK9+qEo25XCWfP9MiL+WEPAZfdA== - dependencies: - aes-js "^3.1.2" - bs58check "^2.1.2" - ethereum-cryptography "^0.1.3" - ethereumjs-util "^7.1.2" - randombytes "^2.1.0" - scrypt-js "^3.0.1" - utf8 "^3.0.0" - uuid "^8.3.2" - -ethers@^4.0.32, ethers@^4.0.40: - version "4.0.49" - resolved "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz" - integrity sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg== - dependencies: - aes-js "3.0.0" - bn.js "^4.11.9" - elliptic "6.5.4" - hash.js "1.1.3" - js-sha3 "0.5.7" - scrypt-js "2.0.4" - setimmediate "1.0.4" - uuid "2.0.1" - xmlhttprequest "1.8.0" - -ethers@^5.0.1, ethers@^5.0.13, ethers@^5.0.2, ethers@^5.5.2, ethers@^5.5.3, ethers@^5.5.4, ethers@^5.7.0: - version "5.7.2" - resolved "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz" - 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-abi@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/ethjs-abi/-/ethjs-abi-0.2.1.tgz" - integrity sha512-g2AULSDYI6nEJyJaEVEXtTimRY2aPC2fi7ddSy0W+LXvEVL8Fe1y76o43ecbgdUKwZD+xsmEgX1yJr1Ia3r1IA== - dependencies: - bn.js "4.11.6" - js-sha3 "0.5.5" - number-to-bn "1.7.0" - -ethjs-unit@0.1.6: - version "0.1.6" - resolved "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz" - 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.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz" - integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== - dependencies: - is-hex-prefixed "1.0.0" - strip-hex-prefix "1.0.0" - -event-stream@4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/event-stream/-/event-stream-4.0.1.tgz" - integrity sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA== - dependencies: - duplexer "^0.1.1" - from "^0.1.7" - map-stream "0.0.7" - pause-stream "^0.0.11" - split "^1.0.1" - stream-combiner "^0.2.2" - through "^2.3.8" - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -eventemitter3@4.0.4: - version "4.0.4" - resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz" - integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== - -eventemitter3@4.0.7, eventemitter3@^4.0.0, eventemitter3@^4.0.1, eventemitter3@^4.0.4: - version "4.0.7" - resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.0.0, events@^3.2.0, events@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz" - integrity sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw== - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^0.8.0: - version "0.8.0" - resolved "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz" - integrity sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA== - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^5.0.0, execa@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - 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" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" - integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-template@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz" - integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== - -expect@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" - integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== - dependencies: - "@jest/types" "^27.5.1" - jest-get-type "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - -expect@^29.0.0: - version "29.5.0" - resolved "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz" - integrity sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg== - dependencies: - "@jest/expect-utils" "^29.5.0" - jest-get-type "^29.4.3" - jest-matcher-utils "^29.5.0" - jest-message-util "^29.5.0" - jest-util "^29.5.0" - -express-prom-bundle@^6.3.6, express-prom-bundle@^6.4.1: - version "6.6.0" - resolved "https://registry.npmjs.org/express-prom-bundle/-/express-prom-bundle-6.6.0.tgz" - integrity sha512-tZh2P2p5a8/yxQ5VbRav011Poa4R0mHqdFwn9Swe/obXDe5F0jY9wtRAfNYnqk4LXY7akyvR/nrvAHxQPWUjsQ== - dependencies: - on-finished "^2.3.0" - url-value-parser "^2.0.0" - -express@^4.14.0, express@^4.17.1, express@^4.17.3, express@^4.18.1: - 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" - -ext@^1.1.2: - version "1.7.0" - resolved "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz" - integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== - dependencies: - type "^2.7.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" - integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" - integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@^3.0.0, extend@~3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extendable-error@^0.1.5: - version "0.1.7" - resolved "https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz" - integrity sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg== - -external-editor@^3.0.3, external-editor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extract-zip@^1.6.6: - version "1.7.0" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" - integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== - dependencies: - concat-stream "^1.6.2" - debug "^2.6.9" - mkdirp "^0.5.4" - yauzl "^2.10.0" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" - integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== - -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - -fake-merkle-patricia-tree@^1.0.1: - 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== - dependencies: - checkpoint-store "^1.1.0" - -fast-check@3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/fast-check/-/fast-check-3.1.1.tgz" - integrity sha512-3vtXinVyuUKCKFKYcwXhGE6NtGWkqF8Yh3rvMZNzmwz8EPrgoc/v4pDdLHyLnCyCI5MZpZZkDEwFyXyEONOxpA== - dependencies: - pure-rand "^5.0.1" - -fast-copy@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.0.tgz" - integrity sha512-4HzS+9pQ5Yxtv13Lhs1Z1unMXamBdn5nA4bEi1abYpDNSpSp7ODYQ1KPMF6nTatfEzgH6/zPvXKU1zvHiUjWlA== - -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz" - integrity sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - 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@^1.1.2: - version "1.2.0" - resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - -fast-equals@^2.0.0: - version "2.0.4" - resolved "https://registry.npmjs.org/fast-equals/-/fast-equals-2.0.4.tgz" - integrity sha512-caj/ZmjHljPrZtbzJ3kfH5ia/k4mTJe/qSiXAGzxZWRZgsgDV0cvNaQULqUX8t0/JVlzzEdYOwCN5DmzTxoD4w== - -fast-glob@^3.0.3, fast-glob@^3.2.12, fast-glob@^3.2.7, fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== - 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-parse@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d" - integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== - -fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: - 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@^2.0.6, fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-redact@^3.0.0: - version "3.1.2" - resolved "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz" - integrity sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw== - -fast-safe-stringify@^2.0.6, fast-safe-stringify@^2.0.8, fast-safe-stringify@^2.1.1: - 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-url-parser@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz" - integrity sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ== - dependencies: - punycode "^1.3.2" - -fast-xml-parser@4.2.5: - version "4.2.5" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz#a6747a09296a6cb34f2ae634019bf1738f3b421f" - integrity sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g== - dependencies: - strnum "^1.0.5" - -fastest-levenshtein@^1.0.12: - version "1.0.16" - resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" - integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== - -fastq@^1.6.0: - version "1.15.0" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== - dependencies: - reusify "^1.0.4" - -fault@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz" - integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== - dependencies: - format "^0.2.0" - -faye-websocket@^0.11.3: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -fb-watchman@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" - 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" - -fetch-ponyfill@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz" - integrity sha512-knK9sGskIg2T7OnYLdZ2hZXn0CtDrAIBxYQLpmEf0BqfdWnwmM1weccUl5+4EdA44tzNSFAuxITPbXtPehUB3g== - dependencies: - node-fetch "~1.7.1" - -fetch-retry@^5.0.2: - version "5.0.6" - resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-5.0.6.tgz#17d0bc90423405b7a88b74355bf364acd2a7fa56" - integrity sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ== - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz" - integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== - dependencies: - escape-string-regexp "^1.0.5" - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-loader@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" - integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - -file-system-cache@2.3.0, file-system-cache@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/file-system-cache/-/file-system-cache-2.3.0.tgz#201feaf4c8cd97b9d0d608e96861bb6005f46fe6" - integrity sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ== - dependencies: - fs-extra "11.1.1" - ramda "0.29.0" - -file-uri-to-path@1.0.0: - 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@^1.0.4: - 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" - -filesize@^8.0.6: - version "8.0.7" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" - integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" - integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - 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.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz" - integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== - -finalhandler@1.2.0: - 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" - -find-cache-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.0.0, find-cache-dir@^3.2.0, find-cache-dir@^3.3.1, find-cache-dir@^3.3.2: - 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== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-replace@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz" - integrity sha512-KrUnjzDCD9426YnCP56zGYy/eieTnhtK6Vn++j+JJzmlsWWwEkDnsyVF575spT6HJ6Ow9tlbT3TQTDsa+O4UWA== - dependencies: - array-back "^1.0.4" - test-value "^2.1.0" - -find-replace@^3.0.0: - 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== - dependencies: - array-back "^3.0.1" - -find-root@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz" - integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== - -find-up@3.0.0, find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@5.0.0, find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz" - integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" - integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== - dependencies: - locate-path "^2.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-yarn-workspace-root2@1.2.16: - version "1.2.16" - resolved "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz" - integrity sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA== - dependencies: - micromatch "^4.0.2" - pkg-dir "^4.2.0" - -find-yarn-workspace-root@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz" - integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q== - dependencies: - fs-extra "^4.0.3" - micromatch "^3.1.4" - -find-yarn-workspace-root@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz" - integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== - dependencies: - micromatch "^4.0.2" - -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flat@^4.1.0: - version "4.1.1" - resolved "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz" - integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA== - dependencies: - is-buffer "~2.0.3" - -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -flatstr@^1.0.12: - version "1.0.12" - resolved "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz" - integrity sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw== - -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== - -flow-parser@0.*: - version "0.207.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.207.0.tgz#376975f6b88991bf0ef9496fa3bffd5eb3120046" - integrity sha512-s90OlXqzWj1xc4yUtqD1Gr8pGVx0/5rk9gsqPrOYF1kBAPMH4opkmzdWgQ8aNe3Pckqtwr8DlYGbfE2GnW+zsg== - -flow-stoplight@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/flow-stoplight/-/flow-stoplight-1.0.0.tgz" - integrity sha512-rDjbZUKpN8OYhB0IE/vY/I8UWO/602IIJEU/76Tv4LvYnwHCk0BCsvz4eRr9n+FQcri7L5cyaXOo0+/Kh4HisA== - -fmix@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz" - integrity sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w== - dependencies: - imul "^1.0.0" - -follow-redirects@^1.0.0, follow-redirects@^1.12.1, follow-redirects@^1.14.0: - version "1.15.2" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== - -for-each@^0.3.3, for-each@~0.3.3: - version "0.3.3" - resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" - integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== - -foreach@~2.0.1: - version "2.0.6" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.6.tgz#87bcc8a1a0e74000ff2bf9802110708cfb02eb6e" - integrity sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg== - -foreground-child@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz" - integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^3.0.2" - -foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== - -fork-ts-checker-webpack-plugin@^6.5.0: - version "6.5.3" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz#eda2eff6e22476a2688d10661688c47f611b37f3" - integrity sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ== - dependencies: - "@babel/code-frame" "^7.8.3" - "@types/json-schema" "^7.0.5" - chalk "^4.1.0" - chokidar "^3.4.2" - cosmiconfig "^6.0.0" - deepmerge "^4.2.2" - fs-extra "^9.0.0" - glob "^7.1.6" - memfs "^3.1.2" - minimatch "^3.0.4" - schema-utils "2.7.0" - semver "^7.3.2" - tapable "^1.0.0" - -fork-ts-checker-webpack-plugin@^7.2.8: - version "7.3.0" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.3.0.tgz#a9c984a018493962360d7c7e77a67b44a2d5f3aa" - integrity sha512-IN+XTzusCjR5VgntYFgxbxVx3WraPRnKehBFrf00cMSrtUuW9MsG9dhL6MWpY6MkjC3wVwoujfCDgZZCQwbswA== - dependencies: - "@babel/code-frame" "^7.16.7" - chalk "^4.1.2" - chokidar "^3.5.3" - cosmiconfig "^7.0.1" - deepmerge "^4.2.2" - fs-extra "^10.0.0" - memfs "^3.4.1" - minimatch "^3.0.4" - node-abort-controller "^3.0.1" - schema-utils "^3.1.1" - semver "^7.3.5" - tapable "^2.2.1" - -form-data-encoder@1.7.1: - 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== - -form-data@^2.2.0: - version "2.5.1" - resolved "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz" - integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" - 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.npmjs.org/form-data/-/form-data-2.3.3.tgz" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -format@^0.2.0: - version "0.2.2" - resolved "https://registry.npmjs.org/format/-/format-0.2.2.tgz" - integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== - -formidable@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/formidable/-/formidable-2.1.1.tgz" - integrity sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ== - dependencies: - dezalgo "^1.0.4" - hexoid "^1.0.0" - once "^1.4.0" - qs "^6.11.0" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fp-ts@1.19.3: - version "1.19.3" - resolved "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz" - integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== - -fp-ts@^1.0.0: - version "1.19.5" - resolved "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.5.tgz" - integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== - -fraction.js@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" - integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" - integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -from@^0.1.7: - version "0.1.7" - resolved "https://registry.npmjs.org/from/-/from-0.1.7.tgz" - integrity sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g== - -fromentries@^1.2.0: - version "1.3.2" - resolved "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz" - integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-extra@11.1.1, fs-extra@^11.1.0: - version "11.1.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" - integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^0.30.0: - version "0.30.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz" - integrity sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - -fs-extra@^10.0.0: - version "10.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^4.0.2, fs-extra@^4.0.3: - 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" - -fs-extra@^7.0.0, fs-extra@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^9.0.0, fs-extra@^9.0.1, fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" - 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.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - -fs-minipass@^2.0.0, fs-minipass@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs-monkey@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.4.tgz#ee8c1b53d3fe8bb7e5d2c5c5dfc0168afdd2f747" - integrity sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ== - -fs-readdir-recursive@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz" - integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fs@^0.0.1-security: - version "0.0.1-security" - resolved "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz" - integrity sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w== - -fsevents@^2.3.2, fsevents@~2.3.1, 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== - -fsevents@~2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function.prototype.name@^1.1.5: - 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== - 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, functional-red-black-tree@~1.0.1: - 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@^1.2.2: - version "1.2.3" - resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -fwd-stream@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/fwd-stream/-/fwd-stream-1.0.4.tgz#ed281cabed46feecf921ee32dc4c50b372ac7cfa" - integrity sha512-q2qaK2B38W07wfPSQDKMiKOD5Nzv2XyuvQlrmh1q0pxyHNanKHq8lwQ6n9zHucAwA5EbzRJKEgds2orn88rYTg== - dependencies: - readable-stream "~1.0.26-4" - -ganache-core@^2.13.2: - version "2.13.2" - resolved "https://registry.npmjs.org/ganache-core/-/ganache-core-2.13.2.tgz" - integrity sha512-tIF5cR+ANQz0+3pHWxHjIwHqFXcVo0Mb+kcsNhglNFALcYo49aQpnS9dqHartqPfMFjiHh/qFoD3mYK0d/qGgw== - dependencies: - abstract-leveldown "3.0.0" - async "2.6.2" - bip39 "2.5.0" - cachedown "1.0.0" - clone "2.1.2" - debug "3.2.6" - encoding-down "5.0.4" - eth-sig-util "3.0.0" - ethereumjs-abi "0.6.8" - ethereumjs-account "3.0.0" - ethereumjs-block "2.2.2" - ethereumjs-common "1.5.0" - ethereumjs-tx "2.1.2" - ethereumjs-util "6.2.1" - ethereumjs-vm "4.2.0" - heap "0.2.6" - keccak "3.0.1" - level-sublevel "6.6.4" - levelup "3.1.1" - lodash "4.17.20" - lru-cache "5.1.1" - merkle-patricia-tree "3.0.0" - patch-package "6.2.2" - seedrandom "3.0.1" - source-map-support "0.5.12" - tmp "0.1.0" - web3-provider-engine "14.2.1" - websocket "1.0.32" - optionalDependencies: - ethereumjs-wallet "0.6.5" - web3 "1.2.11" - -gauge@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" - integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.2" - console-control-strings "^1.0.0" - has-unicode "^2.0.1" - object-assign "^4.1.1" - signal-exit "^3.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.2" - -gauge@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" - integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.3" - console-control-strings "^1.1.0" - has-unicode "^2.0.1" - signal-exit "^3.0.7" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.5" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz" - integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -gensync@^1.0.0-beta.2: - 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@^1.0.1: - version "1.0.3" - resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - -get-caller-file@^2.0.1, get-caller-file@^2.0.5: - 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-func-name@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz" - integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz" - integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.3" - -get-intrinsic@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz" - integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.3" - -get-npm-tarball-url@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/get-npm-tarball-url/-/get-npm-tarball-url-2.0.3.tgz#67dff908d699e9e2182530ae6e939a93e5f8dfdb" - integrity sha512-R/PW6RqyaBQNWYaSyfrh54/qtcnOp22FHCCiRhSSZj0FP3KQWCsxxt0DzIdVTbwTqe9CtQfvl/FPD4UIPt4pqw== - -get-own-enumerable-property-symbols@^3.0.0: - 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@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-pkg-repo@^4.0.0: - version "4.2.1" - resolved "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz" - integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== - dependencies: - "@hutson/parse-repository-url" "^3.0.0" - hosted-git-info "^4.0.0" - through2 "^2.0.0" - yargs "^16.2.0" - -get-port@^3.1.0: - version "3.2.0" - resolved "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz" - integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== - -get-port@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz" - integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz" - integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== - -get-stream@^4.0.0, get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" - 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.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" - integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" - integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== - dependencies: - assert-plus "^1.0.0" - -ghost-testrpc@^0.0.2: - version "0.0.2" - resolved "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz" - integrity sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ== - dependencies: - chalk "^2.4.2" - node-emoji "^1.10.0" - -giget@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/giget/-/giget-1.1.2.tgz#f99a49cb0ff85479c8c3612cdc7ca27f2066e818" - integrity sha512-HsLoS07HiQ5oqvObOI+Qb2tyZH4Gj5nYGfF9qQcZNrPw+uEFhdXtgJr01aO2pWadGHucajYDLxxbtQkm97ON2A== - dependencies: - colorette "^2.0.19" - defu "^6.1.2" - https-proxy-agent "^5.0.1" - mri "^1.2.0" - node-fetch-native "^1.0.2" - pathe "^1.1.0" - tar "^6.1.13" - -git-raw-commits@^2.0.8: - version "2.0.11" - resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz" - integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== - dependencies: - dargs "^7.0.0" - lodash "^4.17.15" - meow "^8.0.0" - split2 "^3.0.0" - through2 "^4.0.0" - -git-remote-origin-url@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz" - integrity sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw== - dependencies: - gitconfiglocal "^1.0.0" - pify "^2.3.0" - -git-semver-tags@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz" - integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA== - dependencies: - meow "^8.0.0" - semver "^6.0.0" - -git-up@^4.0.0: - version "4.0.5" - resolved "https://registry.npmjs.org/git-up/-/git-up-4.0.5.tgz" - integrity sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA== - dependencies: - is-ssh "^1.3.0" - parse-url "^6.0.0" - -git-url-parse@^11.4.4: - version "11.6.0" - resolved "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.6.0.tgz" - integrity sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g== - dependencies: - git-up "^4.0.0" - -gitconfiglocal@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz" - integrity sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ== - dependencies: - ini "^1.3.2" - -github-from-package@0.0.0: - version "0.0.0" - resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz" - integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== - -github-slugger@^1.0.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.5.0.tgz#17891bbc73232051474d68bd867a34625c955f7d" - integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== - -glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob-promise@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-6.0.2.tgz#7c7f2a223e3aaa8f7bd7ff5f24d0ab2352724b31" - integrity sha512-Ni2aDyD1ekD6x8/+K4hDriRDbzzfuK4yKpqSymJ4P7IxbtARiOOuU+k40kbHM0sLIlbf1Qh0qdMkAHMZYE6XJQ== - dependencies: - "@types/glob" "^8.0.0" - -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - -glob@7.1.3: - version "7.1.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@7.1.6: - version "7.1.6" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@7.1.7: - version "7.1.7" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" - 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.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - 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@^10.0.0: - version "10.3.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.3.tgz#8360a4ffdd6ed90df84aa8d52f21f452e86a123b" - integrity sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.0.3" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" - -glob@^5.0.15: - version "5.0.15" - resolved "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz" - integrity sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA== - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.2.3: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - 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" - -glob@^8.0.0, glob@^8.0.1, glob@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -global@~4.4.0: - version "4.4.0" - resolved "https://registry.npmjs.org/global/-/global-4.4.0.tgz" - integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== - dependencies: - min-document "^2.19.0" - process "^0.11.10" - -globals@^11.1.0, globals@^11.7.0: - version "11.12.0" - resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0, globals@^13.6.0, globals@^13.9.0: - version "13.19.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz" - integrity sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ== - dependencies: - type-fest "^0.20.2" - -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - -globalthis@^1.0.3: - 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" - -globby@12.1.0: - version "12.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-12.1.0.tgz" - integrity sha512-YULDaNwsoUZkRy9TWSY/M7Obh0abamTKoKzTfOI3uU+hfpX2FZqOq8LFDxsjYheF1RH7ITdArgbQnsNBFgcdBA== - dependencies: - array-union "^3.0.1" - dir-glob "^3.0.1" - fast-glob "^3.2.7" - ignore "^5.1.9" - merge2 "^1.4.1" - slash "^4.0.0" - -globby@^10.0.1: - version "10.0.2" - resolved "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz" - integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.0.3" - glob "^7.1.3" - ignore "^5.1.1" - merge2 "^1.2.3" - slash "^3.0.0" - -globby@^11.0.0, globby@^11.0.1, globby@^11.0.2, globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: - version "11.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -got@12.1.0: - 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" - -got@9.6.0: - version "9.6.0" - resolved "https://registry.npmjs.org/got/-/got-9.6.0.tgz" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - 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" - -got@^11.8.5: - 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" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -graceful-fs@^4.2.6: - 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== - -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -graphql-tag@^2.12.6: - version "2.12.6" - resolved "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz" - integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== - dependencies: - tslib "^2.1.0" - -graphql@^16.3.0: - version "16.6.0" - resolved "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz" - integrity sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw== - -growl@1.10.5: - version "1.10.5" - resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== - -gunzip-maybe@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz#b913564ae3be0eda6f3de36464837a9cd94b98ac" - integrity sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw== - dependencies: - browserify-zlib "^0.1.4" - is-deflate "^1.0.0" - is-gzip "^1.0.0" - peek-stream "^1.1.0" - pumpify "^1.3.3" - through2 "^2.0.3" - -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" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -handlebars@^4.0.1, handlebars@^4.7.7: - version "4.7.7" - resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" - integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -hard-rejection@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz" - integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== - -hardhat-deploy-ethers@^0.3.0-beta.11: - version "0.3.0-beta.13" - resolved "https://registry.npmjs.org/hardhat-deploy-ethers/-/hardhat-deploy-ethers-0.3.0-beta.13.tgz" - integrity sha512-PdWVcKB9coqWV1L7JTpfXRCI91Cgwsm7KLmBcwZ8f0COSm1xtABHZTyz3fvF6p42cTnz1VM0QnfDvMFlIRkSNw== - -hardhat-deploy@^0.11.12: - version "0.11.22" - resolved "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.11.22.tgz" - integrity sha512-ZhHVNB7Jo2l8Is+KIAk9F8Q3d7pptyiX+nsNbIFXztCz81kaP+6kxNODRBqRCy7SOD3It4+iKCL6tWsPAA/jVQ== - dependencies: - "@types/qs" "^6.9.7" - axios "^0.21.1" - chalk "^4.1.2" - chokidar "^3.5.2" - debug "^4.3.2" - enquirer "^2.3.6" - ethers "^5.5.3" - form-data "^4.0.0" - fs-extra "^10.0.0" - match-all "^1.2.6" - murmur-128 "^0.2.1" - qs "^6.9.4" - zksync-web3 "^0.8.1" - -hardhat-deploy@^0.7.10: - version "0.7.11" - resolved "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.7.11.tgz" - integrity sha512-ONLH3NH8Biuhky44KRFyaINVHM8JI4Ihy1TpntIRZUpIFHlz9h3gieq46H7iwdp6z3CqMsOCChF0riUF3CFpmQ== - dependencies: - "@ethersproject/abi" "^5.0.0" - "@ethersproject/abstract-signer" "^5.0.0" - "@ethersproject/address" "^5.0.0" - "@ethersproject/bignumber" "^5.0.0" - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/contracts" "^5.0.0" - "@ethersproject/providers" "^5.0.0" - "@ethersproject/solidity" "^5.0.0" - "@ethersproject/transactions" "^5.0.0" - "@ethersproject/wallet" "^5.0.0" - "@types/qs" "^6.9.4" - axios "^0.21.1" - chalk "^4.1.0" - chokidar "^3.4.0" - debug "^4.1.1" - form-data "^3.0.0" - fs-extra "^9.0.0" - match-all "^1.2.6" - murmur-128 "^0.2.1" - qs "^6.9.4" - -hardhat-deploy@^0.9.3: - version "0.9.29" - resolved "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.9.29.tgz" - integrity sha512-8tIGszPFmOaXtyloCbASiZPvoAgLNGGL/Ubys3YW/oj4dvoPa8G6YDyaOCdsAhsENZ+QgR280NFSG9JdN7SU9Q== - dependencies: - "@ethersproject/abi" "^5.4.0" - "@ethersproject/abstract-signer" "^5.4.1" - "@ethersproject/address" "^5.4.0" - "@ethersproject/bignumber" "^5.4.1" - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/constants" "^5.4.0" - "@ethersproject/contracts" "^5.4.1" - "@ethersproject/providers" "^5.4.4" - "@ethersproject/solidity" "^5.4.0" - "@ethersproject/transactions" "^5.4.0" - "@ethersproject/wallet" "^5.4.0" - "@types/qs" "^6.9.7" - axios "^0.21.1" - chalk "^4.1.2" - chokidar "^3.5.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" debug "^4.3.2" - enquirer "^2.3.6" - form-data "^4.0.0" - fs-extra "^10.0.0" - match-all "^1.2.6" - murmur-128 "^0.2.1" - qs "^6.9.4" - -hardhat-gas-reporter@^1.0.4, hardhat-gas-reporter@^1.0.8: - version "1.0.9" - resolved "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz" - integrity sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg== - dependencies: - array-uniq "1.0.3" - eth-gas-reporter "^0.2.25" - sha1 "^1.1.1" - -hardhat-output-validator@^0.1.18: - version "0.1.19" - resolved "https://registry.npmjs.org/hardhat-output-validator/-/hardhat-output-validator-0.1.19.tgz" - integrity sha512-rIDdiHHt2WEMBRnbOa95xpze2t88KSfWh2gI9LCbdrMuSmsLiO2qzgB4cZ6O7Tvjz4jsBgxD9Dcr4uNP8pJ8Pw== - dependencies: - chalk "^4.1.2" - -hardhat-watcher@^2.1.1: - version "2.5.0" - resolved "https://registry.npmjs.org/hardhat-watcher/-/hardhat-watcher-2.5.0.tgz" - integrity sha512-Su2qcSMIo2YO2PrmJ0/tdkf+6pSt8zf9+4URR5edMVti6+ShI8T3xhPrwugdyTOFuyj8lKHrcTZNKUFYowYiyA== - dependencies: - chokidar "^3.5.3" - -hardhat@^2.12.5: - version "2.12.5" - resolved "https://registry.npmjs.org/hardhat/-/hardhat-2.12.5.tgz" - integrity sha512-f/t7+hLlhsnQZ6LDXyV+8rHGRZFZY1sgFvgrwr9fBjMdGp1Bu6hHq1KXS4/VFZfZcVdL1DAWWEkryinZhqce+A== - dependencies: - "@ethersproject/abi" "^5.1.2" - "@metamask/eth-sig-util" "^4.0.0" - "@nomicfoundation/ethereumjs-block" "^4.0.0" - "@nomicfoundation/ethereumjs-blockchain" "^6.0.0" - "@nomicfoundation/ethereumjs-common" "^3.0.0" - "@nomicfoundation/ethereumjs-evm" "^1.0.0" - "@nomicfoundation/ethereumjs-rlp" "^4.0.0" - "@nomicfoundation/ethereumjs-statemanager" "^1.0.0" - "@nomicfoundation/ethereumjs-trie" "^5.0.0" - "@nomicfoundation/ethereumjs-tx" "^4.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" - "@nomicfoundation/ethereumjs-vm" "^6.0.0" - "@nomicfoundation/solidity-analyzer" "^0.1.0" - "@sentry/node" "^5.18.1" - "@types/bn.js" "^5.1.0" - "@types/lru-cache" "^5.1.0" - abort-controller "^3.0.0" - adm-zip "^0.4.16" - aggregate-error "^3.0.0" - ansi-escapes "^4.3.0" - chalk "^2.4.2" - chokidar "^3.4.0" - ci-info "^2.0.0" - debug "^4.1.1" - enquirer "^2.3.0" - env-paths "^2.2.0" - ethereum-cryptography "^1.0.3" - ethereumjs-abi "^0.6.8" - find-up "^2.1.0" - fp-ts "1.19.3" - fs-extra "^7.0.1" - glob "7.2.0" - immutable "^4.0.0-rc.12" - io-ts "1.10.4" - keccak "^3.0.2" - lodash "^4.17.11" - mnemonist "^0.38.0" - mocha "^10.0.0" - p-map "^4.0.0" - qs "^6.7.0" - raw-body "^2.4.1" - resolve "1.17.0" - semver "^6.3.0" - solc "0.7.3" - source-map-support "^0.5.13" - stacktrace-parser "^0.1.10" - tsort "0.0.1" - undici "^5.4.0" - uuid "^8.3.2" - ws "^7.4.6" - -harmony-reflect@^1.4.6: - version "1.6.2" - resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz" - integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== - dependencies: - ansi-regex "^2.0.0" - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" - integrity sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA== - -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz" - integrity sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - 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@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== - dependencies: - get-intrinsic "^1.1.1" - -has-proto@^1.0.1: - 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@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-unicode@^2.0.0, has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" - integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" - integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" - integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" - integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.3, has@~1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" - 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.3: - version "1.1.3" - resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz" - integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.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.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" + 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" -hasha@^5.0.0: - version "5.2.2" - resolved "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz" - integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== +espree@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz" + integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== dependencies: - is-stream "^2.0.0" - type-fest "^0.8.0" - -he@1.2.0, he@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + acorn "^6.0.7" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" -header-case@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz" - integrity sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ== +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== dependencies: - no-case "^2.2.0" - upper-case "^1.1.3" - -heap@0.2.6: - version "0.2.6" - resolved "https://registry.npmjs.org/heap/-/heap-0.2.6.tgz" - integrity sha512-MzzWcnfB1e4EG2vHi3dXHoBupmuXNZzx6pY6HldVS55JKKBoq3xOyzfSaZRkJp37HIhEYC78knabHff3zc4dQQ== + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" -help-me@^4.0.1: - version "4.2.0" - resolved "https://registry.npmjs.org/help-me/-/help-me-4.2.0.tgz" - integrity sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA== +espree@^9.4.0: + version "9.4.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz" + integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== dependencies: - glob "^8.0.0" - readable-stream "^3.6.0" - -hexoid@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz" - integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" -highlight.js@^10.4.1, highlight.js@^10.7.1: - version "10.7.3" - resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz" - integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== +esprima@2.7.x, esprima@^2.7.1: + version "2.7.3" + resolved "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz" + integrity sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A== -highlightjs-solidity@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/highlightjs-solidity/-/highlightjs-solidity-2.0.5.tgz" - integrity sha512-ReXxQSGQkODMUgHcWzVSnfDCDrL2HshOYgw3OlIYmfHeRzUPkfJTUIp95pK4CmbiNG2eMTOmNLpfCz9Zq7Cwmg== +esprima@^4.0.0, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== +esquery@^1.0.1, esquery@^1.3.1, esquery@^1.4.0, esquery@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" + estraverse "^5.1.0" -hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: - version "3.3.2" - resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== +esrecurse@^4.1.0, esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: - react-is "^16.7.0" + estraverse "^5.2.0" -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz" - integrity sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz" + integrity sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA== -hoopy@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz" - integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: - version "2.8.9" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== -hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== - dependencies: - lru-cache "^6.0.0" +estree-walker@^2.0.2: + 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== -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" - integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -html-dom-parser@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/html-dom-parser/-/html-dom-parser-4.0.0.tgz#dc382fbbc9306f8c9b5aae4e3f2822e113a48709" - integrity sha512-TUa3wIwi80f5NF8CVWzkopBVqVAtlawUzJoLwVLHns0XSJGynss4jiY0mTWpiDOsuyw+afP+ujjMgRh9CoZcXw== - dependencies: - domhandler "5.0.3" - htmlparser2 "9.0.0" +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== +eth-block-tracker@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-3.0.1.tgz" + integrity sha512-WUVxWLuhMmsfenfZvFO5sbl1qFY2IqUlw/FPVmjjdElpqLsZtSG+wPe9Dz7W/sB6e80HgFKknOmKk2eNlznHug== dependencies: - whatwg-encoding "^1.0.5" + eth-query "^2.1.0" + ethereumjs-tx "^1.3.3" + ethereumjs-util "^5.1.3" + ethjs-util "^0.1.3" + json-rpc-engine "^3.6.0" + pify "^2.3.0" + tape "^4.6.3" -html-entities@^2.1.0, html-entities@^2.3.2: - version "2.3.5" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.5.tgz#9f117bf6a5962efc31e094f6c6dad3cf3b95e33e" - integrity sha512-72TJlcMkYsEJASa/3HnX7VT59htM7iSHbH59NSZbtc+22Ap0Txnlx91sfeB+/A7wNZg7UxtZdhAW4y+/jimrdg== +eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: + 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" -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== +eth-gas-reporter@^0.2.25: + version "0.2.25" + resolved "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.25.tgz" + integrity sha512-1fRgyE4xUB8SoqLgN3eDfpDfwEfRxh2Sz1b7wzFbyQA+9TekMmvSjjoRu9SKcSVyK+vLkLIsVbJDsTWjw195OQ== + dependencies: + "@ethersproject/abi" "^5.0.0-beta.146" + "@solidity-parser/parser" "^0.14.0" + cli-table3 "^0.5.0" + colors "1.4.0" + ethereum-cryptography "^1.0.3" + ethers "^4.0.40" + fs-readdir-recursive "^1.1.0" + lodash "^4.17.14" + markdown-table "^1.1.3" + mocha "^7.1.1" + req-cwd "^2.0.0" + request "^2.88.0" + request-promise-native "^1.0.5" + sha1 "^1.1.1" + sync-request "^6.0.0" -html-minifier-terser@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" - integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== - dependencies: - camel-case "^4.1.2" - clean-css "^5.2.2" - commander "^8.3.0" - he "^1.2.0" - param-case "^3.0.4" - relateurl "^0.2.7" - terser "^5.10.0" - -html-react-parser@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/html-react-parser/-/html-react-parser-4.0.0.tgz#a727be4539ad85b133a5071f97b8c2f835a55bdf" - integrity sha512-OzlOavs9lLyBxoRiXbXfODIX/nSShukMtdx3+WSMjon/FF1gJZRq0rBELoR5OswfbN56C0oKpAii7i3yzO/uVQ== +eth-json-rpc-infura@^3.1.0: + version "3.2.1" + resolved "https://registry.npmjs.org/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.1.tgz" + integrity sha512-W7zR4DZvyTn23Bxc0EWsq4XGDdD63+XPUCEhV2zQvQGavDVC4ZpFDK4k99qN7bd7/fjj37+rxmuBOBeIqCA5Mw== dependencies: - domhandler "5.0.3" - html-dom-parser "4.0.0" - react-property "2.0.0" - style-to-js "1.1.3" + cross-fetch "^2.1.1" + eth-json-rpc-middleware "^1.5.0" + json-rpc-engine "^3.4.0" + json-rpc-error "^2.0.0" -html-tags@^3.1.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce" - integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== +eth-json-rpc-middleware@^1.5.0: + version "1.6.0" + resolved "https://registry.npmjs.org/eth-json-rpc-middleware/-/eth-json-rpc-middleware-1.6.0.tgz" + integrity sha512-tDVCTlrUvdqHKqivYMjtFZsdD7TtpNLBCfKAcOpaVs7orBMS/A8HWro6dIzNtTZIR05FAbJ3bioFOnZpuCew9Q== + dependencies: + async "^2.5.0" + eth-query "^2.1.2" + eth-tx-summary "^3.1.2" + ethereumjs-block "^1.6.0" + ethereumjs-tx "^1.3.3" + ethereumjs-util "^5.1.2" + ethereumjs-vm "^2.1.0" + fetch-ponyfill "^4.0.0" + json-rpc-engine "^3.6.0" + json-rpc-error "^2.0.0" + json-stable-stringify "^1.0.1" + promise-to-callback "^1.0.0" + tape "^4.6.3" -html-webpack-plugin@^5.5.0: - version "5.5.1" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.1.tgz#826838e31b427f5f7f30971f8d8fa2422dfa6763" - integrity sha512-cTUzZ1+NqjGEKjmVgZKLMdiFg3m9MdRXkZW2OEe69WYVi5ONLMmlnSZdXzGGMOq0C8jGDrL6EWyEDDUioHO/pA== +eth-lib@0.2.8: + version "0.2.8" + resolved "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz" + integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== dependencies: - "@types/html-minifier-terser" "^6.0.0" - html-minifier-terser "^6.0.2" - lodash "^4.17.21" - pretty-error "^4.0.0" - tapable "^2.0.0" + bn.js "^4.11.6" + elliptic "^6.4.0" + xhr-request-promise "^0.1.2" -htmlparser2@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-9.0.0.tgz#e431142b7eeb1d91672742dea48af8ac7140cddb" - integrity sha512-uxbSI98wmFT/G4P2zXx4OVx04qWUmyFPrD2/CNepa2Zo3GPNaCaaxElDgwUrwYWkK1nr9fft0Ya8dws8coDLLQ== +eth-lib@^0.1.26: + 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: - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.1.0" - entities "^4.5.0" + 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" -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== +eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz" + integrity sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA== dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" + json-rpc-random-id "^1.0.0" + xtend "^4.0.1" -htmlparser2@^7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz" - integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog== +eth-sig-util@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-3.0.0.tgz" + integrity sha512-4eFkMOhpGbTxBQ3AMzVf0haUX2uTur7DpWiHzWyTURa28BVJJtOkcb9Ok5TV0YvEPG61DODPW7ZUATbJTslioQ== dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.2" - domutils "^2.8.0" - entities "^3.0.1" + buffer "^5.2.1" + elliptic "^6.4.0" + ethereumjs-abi "0.6.5" + ethereumjs-util "^5.1.1" + tweetnacl "^1.0.0" + tweetnacl-util "^0.15.0" -htmlparser2@^8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz" - integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA== +eth-sig-util@^1.4.2: + 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== dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.2" - domutils "^3.0.1" - entities "^4.3.0" + ethereumjs-abi "git+https://github.com/ethereumjs/ethereumjs-abi.git" + ethereumjs-util "^5.1.1" -http-basic@^8.1.1: - version "8.1.3" - resolved "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz" - integrity sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw== +eth-sig-util@^2.5.2: + version "2.5.4" + resolved "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-2.5.4.tgz" + integrity sha512-aCMBwp8q/4wrW4QLsF/HYBOSA7TpLKmkVwP3pYQNkEEseW2Rr8Z5Uxc9/h6HX+OG3tuHo+2bINVSihIeBfym6A== dependencies: - caseless "^0.12.0" - concat-stream "^1.6.2" - http-response-object "^3.0.1" - parse-cache-control "^1.0.1" + ethereumjs-abi "0.6.8" + ethereumjs-util "^5.1.1" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.0" -http-browserify@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/http-browserify/-/http-browserify-1.7.0.tgz#33795ade72df88acfbfd36773cefeda764735b20" - integrity sha512-Irf/LJXmE3cBzU1eaR4+NEX6bmVLqt1wkmDiA7kBwH7zmb0D8kBAXsDmQ88hhj/qv9iEZKlyGx/hrMcFi8sOHw== +eth-sig-util@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-3.0.1.tgz" + integrity sha512-0Us50HiGGvZgjtWTyAI/+qTzYPMLy5Q451D0Xy68bxq1QMWdoOddDwGvsqcFT27uohKgalM9z/yxplyt+mY2iQ== dependencies: - Base64 "~0.2.0" - inherits "~2.0.1" - -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.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== + ethereumjs-abi "^0.6.8" + ethereumjs-util "^5.1.1" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.0" -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" - integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== +eth-tx-summary@^3.1.2: + version "3.2.4" + resolved "https://registry.npmjs.org/eth-tx-summary/-/eth-tx-summary-3.2.4.tgz" + integrity sha512-NtlDnaVZah146Rm8HMRUNMgIwG/ED4jiqk0TME9zFheMl1jOp6jL1m0NKGjJwehXQ6ZKCPr16MTr+qspKpEXNg== + dependencies: + async "^2.1.2" + clone "^2.0.0" + concat-stream "^1.5.1" + end-of-stream "^1.1.0" + eth-query "^2.0.2" + ethereumjs-block "^1.4.1" + ethereumjs-tx "^1.1.1" + ethereumjs-util "^5.0.1" + ethereumjs-vm "^2.6.0" + through2 "^2.0.3" -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== +ethashjs@~0.0.7: + version "0.0.8" + resolved "https://registry.npmjs.org/ethashjs/-/ethashjs-0.0.8.tgz" + integrity sha512-/MSbf/r2/Ld8o0l15AymjOTlPqpN8Cr4ByUEA9GtR4x0yAh3TdtDzEg29zMjXCNPI7u6E5fOQdj/Cf9Tc7oVNw== dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" + async "^2.1.2" + buffer-xor "^2.0.1" + ethereumjs-util "^7.0.2" + miller-rabin "^4.0.0" -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== +ethereum-bloom-filters@^1.0.6: + version "1.0.10" + resolved "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz" + integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" + js-sha3 "^0.8.0" -http-https@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz" - integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg== +ethereum-common@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz" + integrity sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA== -http-parser-js@>=0.5.1: - version "0.5.8" - resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" - integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== +ethereum-common@^0.0.18: + version "0.0.18" + resolved "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz" + integrity sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ== -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== +ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" + "@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" -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== +ethereum-cryptography@^1.0.3: + version "1.1.2" + resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz" + integrity sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ== dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" + "@noble/hashes" "1.1.2" + "@noble/secp256k1" "1.6.3" + "@scure/bip32" "1.1.0" + "@scure/bip39" "1.1.0" -http-proxy-middleware@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" - integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== +ethereum-cryptography@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz#18fa7108622e56481157a5cb7c01c0c6a672eb67" + integrity sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug== dependencies: - "@types/http-proxy" "^1.17.8" - http-proxy "^1.18.1" - is-glob "^4.0.1" - is-plain-obj "^3.0.0" - micromatch "^4.0.2" + "@noble/curves" "1.1.0" + "@noble/hashes" "1.3.1" + "@scure/bip32" "1.3.1" + "@scure/bip39" "1.2.1" -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== +ethereum-waffle@^3.3.0, ethereum-waffle@^3.4.0: + version "3.4.4" + resolved "https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.4.4.tgz" + integrity sha512-PA9+jCjw4WC3Oc5ocSMBj5sXvueWQeAbvCA+hUlb6oFgwwKyq5ka3bWQ7QZcjzIX+TdFkxP4IbFmoY2D8Dkj9Q== dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" + "@ethereum-waffle/chai" "^3.4.4" + "@ethereum-waffle/compiler" "^3.4.4" + "@ethereum-waffle/mock-contract" "^3.4.4" + "@ethereum-waffle/provider" "^3.4.4" + ethers "^5.0.1" -http-response-object@^3.0.1: - version "3.0.2" - resolved "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz" - integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== +ethereumjs-abi@0.6.5: + version "0.6.5" + resolved "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz" + integrity sha512-rCjJZ/AE96c/AAZc6O3kaog4FhOsAViaysBxqJNy2+LHP0ttH0zkZ7nXdVHOAyt6lFwLO0nlCwWszysG/ao1+g== dependencies: - "@types/node" "^10.0.3" + bn.js "^4.10.0" + ethereumjs-util "^4.3.0" -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" - integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== +ethereumjs-abi@0.6.8, ethereumjs-abi@^0.6.8: + version "0.6.8" + resolved "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz" + integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" + bn.js "^4.11.8" + ethereumjs-util "^6.0.0" -http2-wrapper@^1.0.0-beta.5.2: - version "1.0.3" - resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz" - integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== +"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: - quick-lru "^5.1.1" - resolve-alpn "^1.0.0" + bn.js "^4.11.8" + ethereumjs-util "^6.0.0" -http2-wrapper@^2.1.10: - version "2.2.0" - resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz" - integrity sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ== +ethereumjs-account@3.0.0, ethereumjs-account@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz" + integrity sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA== dependencies: - quick-lru "^5.1.1" - resolve-alpn "^1.2.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" - integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== + ethereumjs-util "^6.0.0" + rlp "^2.2.1" + safe-buffer "^5.1.1" -https-proxy-agent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" - integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg== +ethereumjs-account@^2.0.3: + version "2.0.5" + resolved "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz" + integrity sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA== dependencies: - agent-base "5" - debug "4" + ethereumjs-util "^5.0.0" + rlp "^2.0.0" + safe-buffer "^5.1.1" -https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: - 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== +ethereumjs-block@2.2.2, ethereumjs-block@^2.2.2, ethereumjs-block@~2.2.0, ethereumjs-block@~2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz" + integrity sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg== dependencies: - agent-base "6" - debug "4" - -human-id@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/human-id/-/human-id-1.0.2.tgz" - integrity sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -human-standard-token-abi@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/human-standard-token-abi/-/human-standard-token-abi-2.0.0.tgz" - integrity sha512-m1f5DiIvqaNmpgphNqx2OziyTCj4Lvmmk28uMSxGWrOc9/lMpAKH8UcMPhvb13DMNZPzxn07WYFhxOGKuPLryg== + 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" -humanize-ms@^1.2.1: - 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== +ethereumjs-block@^1.2.2, ethereumjs-block@^1.4.1, ethereumjs-block@^1.6.0: + version "1.7.1" + resolved "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz" + 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-blockchain@^4.0.3: + version "4.0.4" + resolved "https://registry.npmjs.org/ethereumjs-blockchain/-/ethereumjs-blockchain-4.0.4.tgz" + integrity sha512-zCxaRMUOzzjvX78DTGiKjA+4h2/sF0OYL1QuPux0DHpyq8XiNoF5GYHtb++GUxVlMsMfZV7AVyzbtgcRdIcEPQ== dependencies: - ms "^2.0.0" + async "^2.6.1" + ethashjs "~0.0.7" + ethereumjs-block "~2.2.2" + ethereumjs-common "^1.5.0" + ethereumjs-util "^6.1.0" + flow-stoplight "^1.0.0" + level-mem "^3.0.1" + lru-cache "^5.1.1" + rlp "^2.2.2" + semaphore "^1.1.0" -husky@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/husky/-/husky-6.0.0.tgz" - integrity sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ== +ethereumjs-common@1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz" + integrity sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ== -hyphenate-style-name@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz" - integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== +ethereumjs-common@^1.1.0, ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: + version "1.5.2" + resolved "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz" + integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== -iconv-lite@0.4.24, iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== +ethereumjs-tx@2.1.2, ethereumjs-tx@^2.1.1, ethereumjs-tx@^2.1.2: + 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== dependencies: - safer-buffer ">= 2.1.2 < 3" + ethereumjs-common "^1.5.0" + ethereumjs-util "^6.0.0" -iconv-lite@^0.6.2, iconv-lite@^0.6.3: - version "0.6.3" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== +ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3: + version "1.3.7" + resolved "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz" + integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" + ethereum-common "^0.0.18" + ethereumjs-util "^5.0.0" -icss-utils@^4.0.0, icss-utils@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" - integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== +ethereumjs-util@6.2.1, ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0, ethereumjs-util@^6.2.1: + version "6.2.1" + resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz" + integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== dependencies: - postcss "^7.0.14" - -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-wrapper@^1.5.0: - version "1.7.2" - resolved "https://registry.yarnpkg.com/idb-wrapper/-/idb-wrapper-1.7.2.tgz#8251afd5e77fe95568b1c16152eb44b396767ea2" - integrity sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg== - -idb@^7.0.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b" - integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== + "@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" -identity-obj-proxy@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" - integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== +ethereumjs-util@^4.3.0: + version "4.5.1" + resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-4.5.1.tgz" + integrity sha512-WrckOZ7uBnei4+AKimpuF1B3Fv25OmoRgmYCpGsP7u8PFxXAmAgiJSYT2kRWnt6fVIlKaQlZvuwXp7PIrmn3/w== dependencies: - harmony-reflect "^1.4.6" + bn.js "^4.8.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + rlp "^2.0.0" -idna-uts46-hx@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz" - integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== +ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.3, ethereumjs-util@^5.1.5, ethereumjs-util@^5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz" + integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ== dependencies: - punycode "2.1.0" - -ieee754@^1.1.13, ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + 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" -ignore-walk@^3.0.3: - version "3.0.4" - resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz" - integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== +ethereumjs-util@^7.0.10, ethereumjs-util@^7.0.2, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: + version "7.1.5" + resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== dependencies: - minimatch "^3.0.4" + "@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" -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ethereumjs-vm@4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-4.2.0.tgz" + integrity sha512-X6qqZbsY33p5FTuZqCnQ4+lo957iUJMM6Mpa6bL4UW0dxM6WmDSHuI4j/zOp1E2TDKImBGCJA9QPfc08PaNubA== + dependencies: + async "^2.1.2" + async-eventemitter "^0.2.2" + core-js-pure "^3.0.1" + ethereumjs-account "^3.0.0" + ethereumjs-block "^2.2.2" + ethereumjs-blockchain "^4.0.3" + ethereumjs-common "^1.5.0" + ethereumjs-tx "^2.1.2" + ethereumjs-util "^6.2.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" + util.promisify "^1.0.0" -ignore@^5.1.1, ignore@^5.1.8, ignore@^5.1.9, ignore@^5.2.0: - version "5.2.4" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== +ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.6.0: + 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== + 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" -immediate@^3.2.3: - version "3.3.0" - resolved "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz" - integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== +ethereumjs-wallet@0.6.5: + version "0.6.5" + resolved "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-0.6.5.tgz" + integrity sha512-MDwjwB9VQVnpp/Dc1XzA6J1a3wgHQ4hSvA1uWNatdpOrtCbPVuQSKSyRnjLvS0a+KKMw2pvQ9Ybqpb3+eW8oNA== + dependencies: + aes-js "^3.1.1" + bs58check "^2.1.2" + ethereum-cryptography "^0.1.3" + ethereumjs-util "^6.0.0" + randombytes "^2.0.6" + safe-buffer "^5.1.2" + scryptsy "^1.2.1" + utf8 "^3.0.0" + uuid "^3.3.2" -immediate@~3.2.3: - version "3.2.3" - resolved "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz" - integrity sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg== +ethereumjs-wallet@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-1.0.2.tgz" + integrity sha512-CCWV4RESJgRdHIvFciVQFnCHfqyhXWchTPlkfp28Qc53ufs+doi5I/cV2+xeK9+qEo25XCWfP9MiL+WEPAZfdA== + dependencies: + aes-js "^3.1.2" + bs58check "^2.1.2" + ethereum-cryptography "^0.1.3" + ethereumjs-util "^7.1.2" + randombytes "^2.1.0" + scrypt-js "^3.0.1" + utf8 "^3.0.0" + uuid "^8.3.2" -immer@^9.0.7: - version "9.0.21" - resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" - integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== +ethers@^4.0.32, ethers@^4.0.40: + version "4.0.49" + resolved "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz" + integrity sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg== + dependencies: + aes-js "3.0.0" + bn.js "^4.11.9" + elliptic "6.5.4" + hash.js "1.1.3" + js-sha3 "0.5.7" + scrypt-js "2.0.4" + setimmediate "1.0.4" + uuid "2.0.1" + xmlhttprequest "1.8.0" -immutable@^4.0.0, immutable@^4.0.0-rc.12: - version "4.2.2" - resolved "https://registry.npmjs.org/immutable/-/immutable-4.2.2.tgz" - integrity sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og== +ethers@^5.0.1, ethers@^5.0.13, ethers@^5.0.2, ethers@^5.5.2, ethers@^5.5.3, ethers@^5.5.4, ethers@^5.7.0: + version "5.7.2" + resolved "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz" + 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" -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" - integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== +ethjs-abi@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/ethjs-abi/-/ethjs-abi-0.2.1.tgz" + integrity sha512-g2AULSDYI6nEJyJaEVEXtTimRY2aPC2fi7ddSy0W+LXvEVL8Fe1y76o43ecbgdUKwZD+xsmEgX1yJr1Ia3r1IA== dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" + bn.js "4.11.6" + js-sha3 "0.5.5" + number-to-bn "1.7.0" -import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz" + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" + bn.js "4.11.6" + number-to-bn "1.7.0" -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== +ethjs-util@0.1.6, ethjs-util@^0.1.3, ethjs-util@^0.1.6: + version "0.1.6" + resolved "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz" + integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" + is-hex-prefixed "1.0.0" + strip-hex-prefix "1.0.0" -import-modules@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/import-modules/-/import-modules-2.1.0.tgz" - integrity sha512-8HEWcnkbGpovH9yInoisxaSoIg9Brbul+Ju3Kqe2UsYDUBJD/iQjSgEj0zPcTDPKfPp2fs5xlv1i+JSye/m1/A== +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -imul@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz" - integrity sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA== +eventemitter3@4.0.4: + version "4.0.4" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz" + integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== +eventemitter3@^4.0.4: + version "4.0.7" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== +events@^3.0.0, events@^3.2.0, events@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -indexof@~0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg== +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" -infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: - once "^1.3.0" - wrappy "1" + 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" -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.npmjs.org/inherits/-/inherits-2.0.4.tgz" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" -inherits@2.0.3: +expand-template@^2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + resolved "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== -ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: - version "1.3.8" - resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== +express-prom-bundle@^6.3.6, express-prom-bundle@^6.4.1: + version "6.6.0" + resolved "https://registry.npmjs.org/express-prom-bundle/-/express-prom-bundle-6.6.0.tgz" + integrity sha512-tZh2P2p5a8/yxQ5VbRav011Poa4R0mHqdFwn9Swe/obXDe5F0jY9wtRAfNYnqk4LXY7akyvR/nrvAHxQPWUjsQ== + dependencies: + on-finished "^2.3.0" + url-value-parser "^2.0.0" -init-package-json@^2.0.2: - version "2.0.5" - resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.5.tgz" - integrity sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA== +express@^4.14.0, express@^4.17.1, express@^4.18.1: + version "4.18.2" + resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: - npm-package-arg "^8.1.5" - promzard "^0.3.0" - read "~1.0.1" - read-package-json "^4.1.1" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "^3.0.0" + 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" -inline-style-parser@0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz" - integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== +ext@^1.1.2: + version "1.7.0" + resolved "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" -inquirer@^6.2.2: - version "6.5.2" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" + is-extendable "^0.1.0" -inquirer@^7.3.3: - version "7.3.3" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.19" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.6.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extendable-error@^0.1.5: + version "0.1.7" + resolved "https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz" + integrity sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg== + +external-editor@^3.0.3, external-editor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" -internal-slot@^1.0.3, internal-slot@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz" - integrity sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ== - dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" - side-channel "^1.0.4" +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== -internmap@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz" - integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== +fake-merkle-patricia-tree@^1.0.1: + 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== + dependencies: + checkpoint-store "^1.1.0" -interpret@^3.1.1: +fast-check@3.1.1: version "3.1.1" - resolved "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz" - integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== - -invariant@2, invariant@2.2.4, invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + resolved "https://registry.npmjs.org/fast-check/-/fast-check-3.1.1.tgz" + integrity sha512-3vtXinVyuUKCKFKYcwXhGE6NtGWkqF8Yh3rvMZNzmwz8EPrgoc/v4pDdLHyLnCyCI5MZpZZkDEwFyXyEONOxpA== dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" - integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== + pure-rand "^5.0.1" -io-ts@1.10.4: - version "1.10.4" - resolved "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz" - integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== - dependencies: - fp-ts "^1.0.0" +fast-copy@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.0.tgz" + integrity sha512-4HzS+9pQ5Yxtv13Lhs1Z1unMXamBdn5nA4bEi1abYpDNSpSp7ODYQ1KPMF6nTatfEzgH6/zPvXKU1zvHiUjWlA== -ip@^1.1.5: - version "1.1.8" - resolved "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz" - integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + 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== -ip@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" - integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -ipaddr.js@1.9.1: - 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== +fast-glob@^3.0.3, fast-glob@^3.2.7, fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + 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" -ipaddr.js@^2.0.1: +fast-json-stable-stringify@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" - integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -is-absolute-url@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" - integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== - dependencies: - kind-of "^3.0.2" +fast-redact@^3.0.0: + version "3.1.2" + resolved "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz" + integrity sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw== -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== +fast-safe-stringify@^2.0.8, fast-safe-stringify@^2.1.1: + 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-xml-parser@4.2.5: + version "4.2.5" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz#a6747a09296a6cb34f2ae634019bf1738f3b421f" + integrity sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g== dependencies: - kind-of "^6.0.0" + strnum "^1.0.5" -is-alphabetical@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz" - integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== +fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== -is-alphanumerical@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz" - integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== dependencies: - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" + reusify "^1.0.4" -is-arguments@^1.0.4, is-arguments@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== +fault@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz" + integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" + format "^0.2.0" -is-array-buffer@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz" - integrity sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ== +fetch-ponyfill@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz" + integrity sha512-knK9sGskIg2T7OnYLdZ2hZXn0CtDrAIBxYQLpmEf0BqfdWnwmM1weccUl5+4EdA44tzNSFAuxITPbXtPehUB3g== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - is-typed-array "^1.1.10" + node-fetch "~1.7.1" -is-array-buffer@^3.0.1: - 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== +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz" + integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.0" - is-typed-array "^1.1.10" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + escape-string-regexp "^1.0.5" -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== dependencies: - has-bigints "^1.0.1" + escape-string-regexp "^1.0.5" -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== dependencies: - binary-extensions "^2.0.0" + flat-cache "^2.0.1" -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" + flat-cache "^3.0.4" -is-buffer@^1.1.5, is-buffer@~1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +file-uri-to-path@1.0.0: + 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== -is-buffer@^2.0.0, is-buffer@^2.0.5, is-buffer@~2.0.3: - version "2.0.5" - resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz" - integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" -is-builtin-module@^3.1.0, is-builtin-module@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" - integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: - builtin-modules "^3.3.0" + to-regex-range "^5.0.1" -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== +filter-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz" + integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: - ci-info "^2.0.0" + 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" -is-ci@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz" - integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== +find-cache-dir@^3.2.0: + 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== dependencies: - ci-info "^3.2.0" + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" -is-core-module@^2.11.0: - version "2.12.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" - integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== +find-replace@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz" + integrity sha512-KrUnjzDCD9426YnCP56zGYy/eieTnhtK6Vn++j+JJzmlsWWwEkDnsyVF575spT6HJ6Ow9tlbT3TQTDsa+O4UWA== dependencies: - has "^1.0.3" + array-back "^1.0.4" + test-value "^2.1.0" -is-core-module@^2.4.0, is-core-module@^2.5.0, is-core-module@^2.8.1, is-core-module@^2.9.0: - version "2.11.0" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz" - integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== +find-replace@^3.0.0: + 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== dependencies: - has "^1.0.3" + array-back "^3.0.1" -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" - integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== +find-up@3.0.0, find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: - kind-of "^3.0.2" + locate-path "^3.0.0" -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== +find-up@5.0.0, find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: - kind-of "^6.0.0" + locate-path "^6.0.0" + path-exists "^4.0.0" -is-date-object@^1.0.1, is-date-object@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz" + integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== dependencies: - has-tostringtag "^1.0.0" - -is-decimal@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz" - integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== - -is-deflate@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-deflate/-/is-deflate-1.0.0.tgz#c862901c3c161fb09dac7cdc7e784f80e98f2f14" - integrity sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ== + path-exists "^2.0.0" + pinkie-promise "^2.0.0" -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" + locate-path "^2.0.0" -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" - integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" - integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + locate-path "^5.0.0" + path-exists "^4.0.0" -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== +find-yarn-workspace-root2@1.2.16: + version "1.2.16" + resolved "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz" + integrity sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA== dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - -is-fn@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-fn/-/is-fn-1.0.0.tgz" - integrity sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg== + micromatch "^4.0.2" + pkg-dir "^4.2.0" -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" - integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== +find-yarn-workspace-root@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz" + integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q== dependencies: - number-is-nan "^1.0.0" + fs-extra "^4.0.3" + micromatch "^3.1.4" -is-fullwidth-code-point@^2.0.0: +find-yarn-workspace-root@^2.0.0: 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== - -is-fullwidth-code-point@^3.0.0: - 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@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz" - integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + resolved "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== + dependencies: + micromatch "^4.0.2" -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" -is-generator-function@^1.0.7: - version "1.0.10" - resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: - has-tostringtag "^1.0.0" + flatted "^3.1.0" + rimraf "^3.0.2" -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.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== +flat@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz" + integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA== dependencies: - is-extglob "^2.1.1" + is-buffer "~2.0.3" -is-gzip@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83" - integrity sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ== +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -is-hex-prefixed@1.0.0: - 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== +flatstr@^1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz" + integrity sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw== -is-hexadecimal@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz" - integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== -is-in-browser@^1.0.2, is-in-browser@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz" - integrity sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g== +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== -is-interactive@^1.0.0: +flow-stoplight@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + resolved "https://registry.npmjs.org/flow-stoplight/-/flow-stoplight-1.0.0.tgz" + integrity sha512-rDjbZUKpN8OYhB0IE/vY/I8UWO/602IIJEU/76Tv4LvYnwHCk0BCsvz4eRr9n+FQcri7L5cyaXOo0+/Kh4HisA== -is-lambda@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz" - integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== +fmix@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz" + integrity sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w== + dependencies: + imul "^1.0.0" -is-lower-case@^1.1.0: - version "1.1.3" - resolved "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz" - integrity sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA== +follow-redirects@^1.12.1, follow-redirects@^1.14.0: + version "1.15.2" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +for-each@^0.3.3, for-each@~0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== + +foreground-child@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz" + integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== dependencies: - lower-case "^1.1.0" + cross-spawn "^7.0.0" + signal-exit "^3.0.2" -is-map@^2.0.1, is-map@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" - integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== -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== +form-data-encoder@1.7.1: + 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== -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== +form-data@^2.2.0: + version "2.5.1" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz" + integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: - has-tostringtag "^1.0.0" + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" - integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.1: - 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-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-object@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-0.1.2.tgz#00efbc08816c33cfc4ac8251d132e10dc65098d7" - integrity sha512-GkfZZlIZtpkFrqyAXPQSRBMsaHAw+CgoKe2HXAkjd/sfoI9+hS8PT4wg2rJxdQyUKr7N2vHJbg7/jQtE5l5vBQ== + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" -is-path-cwd@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" -is-path-inside@^3.0.2, is-path-inside@^3.0.3: - 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== +format@^0.2.0: + version "0.2.2" + resolved "https://registry.npmjs.org/format/-/format-0.2.2.tgz" + integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== -is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" - integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== +formidable@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/formidable/-/formidable-2.1.1.tgz" + integrity sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ== + dependencies: + dezalgo "^1.0.4" + hexoid "^1.0.0" + once "^1.4.0" + qs "^6.11.0" -is-plain-obj@^2.0.0, is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== +fp-ts@1.19.3: + version "1.19.3" + resolved "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz" + integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== -is-plain-object@5.0.0, is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== +fp-ts@^1.0.0: + version "1.19.5" + resolved "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.5.tgz" + integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== dependencies: - isobject "^3.0.1" + map-cache "^0.2.2" -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== +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -is-regex@^1.0.4, is-regex@^1.1.4, is-regex@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" +fromentries@^1.2.0: + version "1.3.2" + resolved "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz" + integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== -is-regexp@^1.0.0: +fs-constants@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" - integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== - -is-root@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" - integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== - -is-set@^2.0.1, is-set@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz" - integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -is-shared-array-buffer@^1.0.2: - 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== +fs-extra@^0.30.0: + version "0.30.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz" + integrity sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA== dependencies: - call-bind "^1.0.2" + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" -is-ssh@^1.3.0: - version "1.4.0" - resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz" - integrity sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: - protocols "^2.0.1" - -is-stream@^1.0.1, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" - integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== +fs-extra@^4.0.2, fs-extra@^4.0.3: + 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: - has-tostringtag "^1.0.0" + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" -is-subdir@^1.1.1: - version "1.2.0" - resolved "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz" - integrity sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw== +fs-extra@^7.0.0, fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== dependencies: - better-path-resolve "1.0.0" + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: - has-symbols "^1.0.2" + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" -is-text-path@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz" - integrity sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== +fs-extra@^9.0.0, fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: - text-extensions "^1.0.0" + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" -is-typed-array@^1.1.10, is-typed-array@^1.1.3, is-typed-array@^1.1.9: - 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== +fs-minipass@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== 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" + minipass "^2.6.0" + +fs-minipass@^2.0.0, fs-minipass@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" -is-typedarray@1.0.0, is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -is-upper-case@^1.1.0: - version "1.1.2" - resolved "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz" - integrity sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw== - dependencies: - upper-case "^1.1.0" +fs@^0.0.1-security: + version "0.0.1-security" + resolved "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz" + integrity sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w== -is-url@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz" - integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== +fsevents@~2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" - integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== +fsevents@~2.3.1, 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== -is-weakmap@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" - integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== +function.prototype.name@^1.1.5: + 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== dependencies: call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" -is-weakset@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz" - integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" +functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: + 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== -is-windows@^1.0.0, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -is-wsl@^2.1.1, is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== +ganache-core@^2.13.2: + version "2.13.2" + resolved "https://registry.npmjs.org/ganache-core/-/ganache-core-2.13.2.tgz" + integrity sha512-tIF5cR+ANQz0+3pHWxHjIwHqFXcVo0Mb+kcsNhglNFALcYo49aQpnS9dqHartqPfMFjiHh/qFoD3mYK0d/qGgw== dependencies: - is-docker "^2.0.0" + abstract-leveldown "3.0.0" + async "2.6.2" + bip39 "2.5.0" + cachedown "1.0.0" + clone "2.1.2" + debug "3.2.6" + encoding-down "5.0.4" + eth-sig-util "3.0.0" + ethereumjs-abi "0.6.8" + ethereumjs-account "3.0.0" + ethereumjs-block "2.2.2" + ethereumjs-common "1.5.0" + ethereumjs-tx "2.1.2" + ethereumjs-util "6.2.1" + ethereumjs-vm "4.2.0" + heap "0.2.6" + keccak "3.0.1" + level-sublevel "6.6.4" + levelup "3.1.1" + lodash "4.17.20" + lru-cache "5.1.1" + merkle-patricia-tree "3.0.0" + patch-package "6.2.2" + seedrandom "3.0.1" + source-map-support "0.5.12" + tmp "0.1.0" + web3-provider-engine "14.2.1" + websocket "1.0.32" + optionalDependencies: + ethereumjs-wallet "0.6.5" + web3 "1.2.11" -is@~0.2.6: - version "0.2.7" - resolved "https://registry.yarnpkg.com/is/-/is-0.2.7.tgz#3b34a2c48f359972f35042849193ae7264b63562" - integrity sha512-ajQCouIvkcSnl2iRdK70Jug9mohIHVX9uKpoWnl115ov0R5mzBvRrXxrnHbsA+8AdwCwc/sfw7HXmd4I5EJBdQ== +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^3.0.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz" + integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== +gensync@^1.0.0-beta.2: + 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== -isarray@^2.0.1, isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== -isbuffer@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/isbuffer/-/isbuffer-0.0.0.tgz#38c146d9df528b8bf9b0701c3d43cf12df3fc39b" - integrity sha512-xU+NoHp+YtKQkaM2HsQchYn0sltxMxew0HavMfHbjnucBoTSGbw745tL+Z7QBANleWM1eEQMenEpi174mIeS4g== +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -isexe@^2.0.0: +get-func-name@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz" + integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" - integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz" + integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== dependencies: - isarray "1.0.0" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== +get-own-enumerable-property-symbols@^3.0.0: + 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== -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: +get-pkg-repo@^4.0.0: + version "4.2.1" + resolved "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz" + integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== + dependencies: + "@hutson/parse-repository-url" "^3.0.0" + hosted-git-info "^4.0.0" + through2 "^2.0.0" + yargs "^16.2.0" + +get-port@^3.1.0: 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== + resolved "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz" + integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== -istanbul-lib-hook@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz" - integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ== +get-port@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz" + integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== + +get-stream@^4.0.0, get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: - append-transform "^2.0.0" + pump "^3.0.0" -istanbul-lib-instrument@^4.0.0: - version "4.0.3" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" + pump "^3.0.0" + +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== -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== +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== 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" + assert-plus "^1.0.0" -istanbul-lib-processinfo@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz" - integrity sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg== +ghost-testrpc@^0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz" + integrity sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ== dependencies: - archy "^1.0.0" - cross-spawn "^7.0.3" - istanbul-lib-coverage "^3.2.0" - p-map "^3.0.0" - rimraf "^3.0.0" - uuid "^8.3.2" + chalk "^2.4.2" + node-emoji "^1.10.0" -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== +git-raw-commits@^2.0.8: + version "2.0.11" + resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz" + integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" + dargs "^7.0.0" + lodash "^4.17.15" + meow "^8.0.0" + split2 "^3.0.0" + through2 "^4.0.0" -istanbul-lib-source-maps@^4.0.0: - 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== +git-remote-origin-url@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz" + integrity sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw== dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" + gitconfiglocal "^1.0.0" + pify "^2.3.0" -istanbul-reports@^3.0.2, istanbul-reports@^3.1.3, istanbul-reports@^3.1.4: - version "3.1.5" - resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz" - integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== +git-semver-tags@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz" + integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA== dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" + meow "^8.0.0" + semver "^6.0.0" -istanbul@^0.4.5: - version "0.4.5" - resolved "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz" - integrity sha512-nMtdn4hvK0HjUlzr1DrKSUY8ychprt8dzHOgY2KXsIhHu5PuQQEOTM27gV9Xblyon7aUH/TSFIjRHEODF/FRPg== +git-up@^4.0.0: + version "4.0.5" + resolved "https://registry.npmjs.org/git-up/-/git-up-4.0.5.tgz" + integrity sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA== dependencies: - abbrev "1.0.x" - async "1.x" - escodegen "1.8.x" - esprima "2.7.x" - glob "^5.0.15" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - once "1.x" - resolve "1.1.x" - supports-color "^3.1.0" - which "^1.1.1" - wordwrap "^1.0.0" + is-ssh "^1.3.0" + parse-url "^6.0.0" -jackspeak@^2.0.3: - version "2.2.2" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.2.tgz#707c62733924b8dc2a0a629dc6248577788b5385" - integrity sha512-mgNtVv4vUuaKA97yxUHoA3+FkuhtxkjdXEWOyB/N76fjy0FjezEt34oy3epBtvCvS+7DyKwqCFWx/oJLV5+kCg== +git-url-parse@^11.4.4: + version "11.6.0" + resolved "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.6.0.tgz" + integrity sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g== dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" + git-up "^4.0.0" -jake@^10.8.5: - version "10.8.7" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" - integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== +gitconfiglocal@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz" + integrity sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ== dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.4" - minimatch "^3.1.2" + ini "^1.3.2" -jest-changed-files@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" - integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== - dependencies: - "@jest/types" "^27.5.1" - execa "^5.0.0" - throat "^6.0.1" +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz" + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== -jest-circus@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" - integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== +glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^0.7.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - slash "^3.0.0" - stack-utils "^2.0.3" - throat "^6.0.1" + is-glob "^4.0.1" -jest-cli@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" - integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: - "@jest/core" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - import-local "^3.0.2" - jest-config "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - prompts "^2.0.1" - yargs "^16.2.0" + is-glob "^4.0.3" -jest-config@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" - integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== - dependencies: - "@babel/core" "^7.8.0" - "@jest/test-sequencer" "^27.5.1" - "@jest/types" "^27.5.1" - babel-jest "^27.5.1" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.9" - jest-circus "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-get-type "^27.5.1" - jest-jasmine2 "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runner "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^27.5.1" - slash "^3.0.0" - strip-json-comments "^3.1.1" +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -jest-diff@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== +glob@7.1.3: + version "7.1.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== dependencies: - chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" + 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" -jest-diff@^29.5.0: - version "29.5.0" - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz" - integrity sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw== +glob@7.1.6: + version "7.1.6" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: - chalk "^4.0.0" - diff-sequences "^29.4.3" - jest-get-type "^29.4.3" - pretty-format "^29.5.0" + 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" -jest-docblock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" - integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== +glob@7.1.7: + version "7.1.7" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== dependencies: - detect-newline "^3.0.0" + 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" -jest-each@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" - integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== +glob@7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: - "@jest/types" "^27.5.1" - chalk "^4.0.0" - jest-get-type "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" + 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" -jest-environment-jsdom@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" - integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== +glob@^5.0.15: + version "5.0.15" + resolved "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz" + integrity sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA== dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - jsdom "^16.6.0" + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" -jest-environment-node@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" - integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== +glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.2.3: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - -jest-get-type@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" - integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== - -jest-get-type@^29.4.3: - version "29.4.3" - resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz" - integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== + 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" -jest-haste-map@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" - integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== +glob@^8.0.0, glob@^8.0.1, glob@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== dependencies: - "@jest/types" "^27.5.1" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^27.5.1" - jest-serializer "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - micromatch "^4.0.4" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.3.2" + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" -jest-haste-map@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.5.0.tgz#69bd67dc9012d6e2723f20a945099e972b2e94de" - integrity sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA== +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== dependencies: - "@jest/types" "^29.5.0" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.4.3" - jest-util "^29.5.0" - jest-worker "^29.5.0" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" + global-prefix "^3.0.0" -jest-jasmine2@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" - integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== dependencies: - "@jest/environment" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - throat "^6.0.1" - -jest-leak-detector@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" - integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +global@~4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/global/-/global-4.4.0.tgz" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== dependencies: - jest-get-type "^27.5.1" - pretty-format "^27.5.1" + min-document "^2.19.0" + process "^0.11.10" -jest-matcher-utils@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" - integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== +globals@^11.1.0, globals@^11.7.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.19.0, globals@^13.6.0, globals@^13.9.0: + version "13.19.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz" + integrity sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ== dependencies: - chalk "^4.0.0" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" + type-fest "^0.20.2" + +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz" + integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== -jest-matcher-utils@^29.5.0: - version "29.5.0" - resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz" - integrity sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw== +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== dependencies: - chalk "^4.0.0" - jest-diff "^29.5.0" - jest-get-type "^29.4.3" - pretty-format "^29.5.0" + define-properties "^1.1.3" -jest-message-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" - integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== +globby@12.1.0: + version "12.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-12.1.0.tgz" + integrity sha512-YULDaNwsoUZkRy9TWSY/M7Obh0abamTKoKzTfOI3uU+hfpX2FZqOq8LFDxsjYheF1RH7ITdArgbQnsNBFgcdBA== dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.5.1" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^27.5.1" - slash "^3.0.0" - stack-utils "^2.0.3" + array-union "^3.0.1" + dir-glob "^3.0.1" + fast-glob "^3.2.7" + ignore "^5.1.9" + merge2 "^1.4.1" + slash "^4.0.0" -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== +globby@^10.0.1: + version "10.0.2" + resolved "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz" + integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== 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" + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" slash "^3.0.0" - stack-utils "^2.0.3" -jest-message-util@^29.5.0: - version "29.5.0" - resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz" - integrity sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA== +globby@^11.0.0, globby@^11.0.2, globby@^11.0.3, globby@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.5.0" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.5.0" + 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" - stack-utils "^2.0.3" -jest-mock@^27.0.6, jest-mock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" - integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== dependencies: - "@jest/types" "^27.5.1" - "@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@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" - integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== - -jest-regex-util@^28.0.0: - 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== + get-intrinsic "^1.1.3" -jest-regex-util@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8" - integrity sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg== +got@12.1.0: + 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" -jest-resolve-dependencies@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" - integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== +got@9.6.0: + version "9.6.0" + resolved "https://registry.npmjs.org/got/-/got-9.6.0.tgz" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== dependencies: - "@jest/types" "^27.5.1" - jest-regex-util "^27.5.1" - jest-snapshot "^27.5.1" + "@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" -jest-resolve@^27.4.2, jest-resolve@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" - integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== +got@^11.8.5: + version "11.8.6" + resolved "https://registry.npmjs.org/got/-/got-11.8.6.tgz" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== dependencies: - "@jest/types" "^27.5.1" - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-pnp-resolver "^1.2.2" - jest-util "^27.5.1" - jest-validate "^27.5.1" - resolve "^1.20.0" - resolve.exports "^1.1.0" - slash "^3.0.0" + "@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" -jest-runner@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" - integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== - dependencies: - "@jest/console" "^27.5.1" - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.8.1" - graceful-fs "^4.2.9" - jest-docblock "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-haste-map "^27.5.1" - jest-leak-detector "^27.5.1" - jest-message-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runtime "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - source-map-support "^0.5.6" - throat "^6.0.1" +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -jest-runtime@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" - integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/globals" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - 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 "^27.5.1" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - slash "^3.0.0" - strip-bom "^4.0.0" +graceful-fs@^4.2.6: + 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== -jest-serializer@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" - integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.9" +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== -jest-snapshot@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" - integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== - dependencies: - "@babel/core" "^7.7.2" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.0.0" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.1.5" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^27.5.1" - graceful-fs "^4.2.9" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - jest-haste-map "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-util "^27.5.1" - natural-compare "^1.4.0" - pretty-format "^27.5.1" - semver "^7.3.2" +growl@1.10.5: + version "1.10.5" + resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== -jest-styled-components@^7.1.1: - version "7.1.1" - resolved "https://registry.npmjs.org/jest-styled-components/-/jest-styled-components-7.1.1.tgz" - integrity sha512-OUq31R5CivBF8oy81dnegNQrRW13TugMol/Dz6ZnFfEyo03exLASod7YGwyHGuayYlKmCstPtz0RQ1+NrAbIIA== +handlebars@^4.0.1, handlebars@^4.7.7: + version "4.7.7" + resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== dependencies: - "@adobe/css-tools" "^4.0.1" + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" -jest-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" - integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== -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== +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== 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" + ajv "^6.12.3" + har-schema "^2.0.0" -jest-util@^29.5.0: - version "29.5.0" - resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz" - integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ== - dependencies: - "@jest/types" "^29.5.0" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" +hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== -jest-validate@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" - integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== - dependencies: - "@jest/types" "^27.5.1" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^27.5.1" - leven "^3.1.0" - pretty-format "^27.5.1" +hardhat-deploy-ethers@^0.3.0-beta.11: + version "0.3.0-beta.13" + resolved "https://registry.npmjs.org/hardhat-deploy-ethers/-/hardhat-deploy-ethers-0.3.0-beta.13.tgz" + integrity sha512-PdWVcKB9coqWV1L7JTpfXRCI91Cgwsm7KLmBcwZ8f0COSm1xtABHZTyz3fvF6p42cTnz1VM0QnfDvMFlIRkSNw== -jest-watch-typeahead@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz#b4a6826dfb9c9420da2f7bc900de59dad11266a9" - integrity sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw== +hardhat-deploy@^0.11.12: + version "0.11.22" + resolved "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.11.22.tgz" + integrity sha512-ZhHVNB7Jo2l8Is+KIAk9F8Q3d7pptyiX+nsNbIFXztCz81kaP+6kxNODRBqRCy7SOD3It4+iKCL6tWsPAA/jVQ== dependencies: - ansi-escapes "^4.3.1" - chalk "^4.0.0" - jest-regex-util "^28.0.0" - jest-watcher "^28.0.0" - slash "^4.0.0" - string-length "^5.0.1" - strip-ansi "^7.0.1" + "@types/qs" "^6.9.7" + axios "^0.21.1" + chalk "^4.1.2" + chokidar "^3.5.2" + debug "^4.3.2" + enquirer "^2.3.6" + ethers "^5.5.3" + form-data "^4.0.0" + fs-extra "^10.0.0" + match-all "^1.2.6" + murmur-128 "^0.2.1" + qs "^6.9.4" + zksync-web3 "^0.8.1" -jest-watcher@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" - integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== +hardhat-deploy@^0.7.10: + version "0.7.11" + resolved "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.7.11.tgz" + integrity sha512-ONLH3NH8Biuhky44KRFyaINVHM8JI4Ihy1TpntIRZUpIFHlz9h3gieq46H7iwdp6z3CqMsOCChF0riUF3CFpmQ== dependencies: - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - jest-util "^27.5.1" - string-length "^4.0.1" + "@ethersproject/abi" "^5.0.0" + "@ethersproject/abstract-signer" "^5.0.0" + "@ethersproject/address" "^5.0.0" + "@ethersproject/bignumber" "^5.0.0" + "@ethersproject/bytes" "^5.0.0" + "@ethersproject/contracts" "^5.0.0" + "@ethersproject/providers" "^5.0.0" + "@ethersproject/solidity" "^5.0.0" + "@ethersproject/transactions" "^5.0.0" + "@ethersproject/wallet" "^5.0.0" + "@types/qs" "^6.9.4" + axios "^0.21.1" + chalk "^4.1.0" + chokidar "^3.4.0" + debug "^4.1.1" + form-data "^3.0.0" + fs-extra "^9.0.0" + match-all "^1.2.6" + murmur-128 "^0.2.1" + qs "^6.9.4" -jest-watcher@^28.0.0: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" - integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== +hardhat-deploy@^0.9.3: + version "0.9.29" + resolved "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.9.29.tgz" + integrity sha512-8tIGszPFmOaXtyloCbASiZPvoAgLNGGL/Ubys3YW/oj4dvoPa8G6YDyaOCdsAhsENZ+QgR280NFSG9JdN7SU9Q== 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" + "@ethersproject/abi" "^5.4.0" + "@ethersproject/abstract-signer" "^5.4.1" + "@ethersproject/address" "^5.4.0" + "@ethersproject/bignumber" "^5.4.1" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/constants" "^5.4.0" + "@ethersproject/contracts" "^5.4.1" + "@ethersproject/providers" "^5.4.4" + "@ethersproject/solidity" "^5.4.0" + "@ethersproject/transactions" "^5.4.0" + "@ethersproject/wallet" "^5.4.0" + "@types/qs" "^6.9.7" + axios "^0.21.1" + chalk "^4.1.2" + chokidar "^3.5.2" + debug "^4.3.2" + enquirer "^2.3.6" + form-data "^4.0.0" + fs-extra "^10.0.0" + match-all "^1.2.6" + murmur-128 "^0.2.1" + qs "^6.9.4" -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== +hardhat-gas-reporter@^1.0.4, hardhat-gas-reporter@^1.0.8: + version "1.0.9" + resolved "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz" + integrity sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg== dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" + array-uniq "1.0.3" + eth-gas-reporter "^0.2.25" + sha1 "^1.1.1" -jest-worker@^27.0.2, jest-worker@^27.4.5, jest-worker@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== +hardhat-output-validator@^0.1.18: + version "0.1.19" + resolved "https://registry.npmjs.org/hardhat-output-validator/-/hardhat-output-validator-0.1.19.tgz" + integrity sha512-rIDdiHHt2WEMBRnbOa95xpze2t88KSfWh2gI9LCbdrMuSmsLiO2qzgB4cZ6O7Tvjz4jsBgxD9Dcr4uNP8pJ8Pw== dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" + chalk "^4.1.2" -jest-worker@^28.0.2: - 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== +hardhat-watcher@^2.1.1: + version "2.5.0" + resolved "https://registry.npmjs.org/hardhat-watcher/-/hardhat-watcher-2.5.0.tgz" + integrity sha512-Su2qcSMIo2YO2PrmJ0/tdkf+6pSt8zf9+4URR5edMVti6+ShI8T3xhPrwugdyTOFuyj8lKHrcTZNKUFYowYiyA== dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" + chokidar "^3.5.3" -jest-worker@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.5.0.tgz#bdaefb06811bd3384d93f009755014d8acb4615d" - integrity sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA== +hardhat@^2.12.5: + version "2.12.5" + resolved "https://registry.npmjs.org/hardhat/-/hardhat-2.12.5.tgz" + integrity sha512-f/t7+hLlhsnQZ6LDXyV+8rHGRZFZY1sgFvgrwr9fBjMdGp1Bu6hHq1KXS4/VFZfZcVdL1DAWWEkryinZhqce+A== dependencies: - "@types/node" "*" - jest-util "^29.5.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" + "@ethersproject/abi" "^5.1.2" + "@metamask/eth-sig-util" "^4.0.0" + "@nomicfoundation/ethereumjs-block" "^4.0.0" + "@nomicfoundation/ethereumjs-blockchain" "^6.0.0" + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-evm" "^1.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-statemanager" "^1.0.0" + "@nomicfoundation/ethereumjs-trie" "^5.0.0" + "@nomicfoundation/ethereumjs-tx" "^4.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + "@nomicfoundation/ethereumjs-vm" "^6.0.0" + "@nomicfoundation/solidity-analyzer" "^0.1.0" + "@sentry/node" "^5.18.1" + "@types/bn.js" "^5.1.0" + "@types/lru-cache" "^5.1.0" + abort-controller "^3.0.0" + adm-zip "^0.4.16" + aggregate-error "^3.0.0" + ansi-escapes "^4.3.0" + chalk "^2.4.2" + chokidar "^3.4.0" + ci-info "^2.0.0" + debug "^4.1.1" + enquirer "^2.3.0" + env-paths "^2.2.0" + ethereum-cryptography "^1.0.3" + ethereumjs-abi "^0.6.8" + find-up "^2.1.0" + fp-ts "1.19.3" + fs-extra "^7.0.1" + glob "7.2.0" + immutable "^4.0.0-rc.12" + io-ts "1.10.4" + keccak "^3.0.2" + lodash "^4.17.11" + mnemonist "^0.38.0" + mocha "^10.0.0" + p-map "^4.0.0" + qs "^6.7.0" + raw-body "^2.4.1" + resolve "1.17.0" + semver "^6.3.0" + solc "0.7.3" + source-map-support "^0.5.13" + stacktrace-parser "^0.1.10" + tsort "0.0.1" + undici "^5.4.0" + uuid "^8.3.2" + ws "^7.4.6" -jest@^27.4.3: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" - integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== dependencies: - "@jest/core" "^27.5.1" - import-local "^3.0.2" - jest-cli "^27.5.1" - -jiti@^1.18.2: - version "1.18.2" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.18.2.tgz#80c3ef3d486ebf2450d9335122b32d121f2a83cd" - integrity sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg== - -joycon@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz" - integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== - -jquery@>=1.10: - version "3.7.0" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.0.tgz#fe2c01a05da500709006d8790fe21c8a39d75612" - integrity sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ== + ansi-regex "^2.0.0" -js-sdsl@^4.1.4: - version "4.2.0" - resolved "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz" - integrity sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ== +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== -js-sha3@0.5.5: - version "0.5.5" - resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.5.tgz" - integrity sha512-yLLwn44IVeunwjpDVTDZmQeVbB0h+dZpY2eO68B/Zik8hu6dH+rKeLxwua79GGIvW6xr8NBAcrtiUbYrTjEFTA== +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" + integrity sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA== -js-sha3@0.5.7, js-sha3@^0.5.7: - version "0.5.7" - resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz" - integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz" + integrity sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng== -js-sha3@0.8.0, js-sha3@^0.8.0: - version "0.8.0" - resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: +has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" - integrity sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -js-yaml@3.13.1: - version "3.13.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== dependencies: - argparse "^1.0.7" - esprima "^4.0.0" + get-intrinsic "^1.1.1" -js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.14.0, js-yaml@^3.6.1: - version "3.14.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" +has-proto@^1.0.1: + 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== -js-yaml@4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz" - integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== - dependencies: - argparse "^2.0.1" +has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -js-yaml@4.1.0, js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== dependencies: - argparse "^2.0.1" - -jsbi@^3.1.1, jsbi@^3.1.4: - version "3.2.5" - resolved "https://registry.npmjs.org/jsbi/-/jsbi-3.2.5.tgz" - integrity sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ== + has-symbols "^1.0.2" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" - integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== +has-unicode@^2.0.0, has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== -jscodeshift@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.14.0.tgz#7542e6715d6d2e8bde0b4e883f0ccea358b46881" - integrity sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA== - dependencies: - "@babel/core" "^7.13.16" - "@babel/parser" "^7.13.16" - "@babel/plugin-proposal-class-properties" "^7.13.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" - "@babel/plugin-proposal-optional-chaining" "^7.13.12" - "@babel/plugin-transform-modules-commonjs" "^7.13.8" - "@babel/preset-flow" "^7.13.13" - "@babel/preset-typescript" "^7.13.0" - "@babel/register" "^7.13.16" - babel-core "^7.0.0-bridge.0" - chalk "^4.1.2" - flow-parser "0.*" - graceful-fs "^4.2.4" - micromatch "^4.0.4" - neo-async "^2.5.0" - node-dir "^0.1.17" - recast "^0.21.0" - temp "^0.8.4" - write-file-atomic "^2.3.0" +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" -jsdoc-type-pratt-parser@~4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz#136f0571a99c184d84ec84662c45c29ceff71114" - integrity sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ== +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" -jsdom@^16.6.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - 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 "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.6" - xml-name-validator "^3.0.0" +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz" - integrity sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA== +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +has@^1.0.3, has@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" - integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== +hash.js@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz" + integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== +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.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== +hasha@^5.0.0: + version "5.2.2" + resolved "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz" + integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== + dependencies: + is-stream "^2.0.0" + type-fest "^0.8.0" -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: - 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== +he@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -json-rpc-engine@^3.4.0, json-rpc-engine@^3.6.0: - version "3.8.0" - resolved "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-3.8.0.tgz" - integrity sha512-6QNcvm2gFuuK4TKU1uwfH0Qd/cOSb9c1lls0gbnIhciktIUQJwz6NQNAW4B1KiGPenv7IKu97V222Yo1bNhGuA== +header-case@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz" + integrity sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ== dependencies: - async "^2.0.1" - babel-preset-env "^1.7.0" - babelify "^7.3.0" - json-rpc-error "^2.0.0" - promise-to-callback "^1.0.0" - safe-event-emitter "^1.0.1" + no-case "^2.2.0" + upper-case "^1.1.3" + +heap@0.2.6: + version "0.2.6" + resolved "https://registry.npmjs.org/heap/-/heap-0.2.6.tgz" + integrity sha512-MzzWcnfB1e4EG2vHi3dXHoBupmuXNZzx6pY6HldVS55JKKBoq3xOyzfSaZRkJp37HIhEYC78knabHff3zc4dQQ== -json-rpc-engine@^5.3.0: - version "5.4.0" - resolved "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz" - integrity sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g== +help-me@^4.0.1: + version "4.2.0" + resolved "https://registry.npmjs.org/help-me/-/help-me-4.2.0.tgz" + integrity sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA== dependencies: - eth-rpc-errors "^3.0.0" - safe-event-emitter "^1.0.1" + glob "^8.0.0" + readable-stream "^3.6.0" -json-rpc-engine@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz" - integrity sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ== +hexoid@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz" + integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== + +highlight.js@^10.4.1, highlight.js@^10.7.1: + version "10.7.3" + resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz" + integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== + +highlightjs-solidity@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/highlightjs-solidity/-/highlightjs-solidity-2.0.5.tgz" + integrity sha512-ReXxQSGQkODMUgHcWzVSnfDCDrL2HshOYgw3OlIYmfHeRzUPkfJTUIp95pK4CmbiNG2eMTOmNLpfCz9Zq7Cwmg== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== dependencies: - "@metamask/safe-event-emitter" "^2.0.0" - eth-rpc-errors "^4.0.2" + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" -json-rpc-error@^2.0.0: +home-or-tmp@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/json-rpc-error/-/json-rpc-error-2.0.0.tgz" - integrity sha512-EwUeWP+KgAZ/xqFpaP6YDAXMtCJi+o/QQpCQFIYyxr01AdADi2y413eM8hSqJcoQym9WMePAJWoaODEJufC4Ug== + resolved "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz" + integrity sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg== dependencies: - inherits "^2.0.1" + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" -json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: - 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== +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== -json-schema-traverse@^0.4.1: - 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== +hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: + version "2.8.9" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== +hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" -json-schema@0.4.0, json-schema@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -json-stable-stringify-without-jsonify@^1.0.1: - 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== +htmlparser2@^7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz" + integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.2" + domutils "^2.8.0" + entities "^3.0.1" -json-stable-stringify@^1.0.1: - 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== +htmlparser2@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz" + integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA== dependencies: - jsonify "^0.0.1" + domelementtype "^2.3.0" + domhandler "^5.0.2" + domutils "^3.0.1" + entities "^4.3.0" -json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== +http-basic@^8.1.1: + version "8.1.3" + resolved "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz" + integrity sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw== + dependencies: + caseless "^0.12.0" + concat-stream "^1.6.2" + http-response-object "^3.0.1" + parse-cache-control "^1.0.1" -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz" - integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== +http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.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== -json5@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: - minimist "^1.2.0" + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" -json5@^2.1.0, json5@^2.1.2, json5@^2.1.3, json5@^2.2.0, json5@^2.2.2: - version "2.2.3" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +http-https@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz" + integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg== -jsonc-parser@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" - integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz" - integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== - optionalDependencies: - graceful-fs "^4.1.6" +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== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" +http-response-object@^3.0.1: + version "3.0.2" + resolved "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz" + integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== + dependencies: + "@types/node" "^10.0.3" -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" -jsonify@^0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz" - integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== +http2-wrapper@^1.0.0-beta.5.2: + 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" -jsonparse@^1.2.0, jsonparse@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" - integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== +http2-wrapper@^2.1.10: + 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" -jsonpointer@^5.0.0: +https-proxy-agent@^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== + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" -jsonschema@^1.2.4: - version "1.4.1" - resolved "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz" - integrity sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ== +human-id@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/human-id/-/human-id-1.0.2.tgz" + integrity sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw== -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -jss-plugin-camel-case@^10.9.2: - version "10.9.2" - resolved "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.2.tgz" - integrity sha512-wgBPlL3WS0WDJ1lPJcgjux/SHnDuu7opmgQKSraKs4z8dCCyYMx9IDPFKBXQ8Q5dVYij1FFV0WdxyhuOOAXuTg== - dependencies: - "@babel/runtime" "^7.3.1" - hyphenate-style-name "^1.0.3" - jss "10.9.2" - -jss-plugin-default-unit@^10.9.2: - version "10.9.2" - resolved "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.2.tgz" - integrity sha512-pYg0QX3bBEFtTnmeSI3l7ad1vtHU42YEEpgW7pmIh+9pkWNWb5dwS/4onSfAaI0kq+dOZHzz4dWe+8vWnanoSg== - dependencies: - "@babel/runtime" "^7.3.1" - jss "10.9.2" - -jss-plugin-global@^10.9.2: - version "10.9.2" - resolved "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.2.tgz" - integrity sha512-GcX0aE8Ef6AtlasVrafg1DItlL/tWHoC4cGir4r3gegbWwF5ZOBYhx04gurPvWHC8F873aEGqge7C17xpwmp2g== - dependencies: - "@babel/runtime" "^7.3.1" - jss "10.9.2" - -jss-plugin-nested@^10.9.2: - version "10.9.2" - resolved "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.2.tgz" - integrity sha512-VgiOWIC6bvgDaAL97XCxGD0BxOKM0K0zeB/ECyNaVF6FqvdGB9KBBWRdy2STYAss4VVA7i5TbxFZN+WSX1kfQA== - dependencies: - "@babel/runtime" "^7.3.1" - jss "10.9.2" - tiny-warning "^1.0.2" - -jss-plugin-props-sort@^10.9.2: - version "10.9.2" - resolved "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.2.tgz" - integrity sha512-AP1AyUTbi2szylgr+O0OB7gkIxEGzySLITZ2GpsaoX72YMCGI2jYAc+WUhPfvUnZYiauF4zTnN4V4TGuvFjJlw== - dependencies: - "@babel/runtime" "^7.3.1" - jss "10.9.2" - -jss-plugin-rule-value-function@^10.9.2: - version "10.9.2" - resolved "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.2.tgz" - integrity sha512-vf5ms8zvLFMub6swbNxvzsurHfUZ5Shy5aJB2gIpY6WNA3uLinEcxYyraQXItRHi5ivXGqYciFDRM2ZoVoRZ4Q== - dependencies: - "@babel/runtime" "^7.3.1" - jss "10.9.2" - tiny-warning "^1.0.2" - -jss-plugin-vendor-prefixer@^10.9.2: - version "10.9.2" - resolved "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.2.tgz" - integrity sha512-SxcEoH+Rttf9fEv6KkiPzLdXRmI6waOTcMkbbEFgdZLDYNIP9UKNHFy6thhbRKqv0XMQZdrEsbDyV464zE/dUA== - dependencies: - "@babel/runtime" "^7.3.1" - css-vendor "^2.0.8" - jss "10.9.2" - -jss@10.9.2, jss@^10.9.2: - version "10.9.2" - resolved "https://registry.npmjs.org/jss/-/jss-10.9.2.tgz" - integrity sha512-b8G6rWpYLR4teTUbGd4I4EsnWjg7MN0Q5bSsjKhVkJVjhQDy2KzkbD2AW3TuT0RYZVmZZHKIrXDn6kjU14qkUg== - dependencies: - "@babel/runtime" "^7.3.1" - csstype "^3.0.2" - is-in-browser "^1.1.3" - tiny-warning "^1.0.2" - -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2: - version "3.3.3" - resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz" - integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== +humanize-ms@^1.2.1: + 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: - array-includes "^3.1.5" - object.assign "^4.1.3" + ms "^2.0.0" -just-extend@^4.0.2: - version "4.2.1" - resolved "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz" - integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg== +husky@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/husky/-/husky-6.0.0.tgz" + integrity sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ== -keccak@3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz" - integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== +iconv-lite@0.4.24, iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" + safer-buffer ">= 2.1.2 < 3" -keccak@^3.0.0, keccak@^3.0.2: - version "3.0.3" - resolved "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz" - integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - readable-stream "^3.6.0" + safer-buffer ">= 2.1.2 < 3.0.0" -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== +idna-uts46-hx@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz" + integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== dependencies: - json-buffer "3.0.0" + punycode "2.1.0" -keyv@^4.0.0: - version "4.5.2" - resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz" - integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore-walk@^3.0.3: + version "3.0.4" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz" + integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== dependencies: - json-buffer "3.0.1" + minimatch "^3.0.4" -keyvaluestorage-interface@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz" - integrity sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g== +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" - integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== - dependencies: - is-buffer "^1.1.5" +ignore@^5.1.1, ignore@^5.1.8, ignore@^5.1.9, ignore@^5.2.0: + version "5.2.4" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" - integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== - dependencies: - is-buffer "^1.1.5" +immediate@^3.2.3: + version "3.3.0" + resolved "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz" + integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== +immediate@~3.2.3: + version "3.2.3" + resolved "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz" + integrity sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg== -kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +immutable@^4.0.0, immutable@^4.0.0-rc.12: + version "4.2.2" + resolved "https://registry.npmjs.org/immutable/-/immutable-4.2.2.tgz" + integrity sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og== -klaw-sync@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz" - integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" + integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== dependencies: - graceful-fs "^4.1.11" + caller-path "^2.0.0" + resolve-from "^3.0.0" -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz" - integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== - optionalDependencies: - graceful-fs "^4.1.9" +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" -kleur@^4.1.4: - version "4.1.5" - resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz" - integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== +import-modules@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/import-modules/-/import-modules-2.1.0.tgz" + integrity sha512-8HEWcnkbGpovH9yInoisxaSoIg9Brbul+Ju3Kqe2UsYDUBJD/iQjSgEj0zPcTDPKfPp2fs5xlv1i+JSye/m1/A== -klona@^2.0.4, klona@^2.0.5, klona@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" - integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== +imul@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz" + integrity sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA== + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== -language-subtag-registry@^0.3.20: - 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== +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== -language-tags@^1.0.5: - version "1.0.7" - resolved "https://registry.npmjs.org/language-tags/-/language-tags-1.0.7.tgz" - integrity sha512-bSytju1/657hFjgUzPAPqszxH62ouE8nQFoFaVlIQfne4wO/wXC9A4+m8jYve7YBBvi59eq0SUpcshvG8h5Usw== +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: - language-subtag-registry "^0.3.20" + once "^1.3.0" + wrappy "1" -launch-editor@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.0.tgz#4c0c1a6ac126c572bd9ff9a30da1d2cae66defd7" - integrity sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ== - dependencies: - picocolors "^1.0.0" - shell-quote "^1.7.3" +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.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -lazy-universal-dotenv@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/lazy-universal-dotenv/-/lazy-universal-dotenv-4.0.0.tgz#0b220c264e89a042a37181a4928cdd298af73422" - integrity sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg== - dependencies: - app-root-dir "^1.0.2" - dotenv "^16.0.0" - dotenv-expand "^10.0.0" +ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz" - integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== +init-package-json@^2.0.2: + version "2.0.5" + resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.5.tgz" + integrity sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA== dependencies: - invert-kv "^1.0.0" + npm-package-arg "^8.1.5" + promzard "^0.3.0" + read "~1.0.1" + read-package-json "^4.1.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "^3.0.0" -lerna@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/lerna/-/lerna-4.0.0.tgz" - integrity sha512-DD/i1znurfOmNJb0OBw66NmNqiM8kF6uIrzrJ0wGE3VNdzeOhz9ziWLYiRaZDGGwgbcjOo6eIfcx9O5Qynz+kg== +inquirer@^6.2.2: + version "6.5.2" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== dependencies: - "@lerna/add" "4.0.0" - "@lerna/bootstrap" "4.0.0" - "@lerna/changed" "4.0.0" - "@lerna/clean" "4.0.0" - "@lerna/cli" "4.0.0" - "@lerna/create" "4.0.0" - "@lerna/diff" "4.0.0" - "@lerna/exec" "4.0.0" - "@lerna/import" "4.0.0" - "@lerna/info" "4.0.0" - "@lerna/init" "4.0.0" - "@lerna/link" "4.0.0" - "@lerna/list" "4.0.0" - "@lerna/publish" "4.0.0" - "@lerna/run" "4.0.0" - "@lerna/version" "4.0.0" - import-local "^3.0.2" - npmlog "^4.1.2" + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" -less-loader@^11.1.0: - version "11.1.2" - resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-11.1.2.tgz#ff1ea68ce60347a0a1ec67f998ac1e56b204f6da" - integrity sha512-2bSaN2j13bUh/5BuwJKuY2DDWVmfBsS6oWRe8v1mGj7F0EpcL+WyWkDQVoEfsVRE4ac5/OuP44ZCaVsXWrQQ9A== +inquirer@^7.3.3: + version "7.3.3" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== dependencies: - klona "^2.0.6" + ansi-escapes "^4.2.1" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.19" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.6.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" -level-blobs@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/level-blobs/-/level-blobs-0.1.7.tgz#9ab9b97bb99f1edbf9f78a3433e21ed56386bdaf" - integrity sha512-n0iYYCGozLd36m/Pzm206+brIgXP8mxPZazZ6ZvgKr+8YwOZ8/PPpYC5zMUu2qFygRN8RO6WC/HH3XWMW7RMVg== +internal-slot@^1.0.3, internal-slot@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz" + integrity sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ== dependencies: - level-peek "1.0.6" - once "^1.3.0" - readable-stream "^1.0.26-4" + get-intrinsic "^1.1.3" + has "^1.0.3" + side-channel "^1.0.4" -level-codec@^9.0.0: - version "9.0.2" - resolved "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz" - integrity sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ== - dependencies: - buffer "^5.6.0" +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -level-codec@~7.0.0: - 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== +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== -level-concat-iterator@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz#5235b1f744bc34847ed65a50548aa88d22e881cf" - integrity sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ== +invariant@2, invariant@2.2.4, invariant@^2.2.2: + version "2.2.4" + resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: - catering "^2.1.0" + loose-envify "^1.0.0" -level-concat-iterator@~2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz" - integrity sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw== +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" + integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== -level-errors@^1.0.3: - version "1.1.2" - resolved "https://registry.npmjs.org/level-errors/-/level-errors-1.1.2.tgz" - integrity sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w== +io-ts@1.10.4: + version "1.10.4" + resolved "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz" + integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== dependencies: - errno "~0.1.1" + fp-ts "^1.0.0" -level-errors@^2.0.0, level-errors@~2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz" - integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw== - dependencies: - errno "~0.1.1" +ip@^1.1.5: + version "1.1.8" + resolved "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz" + integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== -level-errors@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-3.0.1.tgz#4bed48a33108cd83b0e39fdf9bbd84e96fbbef9f" - integrity sha512-tqTL2DxzPDzpwl0iV5+rBCv65HWbHp6eutluHNcVIftKZlQN//b6GEnZDM2CvGZvzGYMwyPtYppYnydBQd2SMQ== +ip@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" + integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== -level-errors@~1.0.3: - version "1.0.5" - resolved "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz" - integrity sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig== - dependencies: - errno "~0.1.1" +ipaddr.js@1.9.1: + 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== -level-filesystem@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/level-filesystem/-/level-filesystem-1.2.0.tgz#a00aca9919c4a4dfafdca6a8108d225aadff63b3" - integrity sha512-PhXDuCNYpngpxp3jwMT9AYBMgOvB6zxj3DeuIywNKmZqFj2djj9XfT2XDVslfqmo0Ip79cAd3SBy3FsfOZPJ1g== - dependencies: - concat-stream "^1.4.4" - errno "^0.1.1" - fwd-stream "^1.0.4" - level-blobs "^0.1.7" - level-peek "^1.0.6" - level-sublevel "^5.2.0" - octal "^1.0.0" - once "^1.3.0" - xtend "^2.2.0" +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== + dependencies: + kind-of "^3.0.2" -level-fix-range@2.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/level-fix-range/-/level-fix-range-2.0.0.tgz#c417d62159442151a19d9a2367868f1724c2d548" - integrity sha512-WrLfGWgwWbYPrHsYzJau+5+te89dUbENBg3/lsxOs4p2tYOhCHjbgXxBAj4DFqp3k/XBwitcRXoCh8RoCogASA== +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== dependencies: - clone "~0.1.9" + kind-of "^6.0.0" -level-fix-range@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/level-fix-range/-/level-fix-range-1.0.2.tgz#bf15b915ae36d8470c821e883ddf79cd16420828" - integrity sha512-9llaVn6uqBiSlBP+wKiIEoBa01FwEISFgHSZiyec2S0KpyLUkGR4afW/FCZ/X8y+QJvzS0u4PGOlZDdh1/1avQ== +is-alphabetical@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz" + integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== -"level-hooks@>=4.4.0 <5": - version "4.5.0" - resolved "https://registry.yarnpkg.com/level-hooks/-/level-hooks-4.5.0.tgz#1b9ae61922930f3305d1a61fc4d83c8102c0dd93" - integrity sha512-fxLNny/vL/G4PnkLhWsbHnEaRi+A/k8r5EH/M77npZwYL62RHi2fV0S824z3QdpAk6VTgisJwIRywzBHLK4ZVA== +is-alphanumerical@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz" + integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== dependencies: - string-range "~1.2" + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" -level-iterator-stream@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-2.0.3.tgz" - integrity sha512-I6Heg70nfF+e5Y3/qfthJFexhRw/Gi3bIymCoXAlijZdAcLaPuWSJs3KXyTYf23ID6g0o2QF62Yh+grOXY3Rig== +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== dependencies: - inherits "^2.0.1" - readable-stream "^2.0.5" - xtend "^4.0.0" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -level-iterator-stream@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-5.0.0.tgz#85b3438e1b4c54ce5aa8c0eb973cfb628117df9e" - integrity sha512-wnb1+o+CVFUDdiSMR/ZymE2prPs3cjVLlXuDeSq9Zb8o032XrabGEXcTCsBxprAtseO3qvFeGzh6406z9sOTRA== +is-array-buffer@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz" + integrity sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ== dependencies: - inherits "^2.0.4" - readable-stream "^3.4.0" + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-typed-array "^1.1.10" -level-iterator-stream@~1.3.0: - version "1.3.1" - resolved "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz" - integrity sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw== - dependencies: - inherits "^2.0.1" - level-errors "^1.0.3" - readable-stream "^1.0.33" - xtend "^4.0.0" +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== -level-iterator-stream@~3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-3.0.1.tgz" - integrity sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g== +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== dependencies: - inherits "^2.0.1" - readable-stream "^2.3.6" - xtend "^4.0.0" + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" -level-iterator-stream@~4.0.0: - version "4.0.2" - resolved "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz" - integrity sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q== +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== dependencies: - inherits "^2.0.4" - readable-stream "^3.4.0" - xtend "^4.0.2" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -level-js@^2.1.3: - version "2.2.4" - resolved "https://registry.yarnpkg.com/level-js/-/level-js-2.2.4.tgz#bc055f4180635d4489b561c9486fa370e8c11697" - integrity sha512-lZtjt4ZwHE00UMC1vAb271p9qzg8vKlnDeXfIesH3zL0KxhHRDjClQLGLWhyR0nK4XARnd4wc/9eD1ffd4PshQ== +is-buffer@^1.1.5, is-buffer@~1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-buffer@^2.0.0, is-buffer@^2.0.5, is-buffer@~2.0.3: + version "2.0.5" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-builtin-module@^3.1.0, is-builtin-module@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" + integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== dependencies: - abstract-leveldown "~0.12.0" - idb-wrapper "^1.5.0" - isbuffer "~0.0.0" - ltgt "^2.1.2" - typedarray-to-buffer "~1.0.0" - xtend "~2.1.2" + builtin-modules "^3.3.0" -level-js@^5.0.0: - version "5.0.2" - resolved "https://registry.npmjs.org/level-js/-/level-js-5.0.2.tgz" - integrity sha512-SnBIDo2pdO5VXh02ZmtAyPP6/+6YTJg2ibLtl9C34pWvmtMEmRTWpra+qO/hifkUtBTOtfx6S9vLDjBsBK4gRg== +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + 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@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== dependencies: - abstract-leveldown "~6.2.3" - buffer "^5.5.0" - inherits "^2.0.3" - ltgt "^2.1.2" + ci-info "^2.0.0" -level-mem@^3.0.1: +is-ci@^3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/level-mem/-/level-mem-3.0.1.tgz" - integrity sha512-LbtfK9+3Ug1UmvvhR2DqLqXiPW1OJ5jEh0a3m9ZgAipiwpSxGj/qaVVy54RG5vAQN1nCuXqjvprCuKSCxcJHBg== + resolved "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz" + integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== dependencies: - level-packager "~4.0.0" - memdown "~3.0.0" + ci-info "^3.2.0" -level-mem@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/level-mem/-/level-mem-5.0.1.tgz" - integrity sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg== +is-core-module@^2.11.0: + version "2.12.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" + integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== dependencies: - level-packager "^5.0.3" - memdown "^5.0.0" + has "^1.0.3" -level-packager@^5.0.3, level-packager@^5.1.0: - version "5.1.1" - resolved "https://registry.npmjs.org/level-packager/-/level-packager-5.1.1.tgz" - integrity sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ== +is-core-module@^2.4.0, is-core-module@^2.5.0, is-core-module@^2.8.1, is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== dependencies: - encoding-down "^6.3.0" - levelup "^4.3.2" + has "^1.0.3" -level-packager@~4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/level-packager/-/level-packager-4.0.1.tgz" - integrity sha512-svCRKfYLn9/4CoFfi+d8krOtrp6RoX8+xm0Na5cgXMqSyRru0AnDYdLl+YI8u1FyS6gGZ94ILLZDE5dh2but3Q== +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== dependencies: - encoding-down "~5.0.0" - levelup "^3.0.0" + kind-of "^3.0.2" -level-peek@1.0.6, level-peek@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/level-peek/-/level-peek-1.0.6.tgz#bec51c72a82ee464d336434c7c876c3fcbcce77f" - integrity sha512-TKEzH5TxROTjQxWMczt9sizVgnmJ4F3hotBI48xCTYvOKd/4gA/uY0XjKkhJFo6BMic8Tqjf6jFMLWeg3MAbqQ== +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== dependencies: - level-fix-range "~1.0.2" + kind-of "^6.0.0" -level-post@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/level-post/-/level-post-1.0.7.tgz" - integrity sha512-PWYqG4Q00asOrLhX7BejSajByB4EmG2GaKHfj3h5UmmZ2duciXLPGYWIjBzLECFWUGOZWlm5B20h/n3Gs3HKew== +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== dependencies: - ltgt "^2.1.2" + has-tostringtag "^1.0.0" -level-sublevel@6.6.4: - version "6.6.4" - resolved "https://registry.npmjs.org/level-sublevel/-/level-sublevel-6.6.4.tgz" - integrity sha512-pcCrTUOiO48+Kp6F1+UAzF/OtWqLcQVTVF39HLdZ3RO8XBoXt+XVPKZO1vVr1aUoxHZA9OtD2e1v7G+3S5KFDA== +is-decimal@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz" + integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== dependencies: - bytewise "~1.1.0" - level-codec "^9.0.0" - level-errors "^2.0.0" - level-iterator-stream "^2.0.3" - ltgt "~2.1.1" - pull-defer "^0.2.2" - pull-level "^2.0.3" - pull-stream "^3.6.8" - typewiselite "~1.0.0" - xtend "~4.0.0" + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" -level-sublevel@^5.2.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/level-sublevel/-/level-sublevel-5.2.3.tgz#744c12c72d2e72be78dde3b9b5cd84d62191413a" - integrity sha512-tO8jrFp+QZYrxx/Gnmjawuh1UBiifpvKNAcm4KCogesWr1Nm2+ckARitf+Oo7xg4OHqMW76eAqQ204BoIlscjA== +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== dependencies: - level-fix-range "2.0" - level-hooks ">=4.4.0 <5" - string-range "~1.2.1" - xtend "~2.0.4" + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" -level-supports@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-2.1.0.tgz#9af908d853597ecd592293b2fad124375be79c5f" - integrity sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA== +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" + integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== -level-supports@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz" - integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== -level-supports@~1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz" - integrity sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg== - dependencies: - xtend "^4.0.2" +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== -level-transcoder@^1.0.1: +is-extendable@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz" - integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w== - dependencies: - buffer "^6.0.3" - module-error "^1.0.1" - -level-ws@0.0.0: - 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== + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: - readable-stream "~1.0.15" - xtend "~2.1.1" + is-plain-object "^2.0.4" -level-ws@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/level-ws/-/level-ws-1.0.0.tgz" - integrity sha512-RXEfCmkd6WWFlArh3X8ONvQPm8jNpfA0s/36M4QzLqrLEIt1iJE9WBHLZ5vZJK6haMjJPJGJCQWfjMNnRcq/9Q== - dependencies: - inherits "^2.0.3" - readable-stream "^2.2.8" - xtend "^4.0.1" +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -level-ws@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/level-ws/-/level-ws-2.0.0.tgz" - integrity sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA== - dependencies: - inherits "^2.0.3" - readable-stream "^3.1.0" - xtend "^4.0.1" +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== -level@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/level/-/level-6.0.1.tgz" - integrity sha512-psRSqJZCsC/irNhfHzrVZbmPYXDcEYhA5TVNwr+V92jF44rbf86hqGp8fiT702FyiArScYIlPSBTDUASCVNSpw== - dependencies: - level-js "^5.0.0" - level-packager "^5.1.0" - leveldown "^5.4.0" +is-fn@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-fn/-/is-fn-1.0.0.tgz" + integrity sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg== -level@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/level/-/level-8.0.0.tgz" - integrity sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ== +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== dependencies: - browser-level "^1.0.1" - classic-level "^1.2.0" + number-is-nan "^1.0.0" -leveldown@^5.4.0: - version "5.6.0" - resolved "https://registry.npmjs.org/leveldown/-/leveldown-5.6.0.tgz" - integrity sha512-iB8O/7Db9lPaITU1aA2txU/cBEXAt4vWwKQRrrWuS6XDgbP4QZGj9BL2aNbwb002atoQ/lIotJkfyzz+ygQnUQ== - dependencies: - abstract-leveldown "~6.2.1" - napi-macros "~2.0.0" - node-gyp-build "~4.1.0" +is-fullwidth-code-point@^2.0.0: + 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== -levelup@3.1.1, levelup@^3.0.0: - version "3.1.1" - resolved "https://registry.npmjs.org/levelup/-/levelup-3.1.1.tgz" - integrity sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg== - dependencies: - deferred-leveldown "~4.0.0" - level-errors "~2.0.0" - level-iterator-stream "~3.0.0" - xtend "~4.0.0" +is-fullwidth-code-point@^3.0.0: + 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== -levelup@^0.18.2: - version "0.18.6" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-0.18.6.tgz#e6a01cb089616c8ecc0291c2a9bd3f0c44e3e5eb" - integrity sha512-uB0auyRqIVXx+hrpIUtol4VAPhLRcnxcOsd2i2m6rbFIDarO5dnrupLOStYYpEcu8ZT087Z9HEuYw1wjr6RL6Q== - dependencies: - bl "~0.8.1" - deferred-leveldown "~0.2.0" - errno "~0.1.1" - prr "~0.0.0" - readable-stream "~1.0.26" - semver "~2.3.1" - xtend "~3.0.0" +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== -levelup@^1.2.1: - version "1.3.9" - resolved "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz" - integrity sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ== +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== 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" + has-tostringtag "^1.0.0" -levelup@^4.3.2: - version "4.4.0" - resolved "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz" - integrity sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ== +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.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: - deferred-leveldown "~5.3.0" - level-errors "~2.0.0" - level-iterator-stream "~4.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" + is-extglob "^2.1.1" -levelup@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-5.1.1.tgz#9f99699f414ac084a3f8a28fc262a1f49cd7a52c" - integrity sha512-0mFCcHcEebOwsQuk00WJwjLI6oCjbBuEYdh/RaRqhjnyVlzqf41T1NnDtCedumZ56qyIh8euLFDqV1KfzTAVhg== - dependencies: - catering "^2.0.0" - deferred-leveldown "^7.0.0" - level-errors "^3.0.1" - level-iterator-stream "^5.0.0" - level-supports "^2.0.1" - queue-microtask "^1.2.3" +is-hex-prefixed@1.0.0: + 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== -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +is-hexadecimal@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz" + integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" - integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== +is-lower-case@^1.1.0: + version "1.1.3" + resolved "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz" + integrity sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA== dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" + lower-case "^1.1.0" -libnpmaccess@^4.0.1: - version "4.0.3" - resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.3.tgz" - integrity sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ== +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: - aproba "^2.0.0" - minipass "^3.1.1" - npm-package-arg "^8.1.2" - npm-registry-fetch "^11.0.0" + has-tostringtag "^1.0.0" -libnpmpublish@^4.0.0: - version "4.0.2" - resolved "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-4.0.2.tgz" - integrity sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw== +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== dependencies: - normalize-package-data "^3.0.2" - npm-package-arg "^8.1.2" - npm-registry-fetch "^11.0.0" - semver "^7.1.3" - ssri "^8.0.1" + kind-of "^3.0.2" -lilconfig@^2.0.3, lilconfig@^2.0.5, lilconfig@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" - integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== +is-obj@^1.0.1: + 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== -linkify-it@^3.0.1: +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-inside@^3.0.3: version "3.0.3" - resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz" - integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== - dependencies: - uc.micro "^1.0.1" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -linkify-it@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-4.0.1.tgz#01f1d5e508190d06669982ba31a7d9f56a5751ec" - integrity sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw== - dependencies: - uc.micro "^1.0.1" +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== -lint-staged@11.0.0: - version "11.0.0" - resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-11.0.0.tgz" - integrity sha512-3rsRIoyaE8IphSUtO1RVTFl1e0SLBtxxUOPBtHxQgBHS5/i6nqvjcUfNioMa4BU9yGnPzbO+xkfLtXtxBpCzjw== - dependencies: - chalk "^4.1.1" - cli-truncate "^2.1.0" - commander "^7.2.0" - cosmiconfig "^7.0.0" - debug "^4.3.1" - dedent "^0.7.0" - enquirer "^2.3.6" - execa "^5.0.0" - listr2 "^3.8.2" - log-symbols "^4.1.0" - micromatch "^4.0.4" - normalize-path "^3.0.0" - please-upgrade-node "^3.2.0" - string-argv "0.3.1" - stringify-object "^3.3.0" +is-plain-obj@^2.0.0, is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -listr2@^3.8.2: - version "3.14.0" - resolved "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz" - integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== 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" + isobject "^3.0.1" -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz" - integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" - integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== +is-regex@^1.0.4, is-regex@^1.1.4, is-regex@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -load-json-file@^6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz" - integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" + integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== + +is-shared-array-buffer@^1.0.2: + 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== dependencies: - graceful-fs "^4.1.15" - parse-json "^5.0.0" - strip-bom "^4.0.0" - type-fest "^0.6.0" + call-bind "^1.0.2" -load-yaml-file@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz" - integrity sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw== +is-ssh@^1.3.0: + version "1.4.0" + resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz" + integrity sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== dependencies: - graceful-fs "^4.1.5" - js-yaml "^3.13.0" - pify "^4.0.1" - strip-bom "^3.0.0" + protocols "^2.0.1" -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== +is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -loader-utils@^1.2.3: - version "1.4.2" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" - integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" + has-tostringtag "^1.0.0" -loader-utils@^2.0.0, loader-utils@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" - integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== +is-subdir@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz" + integrity sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw== dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" + better-path-resolve "1.0.0" -loader-utils@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" - integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" - integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== +is-text-path@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz" + integrity sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" + text-extensions "^1.0.0" -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== +is-typed-array@^1.1.10, is-typed-array@^1.1.3, is-typed-array@^1.1.9: + 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== dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" + 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" -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-upper-case@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz" + integrity sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw== dependencies: - p-locate "^4.1.0" + upper-case "^1.1.0" -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== +is-url@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" + integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: - p-locate "^5.0.0" + call-bind "^1.0.2" -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz" - integrity sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA== +is-windows@^1.0.0, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -lodash.assign@^4.0.3, lodash.assign@^4.0.6: - version "4.2.0" - resolved "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz" - integrity sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw== +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== -lodash.flatten@^4.4.0: - version "4.4.0" - resolved "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz" - integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -lodash.flattendeep@^4.4.0: - version "4.4.0" - resolved "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz" - integrity sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ== +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== + dependencies: + isarray "1.0.0" -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" - integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" - integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== -lodash.isequalwith@^4.4.0: - version "4.4.0" - resolved "https://registry.npmjs.org/lodash.isequalwith/-/lodash.isequalwith-4.4.0.tgz" - integrity sha512-dcZON0IalGBpRmJBmMkaoV7d3I80R2O+FrzsZyHdNSFrANq/cgDqKQNmAHE8UEj4+QYWwwhkQOVdLHiAopzlsQ== +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + 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== -lodash.ismatch@^4.4.0: - version "4.4.0" - resolved "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz" - integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== +istanbul-lib-hook@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz" + integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ== + dependencies: + append-transform "^2.0.0" -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" - integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== +istanbul-lib-instrument@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== +istanbul-lib-processinfo@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz" + integrity sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg== + dependencies: + archy "^1.0.0" + cross-spawn "^7.0.3" + istanbul-lib-coverage "^3.2.0" + p-map "^3.0.0" + rimraf "^3.0.0" + uuid "^8.3.2" -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" - integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== +istanbul-lib-source-maps@^4.0.0: + 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== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" -lodash.startcase@^4.4.0: - version "4.4.0" - resolved "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz" - integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== +istanbul-reports@^3.0.2: + version "3.1.5" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" -lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== +istanbul@^0.4.5: + version "0.4.5" + resolved "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz" + integrity sha512-nMtdn4hvK0HjUlzr1DrKSUY8ychprt8dzHOgY2KXsIhHu5PuQQEOTM27gV9Xblyon7aUH/TSFIjRHEODF/FRPg== dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" + abbrev "1.0.x" + async "1.x" + escodegen "1.8.x" + esprima "2.7.x" + glob "^5.0.15" + handlebars "^4.0.1" + js-yaml "3.x" + mkdirp "0.5.x" + nopt "3.x" + once "1.x" + resolve "1.1.x" + supports-color "^3.1.0" + which "^1.1.1" + wordwrap "^1.0.0" + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +joycon@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz" + integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== -lodash.templatesettings@^4.0.0: +js-sdsl@^4.1.4: version "4.2.0" - resolved "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" + resolved "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz" + integrity sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ== -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" - integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== +js-sha3@0.5.5: + version "0.5.5" + resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.5.tgz" + integrity sha512-yLLwn44IVeunwjpDVTDZmQeVbB0h+dZpY2eO68B/Zik8hu6dH+rKeLxwua79GGIvW6xr8NBAcrtiUbYrTjEFTA== -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" - integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== +js-sha3@0.5.7, js-sha3@^0.5.7: + version "0.5.7" + resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz" + integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== -lodash@4.17.20: - version "4.17.20" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +js-sha3@0.8.0, js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== -lodash@4.17.21, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -log-symbols@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz" - integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== - dependencies: - chalk "^2.4.2" +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" + integrity sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== -log-symbols@4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz" - integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== +js-yaml@3.13.1: + version "3.13.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== dependencies: - chalk "^4.0.0" + argparse "^1.0.7" + esprima "^4.0.0" -log-symbols@4.1.0, log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== +js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.14.0, js-yaml@^3.6.1: + version "3.14.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" + argparse "^1.0.7" + esprima "^4.0.0" -log-update@^4.0.0: +js-yaml@4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz" + integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" - -longest-streak@^2.0.0: - version "2.0.4" - resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz" - integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== - -looper@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/looper/-/looper-2.0.0.tgz" - integrity sha512-6DzMHJcjbQX/UPHc1rRCBfKlLwDkvuGZ715cIR36wSdYqWXFT35uLXq5P/2orl3tz+t+VOVPxw4yPinQlUDGDQ== - -looper@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/looper/-/looper-3.0.0.tgz" - integrity sha512-LJ9wplN/uSn72oJRsXTx+snxPet5c8XiZmOKCm906NVYu+ag6SB6vUcnJcWxgnl2NfbIyeobAn7Bwv6xRj2XJg== + argparse "^2.0.1" -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== +js-yaml@4.1.0, js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: - js-tokens "^3.0.0 || ^4.0.0" + argparse "^2.0.1" -loupe@^2.3.1: - version "2.3.6" - resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz" - integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA== - dependencies: - get-func-name "^2.0.0" +jsbi@^3.1.1, jsbi@^3.1.4: + version "3.2.5" + resolved "https://registry.npmjs.org/jsbi/-/jsbi-3.2.5.tgz" + integrity sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ== -lower-case-first@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz" - integrity sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA== - dependencies: - lower-case "^1.1.2" +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== -lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2: - version "1.1.4" - resolved "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz" - integrity sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA== +jsdoc-type-pratt-parser@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz#136f0571a99c184d84ec84662c45c29ceff71114" + integrity sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ== -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz" + integrity sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA== -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== -lowercase-keys@^3.0.0: +json-buffer@3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz" - integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" + integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== -lru-cache@5.1.1, lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -lru-cache@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz" - integrity sha512-91gyOKTc2k66UG6kHiH4h3S2eltcPwE1STVfMYC/NG+nZwf8IIuiamfmpGZjpbbxzSyEJaLC0tNSmhjlQUTJow== - dependencies: - pseudomap "^1.0.1" +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + 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@^3.4.0, json-rpc-engine@^3.6.0: + version "3.8.0" + resolved "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-3.8.0.tgz" + integrity sha512-6QNcvm2gFuuK4TKU1uwfH0Qd/cOSb9c1lls0gbnIhciktIUQJwz6NQNAW4B1KiGPenv7IKu97V222Yo1bNhGuA== dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" + async "^2.0.1" + babel-preset-env "^1.7.0" + babelify "^7.3.0" + json-rpc-error "^2.0.0" + promise-to-callback "^1.0.0" + safe-event-emitter "^1.0.1" -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== +json-rpc-error@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/json-rpc-error/-/json-rpc-error-2.0.0.tgz" + integrity sha512-EwUeWP+KgAZ/xqFpaP6YDAXMtCJi+o/QQpCQFIYyxr01AdADi2y413eM8hSqJcoQym9WMePAJWoaODEJufC4Ug== dependencies: - yallist "^4.0.0" + inherits "^2.0.1" -lru-cache@^7.7.1: - version "7.18.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" - integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== +json-rpc-random-id@^1.0.0: + 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== -"lru-cache@^9.1.1 || ^10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" - integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== +json-schema-traverse@^0.4.1: + 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== -lru_map@^0.3.3: - version "0.3.3" - resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz" - integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -ltgt@^2.1.2, ltgt@~2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz" - integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA== +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== -ltgt@~2.1.1: - version "2.1.3" - resolved "https://registry.npmjs.org/ltgt/-/ltgt-2.1.3.tgz" - integrity sha512-5VjHC5GsENtIi5rbJd+feEpDKhfr7j0odoUR2Uh978g+2p93nd5o34cTjQWohXsPsCZeqoDnIqEf88mPCe0Pfw== +json-stable-stringify-without-jsonify@^1.0.1: + 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== + +json-stable-stringify@^1.0.1: + 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== + dependencies: + jsonify "^0.0.1" -lunr@^2.3.9: - version "2.3.9" - resolved "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz" - integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -lz-string@^1.4.4: - version "1.5.0" - resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz" - integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz" + integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== -magic-string@^0.25.0, magic-string@^0.25.7: - version "0.25.9" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" - integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== +json5@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: - sourcemap-codec "^1.4.8" + minimist "^1.2.0" -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" +json5@^2.1.0, json5@^2.1.3, json5@^2.2.2: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" +jsonc-parser@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz" + integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== + optionalDependencies: + graceful-fs "^4.1.6" -make-fetch-happen@^10.0.3: - version "10.2.1" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" - integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== - dependencies: - agentkeepalive "^4.2.1" - cacache "^16.1.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^7.7.1" - minipass "^3.1.6" - minipass-collect "^1.0.2" - minipass-fetch "^2.0.3" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - promise-retry "^2.0.1" - socks-proxy-agent "^7.0.0" - ssri "^9.0.0" +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" -make-fetch-happen@^8.0.9: - version "8.0.14" - resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz" - integrity sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ== +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: - agentkeepalive "^4.1.3" - cacache "^15.0.5" - http-cache-semantics "^4.1.0" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^6.0.0" - minipass "^3.1.3" - minipass-collect "^1.0.2" - minipass-fetch "^1.3.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - promise-retry "^2.0.1" - socks-proxy-agent "^5.0.0" - ssri "^8.0.0" + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" -make-fetch-happen@^9.0.1: - version "9.1.0" - resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz" - integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== - dependencies: - agentkeepalive "^4.1.3" - cacache "^15.2.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^6.0.0" - minipass "^3.1.3" - minipass-collect "^1.0.2" - minipass-fetch "^1.3.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.2" - promise-retry "^2.0.1" - socks-proxy-agent "^6.0.0" - ssri "^8.0.0" +jsonify@^0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" +jsonparse@^1.2.0, jsonparse@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" - integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== +jsonschema@^1.2.4: + version "1.4.1" + resolved "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz" + integrity sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ== -map-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" - integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" -map-obj@^4.0.0: - version "4.3.0" - resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz" - integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.3.3" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz" + integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== + dependencies: + array-includes "^3.1.5" + object.assign "^4.1.3" -map-or-similar@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08" - integrity sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg== +just-extend@^4.0.2: + version "4.2.1" + resolved "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz" + integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg== -map-stream@0.0.7: - version "0.0.7" - resolved "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz" - integrity sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ== +keccak@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz" + integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" - integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== +keccak@^3.0.0, keccak@^3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz" + integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== dependencies: - object-visit "^1.0.0" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" -markdown-it@12.3.2: - version "12.3.2" - resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz" - integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== dependencies: - argparse "^2.0.1" - entities "~2.1.0" - linkify-it "^3.0.1" - mdurl "^1.0.1" - uc.micro "^1.0.5" + json-buffer "3.0.0" -markdown-it@13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.1.tgz#c6ecc431cacf1a5da531423fc6a42807814af430" - integrity sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q== +keyv@^4.0.0: + version "4.5.2" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz" + integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== dependencies: - argparse "^2.0.1" - entities "~3.0.1" - linkify-it "^4.0.1" - mdurl "^1.0.1" - uc.micro "^1.0.5" + json-buffer "3.0.1" -markdown-table@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz" - integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== + dependencies: + is-buffer "^1.1.5" -markdown-table@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz" - integrity sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A== +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== dependencies: - repeat-string "^1.0.0" + is-buffer "^1.1.5" -markdown-to-jsx@^7.1.8: - version "7.2.1" - resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.2.1.tgz#87061fd3176ad926ef3d99493e5c57f6335e0c51" - integrity sha512-9HrdzBAo0+sFz9ZYAGT5fB8ilzTW+q6lPocRxrIesMO+aB40V9MgFfbfMXxlGjf22OpRy+IXlvVaQenicdpgbg== +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== -markdownlint-cli2-formatter-default@0.0.3: - version "0.0.3" - resolved "https://registry.npmjs.org/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.3.tgz" - integrity sha512-QEAJitT5eqX1SNboOD+SO/LNBpu4P4je8JlR02ug2cLQAqmIhh8IJnSK7AcaHBHhNADqdGydnPpQOpsNcEEqCw== +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -markdownlint-cli2@0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.4.0.tgz" - integrity sha512-EcwP5tAbyzzL3ACI0L16LqbNctmh8wNX56T+aVvIxWyTAkwbYNx2V7IheRkXS3mE7R/pnaApZ/RSXcXuzRVPjg== +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== dependencies: - globby "12.1.0" - markdownlint "0.25.1" - markdownlint-cli2-formatter-default "0.0.3" - markdownlint-rule-helpers "0.16.0" - micromatch "4.0.4" - strip-json-comments "4.0.0" - yaml "1.10.2" + graceful-fs "^4.1.11" -markdownlint-micromark@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/markdownlint-micromark/-/markdownlint-micromark-0.1.5.tgz#a23400b101be32cd4336f2b6b4c47da31825524c" - integrity sha512-HvofNU4QCvfUCWnocQP1IAWaqop5wpWrB0mKB6SSh0fcpV0PdmQNS6tdUuFew1utpYlUvYYzz84oDkrD76GB9A== +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz" + integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== + optionalDependencies: + graceful-fs "^4.1.9" -markdownlint-rule-helpers@0.16.0: - version "0.16.0" - resolved "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.16.0.tgz" - integrity sha512-oEacRUVeTJ5D5hW1UYd2qExYI0oELdYK72k1TKGvIeYJIbqQWAz476NAc7LNixSySUhcNl++d02DvX0ccDk9/w== +kleur@^4.1.4: + version "4.1.5" + resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== -markdownlint@0.25.1: - version "0.25.1" - resolved "https://registry.npmjs.org/markdownlint/-/markdownlint-0.25.1.tgz" - integrity sha512-AG7UkLzNa1fxiOv5B+owPsPhtM4D6DoODhsJgiaNg1xowXovrYgOnLqAgOOFQpWOlHFVQUzjMY5ypNNTeov92g== +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz" + integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== dependencies: - markdown-it "12.3.2" + invert-kv "^1.0.0" -markdownlint@^0.29.0: - version "0.29.0" - resolved "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.29.0.tgz#9647478b7d5485965c557502fe54ee5a550033f2" - integrity sha512-ASAzqpODstu/Qsk0xW5BPgWnK/qjpBQ4e7IpsSvvFXcfYIjanLTdwFRJK1SIEEh0fGSMKXcJf/qhaZYHyME0wA== +lerna@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/lerna/-/lerna-4.0.0.tgz" + integrity sha512-DD/i1znurfOmNJb0OBw66NmNqiM8kF6uIrzrJ0wGE3VNdzeOhz9ziWLYiRaZDGGwgbcjOo6eIfcx9O5Qynz+kg== dependencies: - markdown-it "13.0.1" - markdownlint-micromark "0.1.5" + "@lerna/add" "4.0.0" + "@lerna/bootstrap" "4.0.0" + "@lerna/changed" "4.0.0" + "@lerna/clean" "4.0.0" + "@lerna/cli" "4.0.0" + "@lerna/create" "4.0.0" + "@lerna/diff" "4.0.0" + "@lerna/exec" "4.0.0" + "@lerna/import" "4.0.0" + "@lerna/info" "4.0.0" + "@lerna/init" "4.0.0" + "@lerna/link" "4.0.0" + "@lerna/list" "4.0.0" + "@lerna/publish" "4.0.0" + "@lerna/run" "4.0.0" + "@lerna/version" "4.0.0" + import-local "^3.0.2" + npmlog "^4.1.2" -marked-terminal@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/marked-terminal/-/marked-terminal-3.3.0.tgz" - integrity sha512-+IUQJ5VlZoAFsM5MHNT7g3RHSkA3eETqhRCdXv4niUMAKHQ7lb1yvAcuGPmm4soxhmtX13u4Li6ZToXtvSEH+A== +level-codec@^9.0.0: + version "9.0.2" + resolved "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz" + integrity sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ== dependencies: - ansi-escapes "^3.1.0" - cardinal "^2.1.1" - chalk "^2.4.1" - cli-table "^0.3.1" - node-emoji "^1.4.1" - supports-hyperlinks "^1.0.1" - -marked@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz" - integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg== - -marked@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" - integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A== + buffer "^5.6.0" -match-all@^1.2.6: - version "1.2.6" - resolved "https://registry.npmjs.org/match-all/-/match-all-1.2.6.tgz" - integrity sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ== +level-codec@~7.0.0: + 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== -mcl-wasm@^0.7.1: - version "0.7.9" - resolved "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz" - integrity sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ== +level-concat-iterator@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz#5235b1f744bc34847ed65a50548aa88d22e881cf" + integrity sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ== + dependencies: + catering "^2.1.0" -mcl-wasm@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-1.0.3.tgz" - integrity sha512-L8hexPDw02JEXscEm4pB2rvfAYRc4HIsssxcj+I1AGC4/LYFy9GyrmCgFC+CzxKtxuRQcuBi1RLw74MAzZ5V2Q== +level-concat-iterator@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz" + integrity sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw== -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== +level-errors@^1.0.3: + version "1.1.2" + resolved "https://registry.npmjs.org/level-errors/-/level-errors-1.1.2.tgz" + integrity sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w== dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" + errno "~0.1.1" -md5@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz" - integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== +level-errors@^2.0.0, level-errors@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz" + integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw== dependencies: - charenc "0.0.2" - crypt "0.0.2" - is-buffer "~1.1.6" + errno "~0.1.1" -mdast-util-definitions@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" - integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ== +level-errors@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-3.0.1.tgz#4bed48a33108cd83b0e39fdf9bbd84e96fbbef9f" + integrity sha512-tqTL2DxzPDzpwl0iV5+rBCv65HWbHp6eutluHNcVIftKZlQN//b6GEnZDM2CvGZvzGYMwyPtYppYnydBQd2SMQ== + +level-errors@~1.0.3: + version "1.0.5" + resolved "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz" + integrity sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig== dependencies: - unist-util-visit "^2.0.0" + errno "~0.1.1" -mdast-util-find-and-replace@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz" - integrity sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA== +level-iterator-stream@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-2.0.3.tgz" + integrity sha512-I6Heg70nfF+e5Y3/qfthJFexhRw/Gi3bIymCoXAlijZdAcLaPuWSJs3KXyTYf23ID6g0o2QF62Yh+grOXY3Rig== dependencies: - escape-string-regexp "^4.0.0" - unist-util-is "^4.0.0" - unist-util-visit-parents "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.0.5" + xtend "^4.0.0" -mdast-util-footnote@^0.1.0: - version "0.1.7" - resolved "https://registry.npmjs.org/mdast-util-footnote/-/mdast-util-footnote-0.1.7.tgz" - integrity sha512-QxNdO8qSxqbO2e3m09KwDKfWiLgqyCurdWTQ198NpbZ2hxntdc+VKS4fDJCmNWbAroUdYnSthu+XbZ8ovh8C3w== +level-iterator-stream@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-5.0.0.tgz#85b3438e1b4c54ce5aa8c0eb973cfb628117df9e" + integrity sha512-wnb1+o+CVFUDdiSMR/ZymE2prPs3cjVLlXuDeSq9Zb8o032XrabGEXcTCsBxprAtseO3qvFeGzh6406z9sOTRA== dependencies: - mdast-util-to-markdown "^0.6.0" - micromark "~2.11.0" + inherits "^2.0.4" + readable-stream "^3.4.0" -mdast-util-from-markdown@^0.8.0: - version "0.8.5" - resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz" - integrity sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ== +level-iterator-stream@~1.3.0: + version "1.3.1" + resolved "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz" + integrity sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw== dependencies: - "@types/mdast" "^3.0.0" - mdast-util-to-string "^2.0.0" - micromark "~2.11.0" - parse-entities "^2.0.0" - unist-util-stringify-position "^2.0.0" + inherits "^2.0.1" + level-errors "^1.0.3" + readable-stream "^1.0.33" + xtend "^4.0.0" -mdast-util-frontmatter@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz" - integrity sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ== +level-iterator-stream@~3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-3.0.1.tgz" + integrity sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g== dependencies: - micromark-extension-frontmatter "^0.2.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + xtend "^4.0.0" -mdast-util-gfm-autolink-literal@^0.1.0, mdast-util-gfm-autolink-literal@^0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz" - integrity sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A== +level-iterator-stream@~4.0.0: + version "4.0.2" + resolved "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz" + integrity sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q== dependencies: - ccount "^1.0.0" - mdast-util-find-and-replace "^1.1.0" - micromark "^2.11.3" + inherits "^2.0.4" + readable-stream "^3.4.0" + xtend "^4.0.2" -mdast-util-gfm-strikethrough@^0.2.0: - version "0.2.3" - resolved "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz" - integrity sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA== +level-js@^5.0.0: + version "5.0.2" + resolved "https://registry.npmjs.org/level-js/-/level-js-5.0.2.tgz" + integrity sha512-SnBIDo2pdO5VXh02ZmtAyPP6/+6YTJg2ibLtl9C34pWvmtMEmRTWpra+qO/hifkUtBTOtfx6S9vLDjBsBK4gRg== dependencies: - mdast-util-to-markdown "^0.6.0" + abstract-leveldown "~6.2.3" + buffer "^5.5.0" + inherits "^2.0.3" + ltgt "^2.1.2" -mdast-util-gfm-table@^0.1.0: - version "0.1.6" - resolved "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz" - integrity sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ== +level-mem@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/level-mem/-/level-mem-3.0.1.tgz" + integrity sha512-LbtfK9+3Ug1UmvvhR2DqLqXiPW1OJ5jEh0a3m9ZgAipiwpSxGj/qaVVy54RG5vAQN1nCuXqjvprCuKSCxcJHBg== dependencies: - markdown-table "^2.0.0" - mdast-util-to-markdown "~0.6.0" + level-packager "~4.0.0" + memdown "~3.0.0" -mdast-util-gfm-task-list-item@^0.1.0: - version "0.1.6" - resolved "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz" - integrity sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A== +level-mem@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/level-mem/-/level-mem-5.0.1.tgz" + integrity sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg== dependencies: - mdast-util-to-markdown "~0.6.0" + level-packager "^5.0.3" + memdown "^5.0.0" -mdast-util-gfm@^0.1.0: - version "0.1.2" - resolved "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz" - integrity sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ== +level-packager@^5.0.3, level-packager@^5.1.0: + version "5.1.1" + resolved "https://registry.npmjs.org/level-packager/-/level-packager-5.1.1.tgz" + integrity sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ== dependencies: - mdast-util-gfm-autolink-literal "^0.1.0" - mdast-util-gfm-strikethrough "^0.2.0" - mdast-util-gfm-table "^0.1.0" - mdast-util-gfm-task-list-item "^0.1.0" - mdast-util-to-markdown "^0.6.1" + encoding-down "^6.3.0" + levelup "^4.3.2" -mdast-util-to-markdown@^0.6.0, mdast-util-to-markdown@^0.6.1, mdast-util-to-markdown@~0.6.0: - version "0.6.5" - resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz" - integrity sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ== +level-packager@~4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/level-packager/-/level-packager-4.0.1.tgz" + integrity sha512-svCRKfYLn9/4CoFfi+d8krOtrp6RoX8+xm0Na5cgXMqSyRru0AnDYdLl+YI8u1FyS6gGZ94ILLZDE5dh2but3Q== dependencies: - "@types/unist" "^2.0.0" - longest-streak "^2.0.0" - mdast-util-to-string "^2.0.0" - parse-entities "^2.0.0" - repeat-string "^1.0.0" - zwitch "^1.0.0" + encoding-down "~5.0.0" + levelup "^3.0.0" -mdast-util-to-string@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527" - integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== +level-post@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/level-post/-/level-post-1.0.7.tgz" + integrity sha512-PWYqG4Q00asOrLhX7BejSajByB4EmG2GaKHfj3h5UmmZ2duciXLPGYWIjBzLECFWUGOZWlm5B20h/n3Gs3HKew== + dependencies: + ltgt "^2.1.2" -mdast-util-to-string@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz" - integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== +level-sublevel@6.6.4: + version "6.6.4" + resolved "https://registry.npmjs.org/level-sublevel/-/level-sublevel-6.6.4.tgz" + integrity sha512-pcCrTUOiO48+Kp6F1+UAzF/OtWqLcQVTVF39HLdZ3RO8XBoXt+XVPKZO1vVr1aUoxHZA9OtD2e1v7G+3S5KFDA== + dependencies: + bytewise "~1.1.0" + level-codec "^9.0.0" + level-errors "^2.0.0" + level-iterator-stream "^2.0.3" + ltgt "~2.1.1" + pull-defer "^0.2.2" + pull-level "^2.0.3" + pull-stream "^3.6.8" + typewiselite "~1.0.0" + xtend "~4.0.0" -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== +level-supports@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-2.1.0.tgz#9af908d853597ecd592293b2fad124375be79c5f" + integrity sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA== -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== +level-supports@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz" + integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== -mdurl@^1.0.1: +level-supports@~1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz" - integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -memdown@^1.0.0: - version "1.4.1" - resolved "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz" - integrity sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w== + resolved "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz" + integrity sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg== 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" + xtend "^4.0.2" -memdown@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/memdown/-/memdown-5.1.0.tgz" - integrity sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw== +level-transcoder@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz" + integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w== dependencies: - abstract-leveldown "~6.2.1" - functional-red-black-tree "~1.0.1" - immediate "~3.2.3" - inherits "~2.0.1" - ltgt "~2.2.0" - safe-buffer "~5.2.0" + buffer "^6.0.3" + module-error "^1.0.1" -memdown@~3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/memdown/-/memdown-3.0.0.tgz" - integrity sha512-tbV02LfZMWLcHcq4tw++NuqMO+FZX8tNJEiD2aNRm48ZZusVg5N8NART+dmBkepJVye986oixErf7jfXboMGMA== +level-ws@0.0.0: + 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== dependencies: - abstract-leveldown "~5.0.0" - functional-red-black-tree "~1.0.1" - immediate "~3.2.3" - inherits "~2.0.1" - ltgt "~2.2.0" - safe-buffer "~5.1.1" + readable-stream "~1.0.15" + xtend "~2.1.1" -memfs@^3.1.2, memfs@^3.4.1, memfs@^3.4.3: - version "3.5.2" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.5.2.tgz#3367cb58940e45224a7e377015b37f55a831b3ac" - integrity sha512-4kbWXbVZ+LU4XFDS2CuA7frnwz2HxCMB/0yOXc86q7aCQrfWKkL11t6al1e2CsVC7uhnBNTQ1TfUsAxVauO9IQ== +level-ws@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/level-ws/-/level-ws-1.0.0.tgz" + integrity sha512-RXEfCmkd6WWFlArh3X8ONvQPm8jNpfA0s/36M4QzLqrLEIt1iJE9WBHLZ5vZJK6haMjJPJGJCQWfjMNnRcq/9Q== dependencies: - fs-monkey "^1.0.3" - -memoize-one@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz" - integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== + inherits "^2.0.3" + readable-stream "^2.2.8" + xtend "^4.0.1" -memoizerific@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a" - integrity sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog== +level-ws@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/level-ws/-/level-ws-2.0.0.tgz" + integrity sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA== dependencies: - map-or-similar "^1.5.0" + inherits "^2.0.3" + readable-stream "^3.1.0" + xtend "^4.0.1" -memory-level@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz" - integrity sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og== +level@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/level/-/level-6.0.1.tgz" + integrity sha512-psRSqJZCsC/irNhfHzrVZbmPYXDcEYhA5TVNwr+V92jF44rbf86hqGp8fiT702FyiArScYIlPSBTDUASCVNSpw== dependencies: - abstract-level "^1.0.0" - functional-red-black-tree "^1.0.1" - module-error "^1.0.1" - -memorystream@^0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz" - integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== + level-js "^5.0.0" + level-packager "^5.1.0" + leveldown "^5.4.0" -meow@^6.0.0: - version "6.1.1" - resolved "https://registry.npmjs.org/meow/-/meow-6.1.1.tgz" - integrity sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg== +level@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/level/-/level-8.0.0.tgz" + integrity sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ== dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "^4.0.2" - normalize-package-data "^2.5.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.13.1" - yargs-parser "^18.1.3" + browser-level "^1.0.1" + classic-level "^1.2.0" -meow@^8.0.0: - version "8.1.2" - resolved "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz" - integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== +leveldown@^5.4.0: + version "5.6.0" + resolved "https://registry.npmjs.org/leveldown/-/leveldown-5.6.0.tgz" + integrity sha512-iB8O/7Db9lPaITU1aA2txU/cBEXAt4vWwKQRrrWuS6XDgbP4QZGj9BL2aNbwb002atoQ/lIotJkfyzz+ygQnUQ== dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.18.0" - yargs-parser "^20.2.3" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + abstract-leveldown "~6.2.1" + napi-macros "~2.0.0" + node-gyp-build "~4.1.0" -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== +levelup@3.1.1, levelup@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/levelup/-/levelup-3.1.1.tgz" + integrity sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg== + dependencies: + deferred-leveldown "~4.0.0" + level-errors "~2.0.0" + level-iterator-stream "~3.0.0" + xtend "~4.0.0" -merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +levelup@^1.2.1: + version "1.3.9" + resolved "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz" + 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" -merkle-patricia-tree@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-3.0.0.tgz" - integrity sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ== +levelup@^4.3.2: + version "4.4.0" + resolved "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz" + integrity sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ== dependencies: - async "^2.6.1" - ethereumjs-util "^5.2.0" - level-mem "^3.0.1" - level-ws "^1.0.0" - readable-stream "^3.0.6" - rlp "^2.0.0" - semaphore ">=1.0.1" + deferred-leveldown "~5.3.0" + level-errors "~2.0.0" + level-iterator-stream "~4.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" -merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: - 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== +levelup@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-5.1.1.tgz#9f99699f414ac084a3f8a28fc262a1f49cd7a52c" + integrity sha512-0mFCcHcEebOwsQuk00WJwjLI6oCjbBuEYdh/RaRqhjnyVlzqf41T1NnDtCedumZ56qyIh8euLFDqV1KfzTAVhg== 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" + catering "^2.0.0" + deferred-leveldown "^7.0.0" + level-errors "^3.0.1" + level-iterator-stream "^5.0.0" + level-supports "^2.0.1" + queue-microtask "^1.2.3" -merkle-patricia-tree@^4.0.0: - version "4.2.4" - resolved "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-4.2.4.tgz" - integrity sha512-eHbf/BG6eGNsqqfbLED9rIqbsF4+sykEaBn6OLNs71tjclbMcMOk1tEPmJKcNcNCLkvbpY/lwyOlizWsqPNo8w== +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== dependencies: - "@types/levelup" "^4.3.0" - ethereumjs-util "^7.1.4" - level-mem "^5.0.1" - level-ws "^2.0.0" - readable-stream "^3.6.0" - semaphore-async-await "^1.5.1" + prelude-ls "~1.1.2" + type-check "~0.3.2" -merkletreejs@^0.2.18, merkletreejs@^0.2.27: - version "0.2.32" - resolved "https://registry.npmjs.org/merkletreejs/-/merkletreejs-0.2.32.tgz" - integrity sha512-TostQBiwYRIwSE5++jGmacu3ODcKAgqb0Y/pnIohXS7sWxh1gCkSptbmF1a43faehRDpcHf7J/kv0Ml2D/zblQ== +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: - bignumber.js "^9.0.1" - buffer-reverse "^1.0.1" - crypto-js "^3.1.9-1" - treeify "^1.1.0" - web3-utils "^1.3.4" + prelude-ls "^1.2.1" + type-check "~0.4.0" -mersenne-twister@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mersenne-twister/-/mersenne-twister-1.1.0.tgz#f916618ee43d7179efcf641bec4531eb9670978a" - integrity sha512-mUYWsMKNrm4lfygPkL3OfGzOPTR2DBlTkBNHM//F6hGp8cLThY897crAlk3/Jo17LEOOjQUrNAx6DvgO77QJkA== +libnpmaccess@^4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.3.tgz" + integrity sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ== + dependencies: + aproba "^2.0.0" + minipass "^3.1.1" + npm-package-arg "^8.1.2" + npm-registry-fetch "^11.0.0" -methods@^1.1.2, methods@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== +libnpmpublish@^4.0.0: + version "4.0.2" + resolved "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-4.0.2.tgz" + integrity sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw== + dependencies: + normalize-package-data "^3.0.2" + npm-package-arg "^8.1.2" + npm-registry-fetch "^11.0.0" + semver "^7.1.3" + ssri "^8.0.1" -micro-ftch@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/micro-ftch/-/micro-ftch-0.3.1.tgz#6cb83388de4c1f279a034fb0cf96dfc050853c5f" - integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -micromark-extension-footnote@^0.3.0: - version "0.3.2" - resolved "https://registry.npmjs.org/micromark-extension-footnote/-/micromark-extension-footnote-0.3.2.tgz" - integrity sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ== +linkify-it@^3.0.1: + version "3.0.3" + resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz" + integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== dependencies: - micromark "~2.11.0" + uc.micro "^1.0.1" -micromark-extension-frontmatter@^0.2.0: - version "0.2.2" - resolved "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz" - integrity sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A== +linkify-it@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-4.0.1.tgz#01f1d5e508190d06669982ba31a7d9f56a5751ec" + integrity sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw== dependencies: - fault "^1.0.0" + uc.micro "^1.0.1" -micromark-extension-gfm-autolink-literal@~0.5.0: - version "0.5.7" - resolved "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz" - integrity sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw== +lint-staged@11.0.0: + version "11.0.0" + resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-11.0.0.tgz" + integrity sha512-3rsRIoyaE8IphSUtO1RVTFl1e0SLBtxxUOPBtHxQgBHS5/i6nqvjcUfNioMa4BU9yGnPzbO+xkfLtXtxBpCzjw== dependencies: - micromark "~2.11.3" + chalk "^4.1.1" + cli-truncate "^2.1.0" + commander "^7.2.0" + cosmiconfig "^7.0.0" + debug "^4.3.1" + dedent "^0.7.0" + enquirer "^2.3.6" + execa "^5.0.0" + listr2 "^3.8.2" + log-symbols "^4.1.0" + micromatch "^4.0.4" + normalize-path "^3.0.0" + please-upgrade-node "^3.2.0" + string-argv "0.3.1" + stringify-object "^3.3.0" -micromark-extension-gfm-strikethrough@~0.6.5: - version "0.6.5" - resolved "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz" - integrity sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw== +listr2@^3.8.2: + version "3.14.0" + resolved "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz" + integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== dependencies: - micromark "~2.11.0" + 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" -micromark-extension-gfm-table@~0.4.0: - version "0.4.3" - resolved "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz" - integrity sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA== +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz" + integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== dependencies: - micromark "~2.11.0" - -micromark-extension-gfm-tagfilter@~0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz" - integrity sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q== + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" -micromark-extension-gfm-task-list-item@~0.3.0: - version "0.3.3" - resolved "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz" - integrity sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ== +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== dependencies: - micromark "~2.11.0" + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" -micromark-extension-gfm@^0.3.0: - version "0.3.3" - resolved "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz" - integrity sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A== +load-json-file@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz" + integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== dependencies: - micromark "~2.11.0" - micromark-extension-gfm-autolink-literal "~0.5.0" - micromark-extension-gfm-strikethrough "~0.6.5" - micromark-extension-gfm-table "~0.4.0" - micromark-extension-gfm-tagfilter "~0.3.0" - micromark-extension-gfm-task-list-item "~0.3.0" + graceful-fs "^4.1.15" + parse-json "^5.0.0" + strip-bom "^4.0.0" + type-fest "^0.6.0" -micromark@^2.11.3, micromark@~2.11.0, micromark@~2.11.3: - version "2.11.4" - resolved "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz" - integrity sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA== +load-yaml-file@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz" + integrity sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw== dependencies: - debug "^4.0.0" - parse-entities "^2.0.0" + graceful-fs "^4.1.5" + js-yaml "^3.13.0" + pify "^4.0.1" + strip-bom "^3.0.0" -micromatch@4.0.4: - version "4.0.4" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== dependencies: - braces "^3.0.1" - picomatch "^2.2.3" + p-locate "^2.0.0" + path-exists "^3.0.0" -micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" + p-locate "^3.0.0" + path-exists "^3.0.0" -micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: - version "4.0.5" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: - braces "^3.0.2" - picomatch "^2.3.1" + p-locate "^4.1.0" -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" + p-locate "^5.0.0" -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": - version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz" + integrity sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA== -mime-db@~1.33.0: - version "1.33.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz" - integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== +lodash.assign@^4.0.3, lodash.assign@^4.0.6: + version "4.2.0" + resolved "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz" + integrity sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw== -mime-types@2.1.18: - version "2.1.18" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz" - integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== - dependencies: - mime-db "~1.33.0" +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== -mime-types@^2.1.12, mime-types@^2.1.16, mime-types@^2.1.25, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== -mime@1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== +lodash.flattendeep@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz" + integrity sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ== -mime@2.6.0, mime@^2.0.3: - version "2.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +lodash.isequalwith@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/lodash.isequalwith/-/lodash.isequalwith-4.4.0.tgz" + integrity sha512-dcZON0IalGBpRmJBmMkaoV7d3I80R2O+FrzsZyHdNSFrANq/cgDqKQNmAHE8UEj4+QYWwwhkQOVdLHiAopzlsQ== -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== +lodash.ismatch@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz" + integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== -mimic-response@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz" - integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -mimic-response@^3.1.0: - 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== +lodash.startcase@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz" + integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz" - integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== +lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== dependencies: - dom-walk "^0.1.0" - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" -mini-css-extract-plugin@^2.4.5: - version "2.7.6" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz#282a3d38863fddcd2e0c220aaed5b90bc156564d" - integrity sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw== +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== dependencies: - schema-utils "^4.0.0" + lodash._reinterpolate "^3.0.0" -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== +lodash@4.17.20: + version "4.17.20" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== -"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" +lodash@4.17.21, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -minimatch@3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== +log-symbols@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== dependencies: - brace-expansion "^1.1.7" + chalk "^2.4.2" -minimatch@5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz" - integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== +log-symbols@4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz" + integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== dependencies: - brace-expansion "^2.0.1" + chalk "^4.0.0" -minimatch@^5.0.1: - version "5.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz" - integrity sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg== +log-symbols@4.1.0, log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: - brace-expansion "^2.0.1" + chalk "^4.1.0" + is-unicode-supported "^0.1.0" -minimatch@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.1.tgz#8a555f541cf976c622daf078bb28f29fb927c253" - integrity sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w== +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== dependencies: - brace-expansion "^2.0.1" + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" -minimatch@^9.0.1: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" +longest-streak@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz" + integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== -minimist-options@4.1.0, minimist-options@^4.0.2: - version "4.1.0" - resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" - integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - kind-of "^6.0.3" +looper@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/looper/-/looper-2.0.0.tgz" + integrity sha512-6DzMHJcjbQX/UPHc1rRCBfKlLwDkvuGZ715cIR36wSdYqWXFT35uLXq5P/2orl3tz+t+VOVPxw4yPinQlUDGDQ== -minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.6: - version "1.2.7" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== +looper@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/looper/-/looper-3.0.0.tgz" + integrity sha512-LJ9wplN/uSn72oJRsXTx+snxPet5c8XiZmOKCm906NVYu+ag6SB6vUcnJcWxgnl2NfbIyeobAn7Bwv6xRj2XJg== -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== +loose-envify@^1.0.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: - minipass "^3.0.0" + js-tokens "^3.0.0 || ^4.0.0" -minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: - version "1.4.1" - resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz" - integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== +loupe@^2.3.1: + version "2.3.6" + resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz" + integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA== dependencies: - minipass "^3.1.0" - minipass-sized "^1.0.3" - minizlib "^2.0.0" - optionalDependencies: - encoding "^0.1.12" + get-func-name "^2.0.0" -minipass-fetch@^2.0.3: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" - integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== +lower-case-first@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz" + integrity sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA== dependencies: - minipass "^3.1.6" - minipass-sized "^1.0.3" - minizlib "^2.1.2" - optionalDependencies: - encoding "^0.1.13" + lower-case "^1.1.2" -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" +lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2: + version "1.1.4" + resolved "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz" + integrity sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA== -minipass-json-stream@^1.0.1: +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz" - integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== - dependencies: - jsonparse "^1.3.1" - minipass "^3.0.0" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== -minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== -minipass-sized@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz" - integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== + +lru-cache@5.1.1, lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== dependencies: - minipass "^3.0.0" + yallist "^3.0.2" -minipass@^2.6.0, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== +lru-cache@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz" + integrity sha512-91gyOKTc2k66UG6kHiH4h3S2eltcPwE1STVfMYC/NG+nZwf8IIuiamfmpGZjpbbxzSyEJaLC0tNSmhjlQUTJow== dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" + pseudomap "^1.0.1" -minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3, minipass@^3.1.6: - version "3.3.6" - resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== dependencies: - yallist "^4.0.0" + pseudomap "^1.0.2" + yallist "^2.1.2" -minipass@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz" - integrity sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw== +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.2.tgz#58a82b7d81c7010da5bd4b2c0c85ac4b4ec5131e" - integrity sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA== +lru-cache@^7.7.1: + version "7.18.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== -minizlib@^1.3.3: - 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" +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz" + integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== -minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" +ltgt@^2.1.2, ltgt@~2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz" + integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA== -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" +ltgt@~2.1.1: + version "2.1.3" + resolved "https://registry.npmjs.org/ltgt/-/ltgt-2.1.3.tgz" + integrity sha512-5VjHC5GsENtIi5rbJd+feEpDKhfr7j0odoUR2Uh978g+2p93nd5o34cTjQWohXsPsCZeqoDnIqEf88mPCe0Pfw== -mixme@^0.5.1: - version "0.5.4" - resolved "https://registry.npmjs.org/mixme/-/mixme-0.5.4.tgz" - integrity sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw== +lunr@^2.3.9: + version "2.3.9" + resolved "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz" + integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== -mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: - version "0.5.3" - resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== +magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" -mkdirp-infer-owner@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz" - integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== dependencies: - chownr "^2.0.0" - infer-owner "^1.0.4" - mkdirp "^1.0.3" + pify "^4.0.1" + semver "^5.6.0" -mkdirp-promise@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz" - integrity sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w== +make-dir@^3.0.0, make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: - mkdirp "*" + semver "^6.0.0" -mkdirp@*, mkdirp@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" - integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -mkdirp@0.5.5: - version "0.5.5" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== +make-fetch-happen@^10.0.3: + version "10.2.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" + integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== dependencies: - minimist "^1.2.5" + agentkeepalive "^4.2.1" + cacache "^16.1.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-fetch "^2.0.3" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + promise-retry "^2.0.1" + socks-proxy-agent "^7.0.0" + ssri "^9.0.0" -mkdirp@0.5.x, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@~0.5.1: - version "0.5.6" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== +make-fetch-happen@^8.0.9: + version "8.0.14" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz" + integrity sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ== dependencies: - minimist "^1.2.6" + agentkeepalive "^4.1.3" + cacache "^15.0.5" + http-cache-semantics "^4.1.0" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^6.0.0" + minipass "^3.1.3" + minipass-collect "^1.0.2" + minipass-fetch "^1.3.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + promise-retry "^2.0.1" + socks-proxy-agent "^5.0.0" + ssri "^8.0.0" -mkdirp@^1.0.3, mkdirp@^1.0.4, mkdirp@~1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +make-fetch-happen@^9.0.1: + version "9.1.0" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz" + integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== + dependencies: + agentkeepalive "^4.1.3" + cacache "^15.2.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^6.0.0" + minipass "^3.1.3" + minipass-collect "^1.0.2" + minipass-fetch "^1.3.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.2" + promise-retry "^2.0.1" + socks-proxy-agent "^6.0.0" + ssri "^8.0.0" -mkdirp@^2.1.3: - version "2.1.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.6.tgz#964fbcb12b2d8c5d6fbc62a963ac95a273e2cc19" - integrity sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A== +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== -mnemonist@^0.38.0: - version "0.38.5" - resolved "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz" - integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== - dependencies: - obliterator "^2.0.0" +map-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" + integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== -mocha-junit-reporter@^2.0.2: - version "2.2.0" - resolved "https://registry.npmjs.org/mocha-junit-reporter/-/mocha-junit-reporter-2.2.0.tgz" - integrity sha512-W83Ddf94nfLiTBl24aS8IVyFvO8aRDLlCvb+cKb/VEaN5dEbcqu3CXiTe8MQK2DvzS7oKE1RsFTxzN302GGbDQ== +map-obj@^4.0.0: + version "4.3.0" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== dependencies: - debug "^4.3.4" - md5 "^2.3.0" - mkdirp "~1.0.4" - strip-ansi "^6.0.1" - xml "^1.0.1" + object-visit "^1.0.0" -mocha-multi-reporters@^1.5.1: - version "1.5.1" - resolved "https://registry.npmjs.org/mocha-multi-reporters/-/mocha-multi-reporters-1.5.1.tgz" - integrity sha512-Yb4QJOaGLIcmB0VY7Wif5AjvLMUFAdV57D2TWEva1Y0kU/3LjKpeRVmlMIfuO1SVbauve459kgtIizADqxMWPg== +markdown-it@12.3.2: + version "12.3.2" + resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz" + integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== dependencies: - debug "^4.1.1" - lodash "^4.17.15" + argparse "^2.0.1" + entities "~2.1.0" + linkify-it "^3.0.1" + mdurl "^1.0.1" + uc.micro "^1.0.5" -mocha@^10.0.0: - version "10.2.0" - resolved "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz" - integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== +markdown-it@13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.1.tgz#c6ecc431cacf1a5da531423fc6a42807814af430" + integrity sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q== dependencies: - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.3" - debug "4.3.4" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.2.0" - he "1.2.0" - js-yaml "4.1.0" - log-symbols "4.1.0" - minimatch "5.0.1" - ms "2.1.3" - nanoid "3.3.3" - serialize-javascript "6.0.0" - strip-json-comments "3.1.1" - supports-color "8.1.1" - workerpool "6.2.1" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" + argparse "^2.0.1" + entities "~3.0.1" + linkify-it "^4.0.1" + mdurl "^1.0.1" + uc.micro "^1.0.5" -mocha@^7.1.1: - version "7.2.0" - resolved "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz" - integrity sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ== +markdown-table@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz" + integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== + +markdown-table@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz" + integrity sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A== dependencies: - ansi-colors "3.2.3" - browser-stdout "1.3.1" - chokidar "3.3.0" - debug "3.2.6" - diff "3.5.0" - escape-string-regexp "1.0.5" - find-up "3.0.0" - glob "7.1.3" - growl "1.10.5" - he "1.2.0" - js-yaml "3.13.1" - log-symbols "3.0.0" - minimatch "3.0.4" - mkdirp "0.5.5" - ms "2.1.1" - node-environment-flags "1.0.6" - object.assign "4.1.0" - strip-json-comments "2.0.1" - supports-color "6.0.0" - which "1.3.1" - wide-align "1.1.3" - yargs "13.3.2" - yargs-parser "13.1.2" - yargs-unparser "1.6.0" + repeat-string "^1.0.0" -mocha@^8.3.1, mocha@^8.4.0: - version "8.4.0" - resolved "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz" - integrity sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ== +markdownlint-cli2-formatter-default@0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.3.tgz" + integrity sha512-QEAJitT5eqX1SNboOD+SO/LNBpu4P4je8JlR02ug2cLQAqmIhh8IJnSK7AcaHBHhNADqdGydnPpQOpsNcEEqCw== + +markdownlint-cli2@0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.4.0.tgz" + integrity sha512-EcwP5tAbyzzL3ACI0L16LqbNctmh8wNX56T+aVvIxWyTAkwbYNx2V7IheRkXS3mE7R/pnaApZ/RSXcXuzRVPjg== dependencies: - "@ungap/promise-all-settled" "1.1.2" - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.1" - debug "4.3.1" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.1.6" - growl "1.10.5" - he "1.2.0" - js-yaml "4.0.0" - log-symbols "4.0.0" - minimatch "3.0.4" - ms "2.1.3" - nanoid "3.1.20" - serialize-javascript "5.0.1" - strip-json-comments "3.1.1" - supports-color "8.1.1" - which "2.0.2" - wide-align "1.1.3" - workerpool "6.1.0" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" + globby "12.1.0" + markdownlint "0.25.1" + markdownlint-cli2-formatter-default "0.0.3" + markdownlint-rule-helpers "0.16.0" + micromatch "4.0.4" + strip-json-comments "4.0.0" + yaml "1.10.2" -mock-fs@^4.1.0: - version "4.14.0" - resolved "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz" - integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== +markdownlint-micromark@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/markdownlint-micromark/-/markdownlint-micromark-0.1.5.tgz#a23400b101be32cd4336f2b6b4c47da31825524c" + integrity sha512-HvofNU4QCvfUCWnocQP1IAWaqop5wpWrB0mKB6SSh0fcpV0PdmQNS6tdUuFew1utpYlUvYYzz84oDkrD76GB9A== -modify-values@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz" - integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== +markdownlint-rule-helpers@0.16.0: + version "0.16.0" + resolved "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.16.0.tgz" + integrity sha512-oEacRUVeTJ5D5hW1UYd2qExYI0oELdYK72k1TKGvIeYJIbqQWAz476NAc7LNixSySUhcNl++d02DvX0ccDk9/w== -module-error@^1.0.1, module-error@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz" - integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== +markdownlint@0.25.1: + version "0.25.1" + resolved "https://registry.npmjs.org/markdownlint/-/markdownlint-0.25.1.tgz" + integrity sha512-AG7UkLzNa1fxiOv5B+owPsPhtM4D6DoODhsJgiaNg1xowXovrYgOnLqAgOOFQpWOlHFVQUzjMY5ypNNTeov92g== + dependencies: + markdown-it "12.3.2" -moment@^2.9.0: - version "2.29.4" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" - integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== +markdownlint@^0.29.0: + version "0.29.0" + resolved "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.29.0.tgz#9647478b7d5485965c557502fe54ee5a550033f2" + integrity sha512-ASAzqpODstu/Qsk0xW5BPgWnK/qjpBQ4e7IpsSvvFXcfYIjanLTdwFRJK1SIEEh0fGSMKXcJf/qhaZYHyME0wA== + dependencies: + markdown-it "13.0.1" + markdownlint-micromark "0.1.5" -morgan@^1.10.0: - version "1.10.0" - resolved "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz" - integrity sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ== +marked-terminal@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/marked-terminal/-/marked-terminal-3.3.0.tgz" + integrity sha512-+IUQJ5VlZoAFsM5MHNT7g3RHSkA3eETqhRCdXv4niUMAKHQ7lb1yvAcuGPmm4soxhmtX13u4Li6ZToXtvSEH+A== dependencies: - basic-auth "~2.0.1" - debug "2.6.9" - depd "~2.0.0" - on-finished "~2.3.0" - on-headers "~1.0.2" + ansi-escapes "^3.1.0" + cardinal "^2.1.1" + chalk "^2.4.1" + cli-table "^0.3.1" + node-emoji "^1.4.1" + supports-hyperlinks "^1.0.1" -mri@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" - integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== +marked@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz" + integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg== -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== +marked@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" + integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A== -ms@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== +match-all@^1.2.6: + version "1.2.6" + resolved "https://registry.npmjs.org/match-all/-/match-all-1.2.6.tgz" + integrity sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ== -ms@2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +mcl-wasm@^0.7.1: + version "0.7.9" + resolved "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz" + integrity sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ== -ms@2.1.3, ms@^2.0.0, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +mcl-wasm@^1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-1.0.3.tgz" + integrity sha512-L8hexPDw02JEXscEm4pB2rvfAYRc4HIsssxcj+I1AGC4/LYFy9GyrmCgFC+CzxKtxuRQcuBi1RLw74MAzZ5V2Q== -multibase@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz" - integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== dependencies: - base-x "^3.0.8" - buffer "^5.5.0" + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" -multibase@~0.6.0: - version "0.6.1" - resolved "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz" - integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== +md5@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz" + integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== dependencies: - base-x "^3.0.8" - buffer "^5.5.0" + charenc "0.0.2" + crypt "0.0.2" + is-buffer "~1.1.6" -multicast-dns@^7.2.5: - version "7.2.5" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" - integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== +mdast-util-find-and-replace@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz" + integrity sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA== dependencies: - dns-packet "^5.2.2" - thunky "^1.0.2" + escape-string-regexp "^4.0.0" + unist-util-is "^4.0.0" + unist-util-visit-parents "^3.0.0" -multicodec@^0.5.5: - version "0.5.7" - resolved "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz" - integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== +mdast-util-footnote@^0.1.0: + version "0.1.7" + resolved "https://registry.npmjs.org/mdast-util-footnote/-/mdast-util-footnote-0.1.7.tgz" + integrity sha512-QxNdO8qSxqbO2e3m09KwDKfWiLgqyCurdWTQ198NpbZ2hxntdc+VKS4fDJCmNWbAroUdYnSthu+XbZ8ovh8C3w== dependencies: - varint "^5.0.0" + mdast-util-to-markdown "^0.6.0" + micromark "~2.11.0" -multicodec@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz" - integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== +mdast-util-from-markdown@^0.8.0: + version "0.8.5" + resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz" + integrity sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ== dependencies: - buffer "^5.6.0" - varint "^5.0.0" + "@types/mdast" "^3.0.0" + mdast-util-to-string "^2.0.0" + micromark "~2.11.0" + parse-entities "^2.0.0" + unist-util-stringify-position "^2.0.0" -multihashes@^0.4.15, multihashes@~0.4.15: - version "0.4.21" - resolved "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz" - integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== +mdast-util-frontmatter@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz" + integrity sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ== dependencies: - buffer "^5.5.0" - multibase "^0.7.0" - varint "^5.0.0" - -multimap@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/multimap/-/multimap-1.1.0.tgz" - integrity sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw== + micromark-extension-frontmatter "^0.2.0" -multimatch@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz" - integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== +mdast-util-gfm-autolink-literal@^0.1.0, mdast-util-gfm-autolink-literal@^0.1.3: + version "0.1.3" + resolved "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz" + integrity sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A== dependencies: - "@types/minimatch" "^3.0.3" - array-differ "^3.0.0" - array-union "^2.1.0" - arrify "^2.0.1" - minimatch "^3.0.4" + ccount "^1.0.0" + mdast-util-find-and-replace "^1.1.0" + micromark "^2.11.3" -murmur-128@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/murmur-128/-/murmur-128-0.2.1.tgz" - integrity sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg== +mdast-util-gfm-strikethrough@^0.2.0: + version "0.2.3" + resolved "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz" + integrity sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA== dependencies: - encode-utf8 "^1.0.2" - fmix "^0.1.0" - imul "^1.0.0" - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz" - integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== - -mute-stream@0.0.8, mute-stream@~0.0.4: - version "0.0.8" - resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + mdast-util-to-markdown "^0.6.0" -mysql@^2.18.1: - version "2.18.1" - resolved "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz" - integrity sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig== +mdast-util-gfm-table@^0.1.0: + version "0.1.6" + resolved "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz" + integrity sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ== dependencies: - bignumber.js "9.0.0" - readable-stream "2.3.7" - safe-buffer "5.1.2" - sqlstring "2.3.1" + markdown-table "^2.0.0" + mdast-util-to-markdown "~0.6.0" -mz@^2.4.0, mz@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== +mdast-util-gfm-task-list-item@^0.1.0: + version "0.1.6" + resolved "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz" + integrity sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A== dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nan@^2.14.0: - version "2.17.0" - resolved "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz" - integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== - -nano-base32@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/nano-base32/-/nano-base32-1.0.1.tgz" - integrity sha512-sxEtoTqAPdjWVGv71Q17koMFGsOMSiHsIFEvzOM7cNp8BXB4AnEwmDabm5dorusJf/v1z7QxaZYxUorU9RKaAw== + mdast-util-to-markdown "~0.6.0" -nano-json-stream-parser@^0.1.2: +mdast-util-gfm@^0.1.0: 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@3.1.20: - version "3.1.20" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz" - integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== - -nanoid@3.3.3: - version "3.3.3" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz" - integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== - -nanoid@^3.3.4: - version "3.3.4" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== - -nanoid@^3.3.6: - version "3.3.6" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + resolved "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz" + integrity sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ== dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" + mdast-util-gfm-autolink-literal "^0.1.0" + mdast-util-gfm-strikethrough "^0.2.0" + mdast-util-gfm-table "^0.1.0" + mdast-util-gfm-task-list-item "^0.1.0" + mdast-util-to-markdown "^0.6.1" -napi-build-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz" - integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== +mdast-util-to-markdown@^0.6.0, mdast-util-to-markdown@^0.6.1, mdast-util-to-markdown@~0.6.0: + version "0.6.5" + resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz" + integrity sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ== + dependencies: + "@types/unist" "^2.0.0" + longest-streak "^2.0.0" + mdast-util-to-string "^2.0.0" + parse-entities "^2.0.0" + repeat-string "^1.0.0" + zwitch "^1.0.0" -napi-macros@~2.0.0: +mdast-util-to-string@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz" - integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg== - -natural-compare-lite@^1.4.0: - 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== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz" + integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== -negotiator@0.6.3, negotiator@^0.6.2, negotiator@^0.6.3: - version "0.6.3" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== +mdurl@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz" + integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== -next-tick@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" - integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== +memdown@^1.0.0: + version "1.4.1" + resolved "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz" + 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" -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +memdown@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/memdown/-/memdown-5.1.0.tgz" + integrity sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw== + dependencies: + abstract-leveldown "~6.2.1" + functional-red-black-tree "~1.0.1" + immediate "~3.2.3" + inherits "~2.0.1" + ltgt "~2.2.0" + safe-buffer "~5.2.0" -nise@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.4.tgz#491ce7e7307d4ec546f5a659b2efe94a18b4bbc0" - integrity sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg== +memdown@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/memdown/-/memdown-3.0.0.tgz" + integrity sha512-tbV02LfZMWLcHcq4tw++NuqMO+FZX8tNJEiD2aNRm48ZZusVg5N8NART+dmBkepJVye986oixErf7jfXboMGMA== dependencies: - "@sinonjs/commons" "^2.0.0" - "@sinonjs/fake-timers" "^10.0.2" - "@sinonjs/text-encoding" "^0.7.1" - just-extend "^4.0.2" - path-to-regexp "^1.7.0" + abstract-leveldown "~5.0.0" + functional-red-black-tree "~1.0.1" + immediate "~3.2.3" + inherits "~2.0.1" + ltgt "~2.2.0" + safe-buffer "~5.1.1" -no-case@^2.2.0, no-case@^2.3.2: - version "2.3.2" - resolved "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== +memory-level@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz" + integrity sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og== dependencies: - lower-case "^1.1.1" + abstract-level "^1.0.0" + functional-red-black-tree "^1.0.1" + module-error "^1.0.1" -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz" + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== + +meow@^6.0.0: + version "6.1.1" + resolved "https://registry.npmjs.org/meow/-/meow-6.1.1.tgz" + integrity sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg== dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "^4.0.2" + normalize-package-data "^2.5.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.13.1" + yargs-parser "^18.1.3" -node-abi@^2.18.0, node-abi@^2.21.0, node-abi@^2.7.0: - version "2.30.1" - resolved "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz" - integrity sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w== +meow@^8.0.0: + version "8.1.2" + resolved "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz" + integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== dependencies: - semver "^5.4.1" + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^3.0.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.18.0" + yargs-parser "^20.2.3" -node-abort-controller@^3.0.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" - integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -node-addon-api@^3.0.2: - version "3.2.1" - resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz" - integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== +merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -node-addon-api@^4.2.0: - version "4.3.0" - resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz" - integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== +merkle-patricia-tree@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-3.0.0.tgz" + integrity sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ== + dependencies: + async "^2.6.1" + ethereumjs-util "^5.2.0" + level-mem "^3.0.1" + level-ws "^1.0.0" + readable-stream "^3.0.6" + rlp "^2.0.0" + semaphore ">=1.0.1" -node-dir@^0.1.10, node-dir@^0.1.17: - version "0.1.17" - resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" - integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== +merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: + 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== dependencies: - minimatch "^3.0.2" + 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-emoji@^1.10.0, node-emoji@^1.4.1: - version "1.11.0" - resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" - integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== +merkle-patricia-tree@^4.0.0: + version "4.2.4" + resolved "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-4.2.4.tgz" + integrity sha512-eHbf/BG6eGNsqqfbLED9rIqbsF4+sykEaBn6OLNs71tjclbMcMOk1tEPmJKcNcNCLkvbpY/lwyOlizWsqPNo8w== dependencies: - lodash "^4.17.21" + "@types/levelup" "^4.3.0" + ethereumjs-util "^7.1.4" + level-mem "^5.0.1" + level-ws "^2.0.0" + readable-stream "^3.6.0" + semaphore-async-await "^1.5.1" -node-environment-flags@1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz" - integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== +merkletreejs@^0.2.18, merkletreejs@^0.2.27: + version "0.2.32" + resolved "https://registry.npmjs.org/merkletreejs/-/merkletreejs-0.2.32.tgz" + integrity sha512-TostQBiwYRIwSE5++jGmacu3ODcKAgqb0Y/pnIohXS7sWxh1gCkSptbmF1a43faehRDpcHf7J/kv0Ml2D/zblQ== dependencies: - object.getownpropertydescriptors "^2.0.3" - semver "^5.7.0" + bignumber.js "^9.0.1" + buffer-reverse "^1.0.1" + crypto-js "^3.1.9-1" + treeify "^1.1.0" + web3-utils "^1.3.4" -node-fetch-native@^1.0.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.2.0.tgz#13ec6df98f33168958dbfb6945f10aedf42e7ea8" - integrity sha512-5IAMBTl9p6PaAjYCnMv5FmqIF6GcZnawAVnzaCG0rX2aYZJ4CxEkZNtVPuTRug7fL7wyM5BQYTlAzcyMPi6oTQ== +methods@^1.1.2, methods@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -node-fetch@2.6.0: - version "2.6.0" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== +micro-ftch@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/micro-ftch/-/micro-ftch-0.3.1.tgz#6cb83388de4c1f279a034fb0cf96dfc050853c5f" + integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== -node-fetch@2.6.7, node-fetch@^2.6.1, node-fetch@^2.6.7: - version "2.6.7" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== +micromark-extension-footnote@^0.3.0: + version "0.3.2" + resolved "https://registry.npmjs.org/micromark-extension-footnote/-/micromark-extension-footnote-0.3.2.tgz" + integrity sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ== dependencies: - whatwg-url "^5.0.0" + micromark "~2.11.0" -node-fetch@^2.0.0: - version "2.6.12" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba" - integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g== +micromark-extension-frontmatter@^0.2.0: + version "0.2.2" + resolved "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz" + integrity sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A== dependencies: - whatwg-url "^5.0.0" + fault "^1.0.0" -node-fetch@^2.6.0: - version "2.6.9" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz" - integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== +micromark-extension-gfm-autolink-literal@~0.5.0: + version "0.5.7" + resolved "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz" + integrity sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw== dependencies: - whatwg-url "^5.0.0" + micromark "~2.11.3" -node-fetch@~1.7.1: - version "1.7.3" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz" - integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== +micromark-extension-gfm-strikethrough@~0.6.5: + version "0.6.5" + resolved "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz" + integrity sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw== dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" + micromark "~2.11.0" -node-forge@^1, node-forge@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" - integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== +micromark-extension-gfm-table@~0.4.0: + version "0.4.3" + resolved "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz" + integrity sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA== + dependencies: + micromark "~2.11.0" -node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: - version "4.6.0" - resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz" - integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== +micromark-extension-gfm-tagfilter@~0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz" + integrity sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q== -node-gyp-build@~4.1.0: - version "4.1.1" - resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.1.1.tgz" - integrity sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ== +micromark-extension-gfm-task-list-item@~0.3.0: + version "0.3.3" + resolved "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz" + integrity sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ== + dependencies: + micromark "~2.11.0" -node-gyp@^5.0.2: - version "5.1.1" - resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.1.tgz" - integrity sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw== +micromark-extension-gfm@^0.3.0: + version "0.3.3" + resolved "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz" + integrity sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A== dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.2" - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.1.2" - request "^2.88.0" - rimraf "^2.6.3" - semver "^5.7.1" - tar "^4.4.12" - which "^1.3.1" + micromark "~2.11.0" + micromark-extension-gfm-autolink-literal "~0.5.0" + micromark-extension-gfm-strikethrough "~0.6.5" + micromark-extension-gfm-table "~0.4.0" + micromark-extension-gfm-tagfilter "~0.3.0" + micromark-extension-gfm-task-list-item "~0.3.0" -node-gyp@^7.1.0: - version "7.1.2" - resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz" - integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== +micromark@^2.11.3, micromark@~2.11.0, micromark@~2.11.3: + version "2.11.4" + resolved "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz" + integrity sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA== dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.3" - nopt "^5.0.0" - npmlog "^4.1.2" - request "^2.88.2" - rimraf "^3.0.2" - semver "^7.3.2" - tar "^6.0.2" - which "^2.0.2" + debug "^4.0.0" + parse-entities "^2.0.0" + +micromatch@4.0.4: + version "4.0.4" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + dependencies: + braces "^3.0.1" + picomatch "^2.2.3" -node-gyp@^9.0.0: - version "9.3.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.3.1.tgz#1e19f5f290afcc9c46973d68700cbd21a96192e4" - integrity sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg== +micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.6" - make-fetch-happen "^10.0.3" - nopt "^6.0.0" - npmlog "^6.0.0" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.2" - which "^2.0.2" + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" -node-hid@1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/node-hid/-/node-hid-1.3.0.tgz" - integrity sha512-BA6G4V84kiNd1uAChub/Z/5s/xS3EHBCxotQ0nyYrUG65mXewUDHE1tWOSqA2dp3N+mV0Ffq9wo2AW9t4p/G7g== +micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - bindings "^1.5.0" - nan "^2.14.0" - node-abi "^2.18.0" - prebuild-install "^5.3.4" + braces "^3.0.2" + picomatch "^2.3.1" -node-hid@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/node-hid/-/node-hid-2.1.1.tgz" - integrity sha512-Skzhqow7hyLZU93eIPthM9yjot9lszg9xrKxESleEs05V2NcbUptZc5HFqzjOkSmL0sFlZFr3kmvaYebx06wrw== +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== dependencies: - bindings "^1.5.0" - node-addon-api "^3.0.2" - prebuild-install "^6.0.0" + bn.js "^4.0.0" + brorand "^1.0.1" -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -node-preload@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz" - integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ== +mime-types@^2.1.12, mime-types@^2.1.16, mime-types@^2.1.27, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: - process-on-spawn "^1.0.0" + mime-db "1.52.0" -node-releases@^2.0.12: - version "2.0.12" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.12.tgz#35627cc224a23bfb06fb3380f2b3afaaa7eb1039" - integrity sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ== +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -node-releases@^2.0.13: - version "2.0.13" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" - integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== +mime@2.6.0: + version "2.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== -node-releases@^2.0.6: - 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== +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -node-releases@^2.0.8: - version "2.0.10" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz" - integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -nofilter@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/nofilter/-/nofilter-1.0.4.tgz" - integrity sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA== +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== -nofilter@^3.1.0: +mimic-response@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz" + integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== + +mimic-response@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz" - integrity sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g== + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== -noms@0.0.0: - version "0.0.0" - resolved "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz" - integrity sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow== +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz" + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== dependencies: - inherits "^2.0.1" - readable-stream "~1.0.31" + dom-walk "^0.1.0" -noop-logger@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz" - integrity sha512-6kM8CLXvuW5crTxsAtva2YLrRrDaiTIkIePWs9moLHqbFWT94WpNFjwS/5dfLfECg5i/lkmw3aoqVidxt23TEQ== +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -nopt@3.x: - version "3.0.6" - resolved "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz" - integrity sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg== - dependencies: - abbrev "1" +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== +"minimatch@2 || 3", minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: - abbrev "1" + brace-expansion "^1.1.7" -nopt@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" - integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== +minimatch@3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: - abbrev "^1.0.0" + brace-expansion "^1.1.7" -normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== +minimatch@5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" + brace-expansion "^2.0.1" -normalize-package-data@^3.0.0, normalize-package-data@^3.0.2: - version "3.0.3" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz" - integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== +minimatch@^5.0.1: + version "5.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz" + integrity sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg== dependencies: - hosted-git-info "^4.0.1" - is-core-module "^2.5.0" - semver "^7.3.4" - validate-npm-package-license "^3.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + brace-expansion "^2.0.1" -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" - integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== +minimatch@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.1.tgz#8a555f541cf976c622daf078bb28f29fb927c253" + integrity sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w== + dependencies: + brace-expansion "^2.0.1" -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== +minimist-options@4.1.0, minimist-options@^4.0.2: + version "4.1.0" + resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" -normalize-url@^6.0.1, normalize-url@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.6: + version "1.2.7" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== -npm-bundled@^1.1.1: - version "1.1.2" - resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz" - integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== dependencies: - npm-normalize-package-bin "^1.0.1" + minipass "^3.0.0" -npm-install-checks@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz" - integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== +minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: + version "1.4.1" + resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz" + integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== + dependencies: + minipass "^3.1.0" + minipass-sized "^1.0.3" + minizlib "^2.0.0" + optionalDependencies: + encoding "^0.1.12" + +minipass-fetch@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" + integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== dependencies: - semver "^7.1.1" + minipass "^3.1.6" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" -npm-lifecycle@^3.1.5: - version "3.1.5" - resolved "https://registry.npmjs.org/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz" - integrity sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g== +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== dependencies: - byline "^5.0.0" - graceful-fs "^4.1.15" - node-gyp "^5.0.2" - resolve-from "^4.0.0" - slide "^1.1.6" - uid-number "0.0.6" - umask "^1.1.0" - which "^1.3.1" + minipass "^3.0.0" -npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: +minipass-json-stream@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: - version "8.1.5" - resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz" - integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== + resolved "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz" + integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== dependencies: - hosted-git-info "^4.0.1" - semver "^7.3.4" - validate-npm-package-name "^3.0.0" + jsonparse "^1.3.1" + minipass "^3.0.0" -npm-packlist@^2.1.4: - version "2.2.2" - resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz" - integrity sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg== +minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: - glob "^7.1.6" - ignore-walk "^3.0.3" - npm-bundled "^1.1.1" - npm-normalize-package-bin "^1.0.1" + minipass "^3.0.0" -npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1: - version "6.1.1" - resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz" - integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== dependencies: - npm-install-checks "^4.0.0" - npm-normalize-package-bin "^1.0.1" - npm-package-arg "^8.1.2" - semver "^7.3.4" + minipass "^3.0.0" -npm-registry-fetch@^11.0.0: - version "11.0.0" - resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz" - integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== +minipass@^2.6.0, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== dependencies: - make-fetch-happen "^9.0.1" - minipass "^3.1.3" - minipass-fetch "^1.3.0" - minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" + safe-buffer "^5.1.2" + yallist "^3.0.0" -npm-registry-fetch@^9.0.0: - version "9.0.0" - resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz" - integrity sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA== +minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3, minipass@^3.1.6: + version "3.3.6" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: - "@npmcli/ci-detect" "^1.0.0" - lru-cache "^6.0.0" - make-fetch-happen "^8.0.9" - minipass "^3.1.3" - minipass-fetch "^1.3.0" - minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" + yallist "^4.0.0" -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" - integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== +minipass@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz" + integrity sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw== dependencies: - path-key "^2.0.0" + yallist "^4.0.0" -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== -npmlog@^4.0.1, npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== +minizlib@^1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" + minipass "^2.9.0" -npmlog@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" - integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== +minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: - are-we-there-yet "^2.0.0" - console-control-strings "^1.1.0" - gauge "^3.0.0" - set-blocking "^2.0.0" + minipass "^3.0.0" + yallist "^4.0.0" -npmlog@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" - integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== dependencies: - are-we-there-yet "^3.0.0" - console-control-strings "^1.1.0" - gauge "^4.0.3" - set-blocking "^2.0.0" + for-in "^1.0.2" + is-extendable "^1.0.1" -nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== +mixme@^0.5.1: + version "0.5.4" + resolved "https://registry.npmjs.org/mixme/-/mixme-0.5.4.tgz" + integrity sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw== + +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + +mkdirp-infer-owner@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz" + integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== dependencies: - boolbase "~1.0.0" + chownr "^2.0.0" + infer-owner "^1.0.4" + mkdirp "^1.0.3" -nth-check@^2.0.1: - 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== +mkdirp-promise@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz" + integrity sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w== dependencies: - boolbase "^1.0.0" + mkdirp "*" -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" - integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== +mkdirp@*, mkdirp@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== -number-to-bn@1.7.0: - version "1.7.0" - resolved "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz" - integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== +mkdirp@0.5.5: + version "0.5.5" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: - bn.js "4.11.6" - strip-hex-prefix "1.0.0" - -nwsapi@^2.2.0: - version "2.2.5" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.5.tgz#a52744c61b3889dd44b0a158687add39b8d935e2" - integrity sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ== + minimist "^1.2.5" -nyc@^15.1.0: - version "15.1.0" - resolved "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz" - integrity sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A== +mkdirp@0.5.x, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5: + version "0.5.6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - caching-transform "^4.0.0" - convert-source-map "^1.7.0" - decamelize "^1.2.0" - find-cache-dir "^3.2.0" - find-up "^4.1.0" - foreground-child "^2.0.0" - get-package-type "^0.1.0" - glob "^7.1.6" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-hook "^3.0.0" - istanbul-lib-instrument "^4.0.0" - istanbul-lib-processinfo "^2.0.2" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - make-dir "^3.0.0" - node-preload "^0.2.1" - p-map "^3.0.0" - process-on-spawn "^1.0.0" - resolve-from "^5.0.0" - rimraf "^3.0.0" - signal-exit "^3.0.2" - spawn-wrap "^2.0.0" - test-exclude "^6.0.0" - yargs "^15.0.2" + minimist "^1.2.6" -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== +mkdirp@^1.0.3, mkdirp@^1.0.4, mkdirp@~1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +mkdirp@^2.1.3: + version "2.1.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.6.tgz#964fbcb12b2d8c5d6fbc62a963ac95a273e2cc19" + integrity sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A== -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" - integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== +mnemonist@^0.38.0: + version "0.38.5" + resolved "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz" + integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" + obliterator "^2.0.0" -object-hash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" - integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== +mocha-junit-reporter@^2.0.2: + version "2.2.0" + resolved "https://registry.npmjs.org/mocha-junit-reporter/-/mocha-junit-reporter-2.2.0.tgz" + integrity sha512-W83Ddf94nfLiTBl24aS8IVyFvO8aRDLlCvb+cKb/VEaN5dEbcqu3CXiTe8MQK2DvzS7oKE1RsFTxzN302GGbDQ== + dependencies: + debug "^4.3.4" + md5 "^2.3.0" + mkdirp "~1.0.4" + strip-ansi "^6.0.1" + xml "^1.0.1" -object-inspect@^1.12.2, object-inspect@^1.9.0, object-inspect@~1.12.2: - version "1.12.2" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" - integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== +mocha-multi-reporters@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/mocha-multi-reporters/-/mocha-multi-reporters-1.5.1.tgz" + integrity sha512-Yb4QJOaGLIcmB0VY7Wif5AjvLMUFAdV57D2TWEva1Y0kU/3LjKpeRVmlMIfuO1SVbauve459kgtIizADqxMWPg== + dependencies: + debug "^4.1.1" + lodash "^4.17.15" -object-is@^1.0.1, object-is@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== +mocha@^10.0.0: + version "10.2.0" + resolved "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz" + integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.3" + debug "4.3.4" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "5.0.1" + ms "2.1.3" + nanoid "3.3.3" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + workerpool "6.2.1" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" -object-keys@^1.0.11, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +mocha@^7.1.1: + version "7.2.0" + resolved "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz" + integrity sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ== + dependencies: + ansi-colors "3.2.3" + browser-stdout "1.3.1" + chokidar "3.3.0" + debug "3.2.6" + diff "3.5.0" + escape-string-regexp "1.0.5" + find-up "3.0.0" + glob "7.1.3" + growl "1.10.5" + he "1.2.0" + js-yaml "3.13.1" + log-symbols "3.0.0" + minimatch "3.0.4" + mkdirp "0.5.5" + ms "2.1.1" + node-environment-flags "1.0.6" + object.assign "4.1.0" + strip-json-comments "2.0.1" + supports-color "6.0.0" + which "1.3.1" + wide-align "1.1.3" + yargs "13.3.2" + yargs-parser "13.1.2" + yargs-unparser "1.6.0" -object-keys@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.2.0.tgz#cddec02998b091be42bf1035ae32e49f1cb6ea67" - integrity sha512-XODjdR2pBh/1qrjPcbSeSgEtKbYo7LqYNq64/TPuCf7j9SfDD3i21yatKoIy39yIWNvVM59iutfQQpCv1RfFzA== +mocha@^8.3.1, mocha@^8.4.0: + version "8.4.0" + resolved "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz" + integrity sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ== dependencies: - foreach "~2.0.1" - indexof "~0.0.1" - is "~0.2.6" + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.1" + debug "4.3.1" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.1.6" + growl "1.10.5" + he "1.2.0" + js-yaml "4.0.0" + log-symbols "4.0.0" + minimatch "3.0.4" + ms "2.1.3" + nanoid "3.1.20" + serialize-javascript "5.0.1" + strip-json-comments "3.1.1" + supports-color "8.1.1" + which "2.0.2" + wide-align "1.1.3" + workerpool "6.1.0" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" -object-keys@~0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz" - integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw== +mock-fs@^4.1.0: + version "4.14.0" + resolved "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz" + integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== -object-visit@^1.0.0: +modify-values@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" - integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== - dependencies: - isobject "^3.0.0" + resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz" + integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== -object.assign@4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== +module-error@^1.0.1, module-error@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz" + integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== + +morgan@^1.10.0: + version "1.10.0" + resolved "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz" + integrity sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ== dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" + basic-auth "~2.0.1" + debug "2.6.9" + depd "~2.0.0" + on-finished "~2.3.0" + on-headers "~1.0.2" -object.assign@^4.1.3, object.assign@^4.1.4: - version "4.1.4" - resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" - integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + 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.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multibase@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz" + integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - has-symbols "^1.0.3" - object-keys "^1.1.1" + base-x "^3.0.8" + buffer "^5.5.0" -object.entries@^1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz" - integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== +multibase@~0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz" + integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + base-x "^3.0.8" + buffer "^5.5.0" -object.fromentries@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz" - integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== +multicodec@^0.5.5: + version "0.5.7" + resolved "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz" + integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + varint "^5.0.0" -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0, object.getownpropertydescriptors@^2.1.1: - version "2.1.5" - resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz" - integrity sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw== +multicodec@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz" + integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== dependencies: - array.prototype.reduce "^1.0.5" - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + buffer "^5.6.0" + varint "^5.0.0" -object.hasown@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz" - integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== +multihashes@^0.4.15, multihashes@~0.4.15: + version "0.4.21" + resolved "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz" + integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== dependencies: - define-properties "^1.1.4" - es-abstract "^1.20.4" + buffer "^5.5.0" + multibase "^0.7.0" + varint "^5.0.0" + +multimap@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/multimap/-/multimap-1.1.0.tgz" + integrity sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw== -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" - integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== +multimatch@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz" + integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== dependencies: - isobject "^3.0.1" + "@types/minimatch" "^3.0.3" + array-differ "^3.0.0" + array-union "^2.1.0" + arrify "^2.0.1" + minimatch "^3.0.4" -object.values@^1.1.0, object.values@^1.1.5, object.values@^1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz" - integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== +murmur-128@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/murmur-128/-/murmur-128-0.2.1.tgz" + integrity sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + encode-utf8 "^1.0.2" + fmix "^0.1.0" + imul "^1.0.0" -objectorarray@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/objectorarray/-/objectorarray-1.0.5.tgz#2c05248bbefabd8f43ad13b41085951aac5e68a5" - integrity sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg== +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz" + integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== -obliterator@^2.0.0: - version "2.0.4" - resolved "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz" - integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ== +mute-stream@0.0.8, mute-stream@~0.0.4: + version "0.0.8" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -oboe@2.1.4: - version "2.1.4" - resolved "https://registry.npmjs.org/oboe/-/oboe-2.1.4.tgz" - integrity sha512-ymBJ4xSC6GBXLT9Y7lirj+xbqBLa+jADGJldGEYG7u8sZbS9GyG+u1Xk9c5cbriKwSpCg41qUhPjvU5xOpvIyQ== +mysql@^2.18.1: + version "2.18.1" + resolved "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz" + integrity sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig== dependencies: - http-https "^1.0.0" + bignumber.js "9.0.0" + readable-stream "2.3.7" + safe-buffer "5.1.2" + sqlstring "2.3.1" -oboe@2.1.5: - version "2.1.5" - resolved "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz" - integrity sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA== +mz@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== dependencies: - http-https "^1.0.0" + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== +nan@^2.14.0: + version "2.17.0" + resolved "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== -octal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/octal/-/octal-1.0.0.tgz#63e7162a68efbeb9e213588d58e989d1e5c4530b" - integrity sha512-nnda7W8d+A3vEIY+UrDQzzboPf1vhs4JYVhff5CDkq9QNoZY7Xrxeo/htox37j9dZf7yNHevZzqtejWgy1vCqQ== +nano-base32@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/nano-base32/-/nano-base32-1.0.1.tgz" + integrity sha512-sxEtoTqAPdjWVGv71Q17koMFGsOMSiHsIFEvzOM7cNp8BXB4AnEwmDabm5dorusJf/v1z7QxaZYxUorU9RKaAw== -on-exit-leak-free@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz" - integrity sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w== +nano-json-stream-parser@^0.1.2: + 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== -on-finished@2.4.1, on-finished@^2.3.0: - 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" +nanoid@3.1.20: + version "3.1.20" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz" + integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" - integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== +nanoid@3.3.3: + version "3.3.3" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== + +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== dependencies: - ee-first "1.1.1" + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" -on-headers@~1.0.1, on-headers@~1.0.2: +napi-build-utils@^1.0.1: version "1.0.2" - resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + resolved "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== -once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" +napi-macros@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz" + integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg== -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz" - integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== - dependencies: - mimic-fn "^1.0.0" +natural-compare-lite@^1.4.0: + 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== -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -open@^7.4.2: - version "7.4.2" - resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" +negotiator@0.6.3, negotiator@^0.6.2, negotiator@^0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -open@^8.0.4, open@^8.0.9, open@^8.4.0: - version "8.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" - integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" +neo-async@^2.6.0, neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -optimism@^0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.16.2.tgz#519b0c78b3b30954baed0defe5143de7776bf081" - integrity sha512-zWNbgWj+3vLEjZNIh/okkY2EUfX+vB9TJopzIZwT1xxaMqC5hRLLraePod4c5n4He08xuXNH+zhKFFCu390wiQ== - dependencies: - "@wry/context" "^0.7.0" - "@wry/trie" "^0.3.0" +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== -optionator@^0.8.1, optionator@^0.8.2: - version "0.8.3" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" - 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" +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +nise@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.4.tgz#491ce7e7307d4ec546f5a659b2efe94a18b4bbc0" + integrity sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg== 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" + "@sinonjs/commons" "^2.0.0" + "@sinonjs/fake-timers" "^10.0.2" + "@sinonjs/text-encoding" "^0.7.1" + just-extend "^4.0.2" + path-to-regexp "^1.7.0" -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== +no-case@^2.2.0, no-case@^2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -ordinal@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz" - integrity sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ== - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" - integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" - integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== + lower-case "^1.1.1" -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz" - integrity sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g== +node-abi@^2.18.0, node-abi@^2.21.0, node-abi@^2.7.0: + version "2.30.1" + resolved "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz" + integrity sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w== dependencies: - lcid "^1.0.0" + semver "^5.4.1" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" +node-addon-api@^3.0.2: + version "3.2.1" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== -outdent@^0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/outdent/-/outdent-0.5.0.tgz" - integrity sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q== +node-addon-api@^4.2.0: + version "4.3.0" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz" + integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== -ow@^0.28.1: - version "0.28.2" - resolved "https://registry.npmjs.org/ow/-/ow-0.28.2.tgz" - integrity sha512-dD4UpyBh/9m4X2NVjA+73/ZPBRF+uF4zIMFvvQsabMiEK8x41L3rQ8EENOi35kyyoaJwNxEeJcP6Fj1H4U409Q== +node-emoji@^1.10.0, node-emoji@^1.4.1: + version "1.11.0" + resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" + integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== dependencies: - "@sindresorhus/is" "^4.2.0" - callsites "^3.1.0" - dot-prop "^6.0.1" - lodash.isequal "^4.5.0" - vali-date "^1.0.0" + lodash "^4.17.21" -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== +node-environment-flags@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz" + integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== + dependencies: + object.getownpropertydescriptors "^2.0.3" + semver "^5.7.0" -p-cancelable@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz" - integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== +node-fetch@2.6.0: + version "2.6.0" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== -p-cancelable@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz" - integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== +node-fetch@2.6.7, node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.6.7" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" -p-filter@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz" - integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== +node-fetch@~1.7.1: + version "1.7.3" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== dependencies: - p-map "^2.0.0" + encoding "^0.1.11" + is-stream "^1.0.1" -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== +node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: + version "4.6.0" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz" + integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" +node-gyp-build@~4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.1.1.tgz" + integrity sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ== -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== +node-gyp@^5.0.2: + version "5.1.1" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.1.tgz" + integrity sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw== dependencies: - p-try "^2.0.0" + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.1.2" + request "^2.88.0" + rimraf "^2.6.3" + semver "^5.7.1" + tar "^4.4.12" + which "^1.3.1" -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== +node-gyp@^7.1.0: + version "7.1.2" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz" + integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== dependencies: - yocto-queue "^0.1.0" + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.3" + nopt "^5.0.0" + npmlog "^4.1.2" + request "^2.88.2" + rimraf "^3.0.2" + semver "^7.3.2" + tar "^6.0.2" + which "^2.0.2" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" - integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== +node-gyp@^9.0.0: + version "9.3.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.3.1.tgz#1e19f5f290afcc9c46973d68700cbd21a96192e4" + integrity sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg== dependencies: - p-limit "^1.1.0" + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^10.0.3" + nopt "^6.0.0" + npmlog "^6.0.0" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.2" + which "^2.0.2" -p-locate@^3.0.0: - 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== +node-hid@1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/node-hid/-/node-hid-1.3.0.tgz" + integrity sha512-BA6G4V84kiNd1uAChub/Z/5s/xS3EHBCxotQ0nyYrUG65mXewUDHE1tWOSqA2dp3N+mV0Ffq9wo2AW9t4p/G7g== dependencies: - p-limit "^2.0.0" + bindings "^1.5.0" + nan "^2.14.0" + node-abi "^2.18.0" + prebuild-install "^5.3.4" -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== +node-hid@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/node-hid/-/node-hid-2.1.1.tgz" + integrity sha512-Skzhqow7hyLZU93eIPthM9yjot9lszg9xrKxESleEs05V2NcbUptZc5HFqzjOkSmL0sFlZFr3kmvaYebx06wrw== dependencies: - p-limit "^2.2.0" + bindings "^1.5.0" + node-addon-api "^3.0.2" + prebuild-install "^6.0.0" -p-locate@^5.0.0: - 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== +node-preload@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz" + integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ== dependencies: - p-limit "^3.0.2" + process-on-spawn "^1.0.0" -p-map-series@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz" - integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== +node-releases@^2.0.6: + 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== -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== +node-releases@^2.0.8: + version "2.0.10" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz" + integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - dependencies: - aggregate-error "^3.0.0" +nofilter@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/nofilter/-/nofilter-1.0.4.tgz" + integrity sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA== -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== +nofilter@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz" + integrity sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g== + +noms@0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz" + integrity sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow== dependencies: - aggregate-error "^3.0.0" + inherits "^2.0.1" + readable-stream "~1.0.31" -p-pipe@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz" - integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== +noop-logger@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz" + integrity sha512-6kM8CLXvuW5crTxsAtva2YLrRrDaiTIkIePWs9moLHqbFWT94WpNFjwS/5dfLfECg5i/lkmw3aoqVidxt23TEQ== -p-queue@^6.6.2: - version "6.6.2" - resolved "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz" - integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== +nopt@3.x: + version "3.0.6" + resolved "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz" + integrity sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg== dependencies: - eventemitter3 "^4.0.4" - p-timeout "^3.2.0" + abbrev "1" -p-reduce@^2.0.0, p-reduce@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz" - integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== +nopt@^4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== + dependencies: + abbrev "1" + osenv "^0.1.4" -p-retry@^4.5.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" - integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== dependencies: - "@types/retry" "0.12.0" - retry "^0.13.1" + abbrev "1" -p-timeout@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== +nopt@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== dependencies: - p-finally "^1.0.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" - integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + abbrev "^1.0.0" -p-waterfall@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz" - integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== +normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: - p-reduce "^2.0.0" + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" -package-hash@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz" - integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ== +normalize-package-data@^3.0.0, normalize-package-data@^3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== dependencies: - graceful-fs "^4.1.15" - hasha "^5.0.0" - lodash.flattendeep "^4.4.0" - release-zalgo "^1.0.0" + hosted-git-info "^4.0.1" + is-core-module "^2.5.0" + semver "^7.3.4" + validate-npm-package-license "^3.0.1" -packet-reader@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74" - integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -pacote@^11.2.6: - version "11.3.5" - resolved "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz" - integrity sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg== - dependencies: - "@npmcli/git" "^2.1.0" - "@npmcli/installed-package-contents" "^1.0.6" - "@npmcli/promise-spawn" "^1.2.0" - "@npmcli/run-script" "^1.8.2" - cacache "^15.0.5" - chownr "^2.0.0" - fs-minipass "^2.1.0" - infer-owner "^1.0.4" - minipass "^3.1.3" - mkdirp "^1.0.3" - npm-package-arg "^8.0.1" - npm-packlist "^2.1.4" - npm-pick-manifest "^6.0.0" - npm-registry-fetch "^11.0.0" - promise-retry "^2.0.1" - read-package-json-fast "^2.0.1" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.1.0" +normalize-url@^4.1.0: + version "4.5.1" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== -pako@~0.2.0: - version "0.2.9" - resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" - integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA== +normalize-url@^6.0.1, normalize-url@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== +npm-bundled@^1.1.1: + version "1.1.2" + resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== + dependencies: + npm-normalize-package-bin "^1.0.1" -param-case@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz" - integrity sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w== +npm-install-checks@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz" + integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== dependencies: - no-case "^2.2.0" + semver "^7.1.1" -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== +npm-lifecycle@^3.1.5: + version "3.1.5" + resolved "https://registry.npmjs.org/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz" + integrity sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g== dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" + byline "^5.0.0" + graceful-fs "^4.1.15" + node-gyp "^5.0.2" + resolve-from "^4.0.0" + slide "^1.1.6" + uid-number "0.0.6" + umask "^1.1.0" + which "^1.3.1" -parent-module@^1.0.0: +npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: 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== - dependencies: - callsites "^3.0.0" + resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== +npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: + version "8.1.5" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz" + integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== 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-cache-control@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz" - integrity sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg== + hosted-git-info "^4.0.1" + semver "^7.3.4" + validate-npm-package-name "^3.0.0" -parse-entities@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz" - integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== +npm-packlist@^2.1.4: + version "2.2.2" + resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz" + integrity sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg== dependencies: - character-entities "^1.0.0" - character-entities-legacy "^1.0.0" - character-reference-invalid "^1.0.0" - is-alphanumerical "^1.0.0" - is-decimal "^1.0.0" - is-hexadecimal "^1.0.0" + glob "^7.1.6" + ignore-walk "^3.0.3" + npm-bundled "^1.1.1" + npm-normalize-package-bin "^1.0.1" -parse-headers@^2.0.0: - version "2.0.5" - resolved "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz" - integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== +npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz" + integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== + dependencies: + npm-install-checks "^4.0.0" + npm-normalize-package-bin "^1.0.1" + npm-package-arg "^8.1.2" + semver "^7.3.4" -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" - integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== +npm-registry-fetch@^11.0.0: + version "11.0.0" + resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz" + integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== dependencies: - error-ex "^1.2.0" + make-fetch-happen "^9.0.1" + minipass "^3.1.3" + minipass-fetch "^1.3.0" + minipass-json-stream "^1.0.1" + minizlib "^2.0.0" + npm-package-arg "^8.0.0" -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== +npm-registry-fetch@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz" + integrity sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA== dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" + "@npmcli/ci-detect" "^1.0.0" + lru-cache "^6.0.0" + make-fetch-happen "^8.0.9" + minipass "^3.1.3" + minipass-fetch "^1.3.0" + minipass-json-stream "^1.0.1" + minizlib "^2.0.0" + npm-package-arg "^8.0.0" -parse-json@^5.0.0, parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" + path-key "^2.0.0" -parse-path@^4.0.0: - version "4.0.4" - resolved "https://registry.npmjs.org/parse-path/-/parse-path-4.0.4.tgz" - integrity sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw== +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: - is-ssh "^1.3.0" - protocols "^1.4.0" - qs "^6.9.4" - query-string "^6.13.8" + path-key "^3.0.0" -parse-url@^6.0.0: - version "6.0.5" - resolved "https://registry.npmjs.org/parse-url/-/parse-url-6.0.5.tgz" - integrity sha512-e35AeLTSIlkw/5GFq70IN7po8fmDUjpDPY1rIK+VubRfsUvBonjQ+PBZG+vWMACnQSmNlvl524IucoDmcioMxA== +npmlog@^4.0.1, npmlog@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== dependencies: - is-ssh "^1.3.0" - normalize-url "^6.1.0" - parse-path "^4.0.0" - protocols "^1.4.0" + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" -parse5-htmlparser2-tree-adapter@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" - integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== +npmlog@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== dependencies: - parse5 "^6.0.1" + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.3" + set-blocking "^2.0.0" -parse5-htmlparser2-tree-adapter@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz" - integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== +nth-check@^2.0.1: + 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== dependencies: - domhandler "^5.0.2" - parse5 "^7.0.0" + boolbase "^1.0.0" -parse5@6.0.1, parse5@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== -parse5@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz" + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" -parse5@^7.0.0: - version "7.1.2" - resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" - integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== +nyc@^15.1.0: + version "15.1.0" + resolved "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz" + integrity sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A== dependencies: - entities "^4.4.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + caching-transform "^4.0.0" + convert-source-map "^1.7.0" + decamelize "^1.2.0" + find-cache-dir "^3.2.0" + find-up "^4.1.0" + foreground-child "^2.0.0" + get-package-type "^0.1.0" + glob "^7.1.6" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-hook "^3.0.0" + istanbul-lib-instrument "^4.0.0" + istanbul-lib-processinfo "^2.0.2" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + make-dir "^3.0.0" + node-preload "^0.2.1" + p-map "^3.0.0" + process-on-spawn "^1.0.0" + resolve-from "^5.0.0" + rimraf "^3.0.0" + signal-exit "^3.0.2" + spawn-wrap "^2.0.0" + test-exclude "^6.0.0" + yargs "^15.0.2" -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -pascal-case@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz" - integrity sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ== - dependencies: - camel-case "^3.0.0" - upper-case-first "^1.1.0" +object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== dependencies: - no-case "^3.0.4" - tslib "^2.0.3" + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" - integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== +object-inspect@^1.12.2, object-inspect@^1.9.0, object-inspect@~1.12.2: + version "1.12.2" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== -patch-package@6.2.2: - version "6.2.2" - resolved "https://registry.npmjs.org/patch-package/-/patch-package-6.2.2.tgz" - integrity sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg== +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== dependencies: - "@yarnpkg/lockfile" "^1.1.0" - chalk "^2.4.2" - cross-spawn "^6.0.5" - find-yarn-workspace-root "^1.2.1" - fs-extra "^7.0.1" - is-ci "^2.0.0" - klaw-sync "^6.0.0" - minimist "^1.2.0" - rimraf "^2.6.3" - semver "^5.6.0" - slash "^2.0.0" - tmp "^0.0.33" + call-bind "^1.0.2" + define-properties "^1.1.3" -patch-package@^6.2.2, patch-package@^6.4.7: - version "6.5.1" - resolved "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz" - integrity sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA== - dependencies: - "@yarnpkg/lockfile" "^1.1.0" - chalk "^4.1.2" - cross-spawn "^6.0.5" - find-yarn-workspace-root "^2.0.0" - fs-extra "^9.0.0" - is-ci "^2.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 "^1.10.2" +object-keys@^1.0.11, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -path-browserify@^1.0.0, path-browserify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" - integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== +object-keys@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz" + integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw== -path-case@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/path-case/-/path-case-2.1.1.tgz" - integrity sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q== +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== dependencies: - no-case "^2.2.0" + isobject "^3.0.0" -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" - integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== +object.assign@4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== +object.assign@^4.1.3, object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" + 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" -path-is-inside@1.0.2, path-is-inside@^1.0.2: - 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== +object.entries@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz" + integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" - integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== +object.fromentries@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz" + integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.1: + version "2.1.5" + resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz" + integrity sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw== + dependencies: + array.prototype.reduce "^1.0.5" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -path-parse@^1.0.6, path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +object.hasown@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz" + integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== + dependencies: + define-properties "^1.1.4" + es-abstract "^1.20.4" -path-scurry@^1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" - integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== dependencies: - lru-cache "^9.1.1 || ^10.0.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + isobject "^3.0.1" -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== +object.values@^1.1.5, object.values@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz" + integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -path-to-regexp@2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz" - integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== +obliterator@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz" + integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ== -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== +oboe@2.1.4: + version "2.1.4" + resolved "https://registry.npmjs.org/oboe/-/oboe-2.1.4.tgz" + integrity sha512-ymBJ4xSC6GBXLT9Y7lirj+xbqBLa+jADGJldGEYG7u8sZbS9GyG+u1Xk9c5cbriKwSpCg41qUhPjvU5xOpvIyQ== dependencies: - isarray "0.0.1" + http-https "^1.0.0" -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" - integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== +oboe@2.1.5: + version "2.1.5" + resolved "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz" + integrity sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA== dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" + http-https "^1.0.0" -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" +on-exit-leak-free@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz" + integrity sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w== -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +on-finished@2.4.1, on-finished@^2.3.0: + 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" -pathe@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.1.tgz#1dd31d382b974ba69809adc9a7a347e65d84829a" - integrity sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q== +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" -pathval@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" - integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -pause-stream@^0.0.11: - version "0.0.11" - resolved "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz" - integrity sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A== +once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: - through "~2.3" + wrappy "1" -pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: - version "3.1.2" - resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz" + integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== 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" + mimic-fn "^1.0.0" -peek-stream@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/peek-stream/-/peek-stream-1.1.3.tgz#3b35d84b7ccbbd262fff31dc10da56856ead6d67" - integrity sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA== +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: - buffer-from "^1.0.0" - duplexify "^3.5.0" - through2 "^2.0.3" - -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.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + mimic-fn "^2.1.0" -pg-cloudflare@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pg-cloudflare/-/pg-cloudflare-1.1.0.tgz#833d70870d610d14bf9df7afb40e1cba310c17a0" - integrity sha512-tGM8/s6frwuAIyRcJ6nWcIvd3+3NmUKIs6OjviIm1HPPFEt5MzQDOTBQyhPWg/m0kCl95M6gA1JaIXtS8KovOA== +open@^7.4.2: + version "7.4.2" + resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" -pg-connection-string@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.0.tgz#12a36cc4627df19c25cc1b9b736cc39ee1f73ae8" - integrity sha512-x14ibktcwlHKoHxx9X3uTVW9zIGR41ZB6QNhHb21OPNdCCO3NaRnpJuwKIQSR4u+Yqjx4HCvy7Hh7VSy1U4dGg== +optionator@^0.8.1, optionator@^0.8.2: + version "0.8.3" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" + 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" -pg-int8@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" - integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" + 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" -pg-pool@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.0.tgz#3190df3e4747a0d23e5e9e8045bcd99bda0a712e" - integrity sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ== +ordinal@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz" + integrity sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ== -pg-protocol@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833" - integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== -pg-types@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" - integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz" + integrity sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g== dependencies: - pg-int8 "1.0.1" - postgres-array "~2.0.0" - postgres-bytea "~1.0.0" - postgres-date "~1.0.4" - postgres-interval "^1.1.0" + lcid "^1.0.0" -pg@^8.4.0: - version "8.11.0" - resolved "https://registry.yarnpkg.com/pg/-/pg-8.11.0.tgz#a37e534e94b57a7ed811e926f23a7c56385f55d9" - integrity sha512-meLUVPn2TWgJyLmy7el3fQQVwft4gU5NGyvV0XbD41iU9Jbg8lCH4zexhIkihDzVHJStlt6r088G6/fWeNjhXA== - dependencies: - buffer-writer "2.0.0" - packet-reader "1.0.0" - pg-connection-string "^2.6.0" - pg-pool "^3.6.0" - pg-protocol "^1.6.0" - pg-types "^2.1.0" - pgpass "1.x" - optionalDependencies: - pg-cloudflare "^1.1.0" +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== -pgpass@1.x: - version "1.0.5" - resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" - integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== dependencies: - split2 "^4.1.0" - -picocolors@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz" - integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +outdent@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/outdent/-/outdent-0.5.0.tgz" + integrity sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q== -pify@^2.0.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== +ow@^0.28.1: + version "0.28.2" + resolved "https://registry.npmjs.org/ow/-/ow-0.28.2.tgz" + integrity sha512-dD4UpyBh/9m4X2NVjA+73/ZPBRF+uF4zIMFvvQsabMiEK8x41L3rQ8EENOi35kyyoaJwNxEeJcP6Fj1H4U409Q== + dependencies: + "@sindresorhus/is" "^4.2.0" + callsites "^3.1.0" + dot-prop "^6.0.1" + lodash.isequal "^4.5.0" + vali-date "^1.0.0" -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" - integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== -pify@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz" - integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== +p-cancelable@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz" + integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" - integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== +p-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz" + integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== + p-map "^2.0.0" -pino-abstract-transport@^1.0.0: +p-finally@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz" - integrity sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA== + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== dependencies: - readable-stream "^4.0.0" - split2 "^4.0.0" + p-try "^1.0.0" -pino-multi-stream@^5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/pino-multi-stream/-/pino-multi-stream-5.3.0.tgz" - integrity sha512-4fAGCRll18I+JmoAbxDvU9zc5sera/3c+VgTtUdoNMOZ/VSHB+HMAYtixKpeRmZTDHDDdE2rtwjVkuwWB8mYQA== +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: - pino "^6.0.0" + p-try "^2.0.0" -pino-pretty@*, pino-pretty@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-10.0.1.tgz#54a11182068949ff3069f1f7857f297a14926e58" - integrity sha512-yrn00+jNpkvZX/NrPVCPIVHAfTDy3ahF0PND9tKqZk4j9s+loK8dpzrJj4dGb7i+WLuR50ussuTAiWoMWU+qeA== +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - colorette "^2.0.7" - dateformat "^4.6.3" - fast-copy "^3.0.0" - fast-safe-stringify "^2.1.1" - help-me "^4.0.1" - joycon "^3.1.1" - minimist "^1.2.6" - on-exit-leak-free "^2.1.0" - pino-abstract-transport "^1.0.0" - pump "^3.0.0" - readable-stream "^4.0.0" - secure-json-parse "^2.4.0" - sonic-boom "^3.0.0" - strip-json-comments "^3.1.1" + yocto-queue "^0.1.0" -pino-sentry@^0.14.0: - version "0.14.0" - resolved "https://registry.npmjs.org/pino-sentry/-/pino-sentry-0.14.0.tgz" - integrity sha512-UwX0zgJk2ToA1c1f6QpJ7OlWEwxMFt5apJgCYNhhBbuuJuPDmqEzDRMrWKcbF3HKFuupoaNWK6S3o4XXPmI9Rw== +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== dependencies: - "@sentry/node" "^6.2.5||^7.1.1" - commander "^2.20.0" - pumpify "^2.0.1" - split2 "^3.1.1" - through2 "^3.0.1" + p-limit "^1.1.0" -pino-std-serializers@*: - version "6.1.0" - resolved "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.1.0.tgz" - integrity sha512-KO0m2f1HkrPe9S0ldjx7za9BJjeHqBku5Ch8JyxETxT8dEFGz1PwgrHaOQupVYitpzbFSYm7nnljxD8dik2c+g== +p-locate@^3.0.0: + 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== + dependencies: + p-limit "^2.0.0" -pino-std-serializers@^3.1.0: - version "3.2.0" - resolved "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz" - integrity sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg== +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" -pino@^6.0.0, pino@^6.11.3: - version "6.14.0" - resolved "https://registry.npmjs.org/pino/-/pino-6.14.0.tgz" - integrity sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg== +p-locate@^5.0.0: + 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== dependencies: - fast-redact "^3.0.0" - fast-safe-stringify "^2.0.8" - flatstr "^1.0.12" - pino-std-serializers "^3.1.0" - process-warning "^1.0.0" - quick-format-unescaped "^4.0.3" - sonic-boom "^1.0.2" + p-limit "^3.0.2" -pirates@^4.0.1, pirates@^4.0.4, pirates@^4.0.5: - version "4.0.5" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== +p-map-series@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz" + integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== -pkg-dir@^4.1.0, pkg-dir@^4.2.0: - 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== +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== dependencies: - find-up "^4.0.0" + aggregate-error "^3.0.0" -pkg-dir@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" - integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: - find-up "^5.0.0" + aggregate-error "^3.0.0" -pkg-up@^3.1.0: +p-pipe@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + resolved "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz" + integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== + +p-queue@^6.6.2: + version "6.6.2" + resolved "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz" + integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== dependencies: - find-up "^3.0.0" + eventemitter3 "^4.0.4" + p-timeout "^3.2.0" -please-upgrade-node@^3.2.0: +p-reduce@^2.0.0, p-reduce@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz" + integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== + +p-timeout@^3.2.0: version "3.2.0" - resolved "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz" - integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== dependencies: - semver-compare "^1.0.0" + p-finally "^1.0.0" -pluralize@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== -pngjs@^3.3.0: - version "3.4.0" - resolved "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz" - integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -polished@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/polished/-/polished-4.2.2.tgz#2529bb7c3198945373c52e34618c8fe7b1aa84d1" - integrity sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ== +p-waterfall@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz" + integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== dependencies: - "@babel/runtime" "^7.17.8" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" - integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== + p-reduce "^2.0.0" -postcss-attribute-case-insensitive@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz#03d761b24afc04c09e757e92ff53716ae8ea2741" - integrity sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ== +package-hash@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz" + integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ== dependencies: - postcss-selector-parser "^6.0.10" + graceful-fs "^4.1.15" + hasha "^5.0.0" + lodash.flattendeep "^4.4.0" + release-zalgo "^1.0.0" -postcss-browser-comments@^4: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz#bcfc86134df5807f5d3c0eefa191d42136b5e72a" - integrity sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg== +packet-reader@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74" + integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== + +pacote@^11.2.6: + version "11.3.5" + resolved "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz" + integrity sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg== + dependencies: + "@npmcli/git" "^2.1.0" + "@npmcli/installed-package-contents" "^1.0.6" + "@npmcli/promise-spawn" "^1.2.0" + "@npmcli/run-script" "^1.8.2" + cacache "^15.0.5" + chownr "^2.0.0" + fs-minipass "^2.1.0" + infer-owner "^1.0.4" + minipass "^3.1.3" + mkdirp "^1.0.3" + npm-package-arg "^8.0.1" + npm-packlist "^2.1.4" + npm-pick-manifest "^6.0.0" + npm-registry-fetch "^11.0.0" + promise-retry "^2.0.1" + read-package-json-fast "^2.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.1.0" -postcss-calc@^8.2.3: - version "8.2.4" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" - integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== +param-case@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz" + integrity sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w== dependencies: - postcss-selector-parser "^6.0.9" - postcss-value-parser "^4.2.0" + no-case "^2.2.0" -postcss-clamp@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-clamp/-/postcss-clamp-4.1.0.tgz#7263e95abadd8c2ba1bd911b0b5a5c9c93e02363" - integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow== +parent-module@^1.0.0: + 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== dependencies: - postcss-value-parser "^4.2.0" + callsites "^3.0.0" -postcss-color-functional-notation@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz#21a909e8d7454d3612d1659e471ce4696f28caec" - integrity sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg== +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== dependencies: - postcss-value-parser "^4.2.0" + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" -postcss-color-hex-alpha@^8.0.4: - version "8.0.4" - resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz#c66e2980f2fbc1a63f5b079663340ce8b55f25a5" - integrity sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ== - dependencies: - postcss-value-parser "^4.2.0" +parse-cache-control@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz" + integrity sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg== -postcss-color-rebeccapurple@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz#63fdab91d878ebc4dd4b7c02619a0c3d6a56ced0" - integrity sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg== +parse-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz" + integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== dependencies: - postcss-value-parser "^4.2.0" + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" -postcss-colormin@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" - integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - colord "^2.9.1" - postcss-value-parser "^4.2.0" +parse-headers@^2.0.0: + version "2.0.5" + resolved "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz" + integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== -postcss-convert-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" - integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" + integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" + error-ex "^1.2.0" -postcss-custom-media@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz#c8f9637edf45fef761b014c024cee013f80529ea" - integrity sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg== +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== dependencies: - postcss-value-parser "^4.2.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" -postcss-custom-properties@^12.1.10: - version "12.1.11" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz#d14bb9b3989ac4d40aaa0e110b43be67ac7845cf" - integrity sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ== +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: - postcss-value-parser "^4.2.0" + "@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" -postcss-custom-selectors@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz#1ab4684d65f30fed175520f82d223db0337239d9" - integrity sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg== +parse-path@^4.0.0: + version "4.0.4" + resolved "https://registry.npmjs.org/parse-path/-/parse-path-4.0.4.tgz" + integrity sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw== dependencies: - postcss-selector-parser "^6.0.4" + is-ssh "^1.3.0" + protocols "^1.4.0" + qs "^6.9.4" + query-string "^6.13.8" -postcss-dir-pseudo-class@^6.0.5: +parse-url@^6.0.0: version "6.0.5" - resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz#2bf31de5de76added44e0a25ecf60ae9f7c7c26c" - integrity sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA== + resolved "https://registry.npmjs.org/parse-url/-/parse-url-6.0.5.tgz" + integrity sha512-e35AeLTSIlkw/5GFq70IN7po8fmDUjpDPY1rIK+VubRfsUvBonjQ+PBZG+vWMACnQSmNlvl524IucoDmcioMxA== dependencies: - postcss-selector-parser "^6.0.10" - -postcss-discard-comments@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" - integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== - -postcss-discard-duplicates@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" - integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== - -postcss-discard-empty@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" - integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== - -postcss-discard-overridden@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" - integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== + is-ssh "^1.3.0" + normalize-url "^6.1.0" + parse-path "^4.0.0" + protocols "^1.4.0" -postcss-double-position-gradients@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz#b96318fdb477be95997e86edd29c6e3557a49b91" - integrity sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ== +parse5-htmlparser2-tree-adapter@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - postcss-value-parser "^4.2.0" + parse5 "^6.0.1" -postcss-env-function@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-4.0.6.tgz#7b2d24c812f540ed6eda4c81f6090416722a8e7a" - integrity sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA== +parse5-htmlparser2-tree-adapter@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz" + integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== dependencies: - postcss-value-parser "^4.2.0" + domhandler "^5.0.2" + parse5 "^7.0.0" -postcss-flexbugs-fixes@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz#2028e145313074fc9abe276cb7ca14e5401eb49d" - integrity sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ== +parse5@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== -postcss-focus-visible@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz#50c9ea9afa0ee657fb75635fabad25e18d76bf9e" - integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw== - dependencies: - postcss-selector-parser "^6.0.9" +parse5@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== -postcss-focus-within@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz#5b1d2ec603195f3344b716c0b75f61e44e8d2e20" - integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ== +parse5@^7.0.0: + version "7.1.2" + resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== dependencies: - postcss-selector-parser "^6.0.9" - -postcss-font-variant@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66" - integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== - -postcss-gap-properties@^3.0.5: - version "3.0.5" - resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz#f7e3cddcf73ee19e94ccf7cb77773f9560aa2fff" - integrity sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg== + entities "^4.4.0" -postcss-image-set-function@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz#08353bd756f1cbfb3b6e93182c7829879114481f" - integrity sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw== - dependencies: - postcss-value-parser "^4.2.0" +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -postcss-import@^15.1.0: - version "15.1.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" - integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== +pascal-case@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz" + integrity sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ== dependencies: - postcss-value-parser "^4.0.0" - read-cache "^1.0.0" - resolve "^1.1.7" + camel-case "^3.0.0" + upper-case-first "^1.1.0" -postcss-initial@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-4.0.1.tgz#529f735f72c5724a0fb30527df6fb7ac54d7de42" - integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== -postcss-js@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" - integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== +patch-package@6.2.2: + version "6.2.2" + resolved "https://registry.npmjs.org/patch-package/-/patch-package-6.2.2.tgz" + integrity sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg== dependencies: - camelcase-css "^2.0.1" + "@yarnpkg/lockfile" "^1.1.0" + chalk "^2.4.2" + cross-spawn "^6.0.5" + find-yarn-workspace-root "^1.2.1" + fs-extra "^7.0.1" + is-ci "^2.0.0" + klaw-sync "^6.0.0" + minimist "^1.2.0" + rimraf "^2.6.3" + semver "^5.6.0" + slash "^2.0.0" + tmp "^0.0.33" -postcss-lab-function@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz#6fe4c015102ff7cd27d1bd5385582f67ebdbdc98" - integrity sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w== +patch-package@^6.2.2, patch-package@^6.4.7: + version "6.5.1" + resolved "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz" + integrity sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA== dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - postcss-value-parser "^4.2.0" + "@yarnpkg/lockfile" "^1.1.0" + chalk "^4.1.2" + cross-spawn "^6.0.5" + find-yarn-workspace-root "^2.0.0" + fs-extra "^9.0.0" + is-ci "^2.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 "^1.10.2" -postcss-load-config@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd" - integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA== - dependencies: - lilconfig "^2.0.5" - yaml "^2.1.1" +path-browserify@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== -postcss-loader@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-4.3.0.tgz#2c4de9657cd4f07af5ab42bd60a673004da1b8cc" - integrity sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q== +path-case@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/path-case/-/path-case-2.1.1.tgz" + integrity sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q== dependencies: - cosmiconfig "^7.0.0" - klona "^2.0.4" - loader-utils "^2.0.0" - schema-utils "^3.0.0" - semver "^7.3.4" + no-case "^2.2.0" -postcss-loader@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" - integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" + integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== dependencies: - cosmiconfig "^7.0.0" - klona "^2.0.5" - semver "^7.3.5" + pinkie-promise "^2.0.0" -postcss-loader@^7.2.4: - version "7.3.2" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.3.2.tgz#ac3344ad1f14bb65df135744b7efae4dbdad4301" - integrity sha512-c7qDlXErX6n0VT+LUsW+nwefVtTu3ORtVvK8EXuUIDcxo+b/euYqpuHlJAvePb0Af5e8uMjR/13e0lTuYifaig== - dependencies: - cosmiconfig "^8.1.3" - jiti "^1.18.2" - klona "^2.0.6" - semver "^7.3.8" +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== -postcss-logical@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-5.0.4.tgz#ec75b1ee54421acc04d5921576b7d8db6b0e6f73" - integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g== +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -postcss-media-minmax@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz#7140bddec173e2d6d657edbd8554a55794e2a5b5" - integrity sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ== +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -postcss-merge-longhand@^5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" - integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== - dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^5.1.1" +path-is-inside@^1.0.2: + 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== -postcss-merge-rules@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" - integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - cssnano-utils "^3.1.0" - postcss-selector-parser "^6.0.5" +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== -postcss-minify-font-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" - integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== - dependencies: - postcss-value-parser "^4.2.0" +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -postcss-minify-gradients@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" - integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== - dependencies: - colord "^2.9.1" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" +path-parse@^1.0.6, path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -postcss-minify-params@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" - integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== - dependencies: - browserslist "^4.21.4" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== -postcss-minify-selectors@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" - integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== dependencies: - postcss-selector-parser "^6.0.5" + isarray "0.0.1" -postcss-modules-extract-imports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" - integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" + integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== dependencies: - postcss "^7.0.5" + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" -postcss-modules-extract-imports@^3.0.0: +path-type@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== - -postcss-modules-local-by-default@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" - integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== + resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== dependencies: - icss-utils "^4.1.1" - postcss "^7.0.32" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" + pify "^3.0.0" -postcss-modules-local-by-default@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz#b08eb4f083050708998ba2c6061b50c2870ca524" - integrity sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -postcss-modules-scope@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" - integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== -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== +pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: + version "3.1.2" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== dependencies: - postcss-selector-parser "^6.0.4" + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" -postcss-modules-values@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" - integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== - dependencies: - icss-utils "^4.0.0" - postcss "^7.0.6" +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" +pg-cloudflare@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pg-cloudflare/-/pg-cloudflare-1.1.0.tgz#833d70870d610d14bf9df7afb40e1cba310c17a0" + integrity sha512-tGM8/s6frwuAIyRcJ6nWcIvd3+3NmUKIs6OjviIm1HPPFEt5MzQDOTBQyhPWg/m0kCl95M6gA1JaIXtS8KovOA== -postcss-nested@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" - integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== - dependencies: - postcss-selector-parser "^6.0.11" +pg-connection-string@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.0.tgz#12a36cc4627df19c25cc1b9b736cc39ee1f73ae8" + integrity sha512-x14ibktcwlHKoHxx9X3uTVW9zIGR41ZB6QNhHb21OPNdCCO3NaRnpJuwKIQSR4u+Yqjx4HCvy7Hh7VSy1U4dGg== -postcss-nesting@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.2.0.tgz#0b12ce0db8edfd2d8ae0aaf86427370b898890be" - integrity sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA== - dependencies: - "@csstools/selector-specificity" "^2.0.0" - postcss-selector-parser "^6.0.10" +pg-int8@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" + integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== -postcss-normalize-charset@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" - integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== +pg-pool@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.0.tgz#3190df3e4747a0d23e5e9e8045bcd99bda0a712e" + integrity sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ== -postcss-normalize-display-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" - integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== - dependencies: - postcss-value-parser "^4.2.0" +pg-protocol@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833" + integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== -postcss-normalize-positions@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" - integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== +pg-types@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" + integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== dependencies: - postcss-value-parser "^4.2.0" + pg-int8 "1.0.1" + postgres-array "~2.0.0" + postgres-bytea "~1.0.0" + postgres-date "~1.0.4" + postgres-interval "^1.1.0" -postcss-normalize-repeat-style@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" - integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== +pg@^8.4.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/pg/-/pg-8.11.0.tgz#a37e534e94b57a7ed811e926f23a7c56385f55d9" + integrity sha512-meLUVPn2TWgJyLmy7el3fQQVwft4gU5NGyvV0XbD41iU9Jbg8lCH4zexhIkihDzVHJStlt6r088G6/fWeNjhXA== dependencies: - postcss-value-parser "^4.2.0" + buffer-writer "2.0.0" + packet-reader "1.0.0" + pg-connection-string "^2.6.0" + pg-pool "^3.6.0" + pg-protocol "^1.6.0" + pg-types "^2.1.0" + pgpass "1.x" + optionalDependencies: + pg-cloudflare "^1.1.0" -postcss-normalize-string@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" - integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== +pgpass@1.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" + integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== dependencies: - postcss-value-parser "^4.2.0" + split2 "^4.1.0" -postcss-normalize-timing-functions@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" - integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== - dependencies: - postcss-value-parser "^4.2.0" +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -postcss-normalize-unicode@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" - integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== - dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -postcss-normalize-url@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" - integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== - dependencies: - normalize-url "^6.0.1" - postcss-value-parser "^4.2.0" +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== -postcss-normalize-whitespace@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" - integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== - dependencies: - postcss-value-parser "^4.2.0" +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== -postcss-normalize@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-10.0.1.tgz#464692676b52792a06b06880a176279216540dd7" - integrity sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA== - dependencies: - "@csstools/normalize.css" "*" - postcss-browser-comments "^4" - sanitize.css "*" +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -postcss-opacity-percentage@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz#5b89b35551a556e20c5d23eb5260fbfcf5245da6" - integrity sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A== +pify@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== -postcss-ordered-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" - integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== dependencies: - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" + pinkie "^2.0.0" -postcss-overflow-shorthand@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz#7ed6486fec44b76f0eab15aa4866cda5d55d893e" - integrity sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A== - dependencies: - postcss-value-parser "^4.2.0" +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== -postcss-page-break@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f" - integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== - -postcss-place@^7.0.5: - version "7.0.5" - resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-7.0.5.tgz#95dbf85fd9656a3a6e60e832b5809914236986c4" - integrity sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-preset-env@^7.0.1: - version "7.8.3" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz#2a50f5e612c3149cc7af75634e202a5b2ad4f1e2" - integrity sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag== - dependencies: - "@csstools/postcss-cascade-layers" "^1.1.1" - "@csstools/postcss-color-function" "^1.1.1" - "@csstools/postcss-font-format-keywords" "^1.0.1" - "@csstools/postcss-hwb-function" "^1.0.2" - "@csstools/postcss-ic-unit" "^1.0.1" - "@csstools/postcss-is-pseudo-class" "^2.0.7" - "@csstools/postcss-nested-calc" "^1.0.0" - "@csstools/postcss-normalize-display-values" "^1.0.1" - "@csstools/postcss-oklab-function" "^1.1.1" - "@csstools/postcss-progressive-custom-properties" "^1.3.0" - "@csstools/postcss-stepped-value-functions" "^1.0.1" - "@csstools/postcss-text-decoration-shorthand" "^1.0.0" - "@csstools/postcss-trigonometric-functions" "^1.0.2" - "@csstools/postcss-unset-value" "^1.0.2" - autoprefixer "^10.4.13" - browserslist "^4.21.4" - css-blank-pseudo "^3.0.3" - css-has-pseudo "^3.0.4" - css-prefers-color-scheme "^6.0.3" - cssdb "^7.1.0" - postcss-attribute-case-insensitive "^5.0.2" - postcss-clamp "^4.1.0" - postcss-color-functional-notation "^4.2.4" - postcss-color-hex-alpha "^8.0.4" - postcss-color-rebeccapurple "^7.1.1" - postcss-custom-media "^8.0.2" - postcss-custom-properties "^12.1.10" - postcss-custom-selectors "^6.0.3" - postcss-dir-pseudo-class "^6.0.5" - postcss-double-position-gradients "^3.1.2" - postcss-env-function "^4.0.6" - postcss-focus-visible "^6.0.4" - postcss-focus-within "^5.0.4" - postcss-font-variant "^5.0.0" - postcss-gap-properties "^3.0.5" - postcss-image-set-function "^4.0.7" - postcss-initial "^4.0.1" - postcss-lab-function "^4.2.1" - postcss-logical "^5.0.4" - postcss-media-minmax "^5.0.0" - postcss-nesting "^10.2.0" - postcss-opacity-percentage "^1.1.2" - postcss-overflow-shorthand "^3.0.4" - postcss-page-break "^3.0.4" - postcss-place "^7.0.5" - postcss-pseudo-class-any-link "^7.1.6" - postcss-replace-overflow-wrap "^4.0.0" - postcss-selector-not "^6.0.1" - postcss-value-parser "^4.2.0" - -postcss-pseudo-class-any-link@^7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz#2693b221902da772c278def85a4d9a64b6e617ab" - integrity sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w== +pino-abstract-transport@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz" + integrity sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA== dependencies: - postcss-selector-parser "^6.0.10" + readable-stream "^4.0.0" + split2 "^4.0.0" -postcss-reduce-initial@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" - integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== +pino-multi-stream@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/pino-multi-stream/-/pino-multi-stream-5.3.0.tgz" + integrity sha512-4fAGCRll18I+JmoAbxDvU9zc5sera/3c+VgTtUdoNMOZ/VSHB+HMAYtixKpeRmZTDHDDdE2rtwjVkuwWB8mYQA== dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" + pino "^6.0.0" -postcss-reduce-transforms@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" - integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== +pino-pretty@*, pino-pretty@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-10.0.1.tgz#54a11182068949ff3069f1f7857f297a14926e58" + integrity sha512-yrn00+jNpkvZX/NrPVCPIVHAfTDy3ahF0PND9tKqZk4j9s+loK8dpzrJj4dGb7i+WLuR50ussuTAiWoMWU+qeA== dependencies: - postcss-value-parser "^4.2.0" - -postcss-replace-overflow-wrap@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" - integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== + colorette "^2.0.7" + dateformat "^4.6.3" + fast-copy "^3.0.0" + fast-safe-stringify "^2.1.1" + help-me "^4.0.1" + joycon "^3.1.1" + minimist "^1.2.6" + on-exit-leak-free "^2.1.0" + pino-abstract-transport "^1.0.0" + pump "^3.0.0" + readable-stream "^4.0.0" + secure-json-parse "^2.4.0" + sonic-boom "^3.0.0" + strip-json-comments "^3.1.1" -postcss-selector-not@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz#8f0a709bf7d4b45222793fc34409be407537556d" - integrity sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ== +pino-sentry@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/pino-sentry/-/pino-sentry-0.14.0.tgz" + integrity sha512-UwX0zgJk2ToA1c1f6QpJ7OlWEwxMFt5apJgCYNhhBbuuJuPDmqEzDRMrWKcbF3HKFuupoaNWK6S3o4XXPmI9Rw== dependencies: - postcss-selector-parser "^6.0.10" + "@sentry/node" "^6.2.5||^7.1.1" + commander "^2.20.0" + pumpify "^2.0.1" + split2 "^3.1.1" + through2 "^3.0.1" -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: - version "6.0.13" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" - integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" +pino-std-serializers@*: + version "6.1.0" + resolved "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.1.0.tgz" + integrity sha512-KO0m2f1HkrPe9S0ldjx7za9BJjeHqBku5Ch8JyxETxT8dEFGz1PwgrHaOQupVYitpzbFSYm7nnljxD8dik2c+g== -postcss-selector-parser@^6.0.2: - version "6.0.11" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz" - integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" +pino-std-serializers@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz" + integrity sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg== -postcss-svgo@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" - integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== +pino@^6.0.0, pino@^6.11.3: + version "6.14.0" + resolved "https://registry.npmjs.org/pino/-/pino-6.14.0.tgz" + integrity sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg== dependencies: - postcss-value-parser "^4.2.0" - svgo "^2.7.0" + fast-redact "^3.0.0" + fast-safe-stringify "^2.0.8" + flatstr "^1.0.12" + pino-std-serializers "^3.1.0" + process-warning "^1.0.0" + quick-format-unescaped "^4.0.3" + sonic-boom "^1.0.2" -postcss-unique-selectors@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" - integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + 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== dependencies: - postcss-selector-parser "^6.0.5" + find-up "^4.0.0" -postcss-value-parser@^3.3.0: - version "3.3.1" - resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== +please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== + dependencies: + semver-compare "^1.0.0" -postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== -postcss@^7.0.14, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.39" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" - integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== - dependencies: - picocolors "^0.2.1" - source-map "^0.6.1" +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== postcss@^8.1.10: - version "8.4.21" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz" - 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" - -postcss@^8.2.14, postcss@^8.3.5, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.4: - version "8.4.24" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.24.tgz#f714dba9b2284be3cc07dbd2fc57ee4dc972d2df" - integrity sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg== + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== dependencies: nanoid "^3.3.6" picocolors "^1.0.0" @@ -26363,11 +15746,6 @@ postinstall-postinstall@^2.1.0: resolved "https://registry.npmjs.org/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz" integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== -preact@10.4.1: - version "10.4.1" - resolved "https://registry.npmjs.org/preact/-/preact-10.4.1.tgz" - integrity sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q== - prebuild-install@^5.3.4: version "5.3.6" resolved "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.6.tgz" @@ -26464,52 +15842,6 @@ prettier@^2.1.2, prettier@^2.2.1, prettier@^2.3.1, prettier@^2.7.1, prettier@^2. resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== -pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: - 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-error@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" - integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== - dependencies: - lodash "^4.17.20" - renderkid "^3.0.0" - -pretty-format@^27.0.2, pretty-format@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" - 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.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== - dependencies: - "@jest/schemas" "^28.1.3" - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -pretty-format@^29.0.0, pretty-format@^29.5.0: - version "29.5.0" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz" - integrity sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw== - dependencies: - "@jest/schemas" "^29.4.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -pretty-hrtime@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" - integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== - private@^0.1.6, private@^0.1.8: version "0.1.8" resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz" @@ -26537,7 +15869,7 @@ process@^0.11.10: resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -progress@^2.0.0, progress@^2.0.1: +progress@^2.0.0: version "2.0.3" resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== @@ -26570,21 +15902,13 @@ promise-to-callback@^1.0.0: is-fn "^1.0.0" set-immediate-shim "^1.0.1" -promise@^8.0.0, promise@^8.0.2, promise@^8.1.0: +promise@^8.0.0, promise@^8.0.2: version "8.3.0" resolved "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== dependencies: asap "~2.0.6" -prompts@^2.0.1, prompts@^2.4.0, prompts@^2.4.2: - 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" - promzard@^0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz" @@ -26592,7 +15916,7 @@ promzard@^0.3.0: dependencies: read "1" -prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@^15.8.1: version "15.8.1" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -26624,16 +15948,6 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" -proxy-from-env@^1.0.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@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" - integrity sha512-LmUECmrW7RVj6mDWKjTXfKug7TFGdiz9P18HMcO4RHL+RW7MCOGNvpj5j47Rnp6ne6r4fZ2VzyUWEpKbg+tsjQ== - prr@~1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" @@ -26644,7 +15958,7 @@ pseudomap@^1.0.1, pseudomap@^1.0.2: resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== -psl@^1.1.28, psl@^1.1.33: +psl@^1.1.28: version "1.9.0" resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== @@ -26709,14 +16023,6 @@ pull-window@^2.1.4: dependencies: looper "^2.0.0" -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - pump@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" @@ -26725,15 +16031,6 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - pumpify@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz" @@ -26753,55 +16050,21 @@ punycode@2.1.0: resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz" integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== -punycode@^1.3.2: - version "1.4.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" - integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== - punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -puppeteer-core@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-2.1.1.tgz#e9b3fbc1237b4f66e25999832229e9db3e0b90ed" - integrity sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w== - dependencies: - "@types/mime-types" "^2.1.0" - debug "^4.1.0" - extract-zip "^1.6.6" - https-proxy-agent "^4.0.0" - mime "^2.0.3" - mime-types "^2.1.25" - progress "^2.0.1" - proxy-from-env "^1.0.0" - rimraf "^2.6.1" - ws "^6.1.0" - pure-rand@^5.0.1: version "5.0.5" resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-5.0.5.tgz" integrity sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw== -q@^1.1.2, q@^1.5.1: +q@^1.5.1: version "1.5.1" resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== -qrcode@1.4.4: - version "1.4.4" - resolved "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz" - 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" - qs@6.11.0, qs@^6.10.5, qs@^6.11.0, qs@^6.4.0, qs@^6.7.0, qs@^6.9.4: version "6.11.0" resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" @@ -26809,13 +16072,6 @@ qs@6.11.0, qs@^6.10.5, qs@^6.11.0, qs@^6.4.0, qs@^6.7.0, qs@^6.9.4: dependencies: side-channel "^1.0.4" -qs@^6.10.0: - version "6.11.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" - integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== - dependencies: - side-channel "^1.0.4" - qs@~6.5.2: version "6.5.3" resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" @@ -26829,15 +16085,6 @@ query-ast@^1.0.3: invariant "2.2.4" lodash "^4.17.21" -query-string@6.13.5: - version "6.13.5" - resolved "https://registry.npmjs.org/query-string/-/query-string-6.13.5.tgz" - 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@^5.0.1: version "5.1.1" resolved "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz" @@ -26862,11 +16109,6 @@ querystring@0.2.0: resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - queue-microtask@^1.2.2, queue-microtask@^1.2.3: version "1.2.3" resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" @@ -26887,18 +16129,6 @@ quick-lru@^5.1.1: resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== -raf@^3.4.1: - version "3.4.1" - resolved "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz" - integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== - dependencies: - performance-now "^2.1.0" - -ramda@0.29.0: - version "0.29.0" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.29.0.tgz#fbbb67a740a754c8a4cbb41e2a6e0eb8507f55fb" - integrity sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA== - random-bytes-seed@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/random-bytes-seed/-/random-bytes-seed-1.0.3.tgz" @@ -26919,12 +16149,7 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -range-parser@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz" - integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== - -range-parser@^1.2.1, range-parser@~1.2.1: +range-parser@~1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== @@ -26939,7 +16164,7 @@ raw-body@2.5.1, raw-body@^2.4.1: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: +rc@^1.2.7: version "1.2.8" resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -26949,356 +16174,11 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-app-polyfill@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz#95221e0a9bd259e5ca6b177c7bb1cb6768f68fd7" - integrity sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w== - dependencies: - core-js "^3.19.2" - object-assign "^4.1.1" - promise "^8.1.0" - raf "^3.4.1" - regenerator-runtime "^0.13.9" - whatwg-fetch "^3.6.2" - -react-app-rewired@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/react-app-rewired/-/react-app-rewired-2.2.1.tgz#84901ee1e3f26add0377ebec0b41bcdfce9fc211" - integrity sha512-uFQWTErXeLDrMzOJHKp0h8P1z0LV9HzPGsJ6adOtGlA/B9WfT6Shh4j2tLTTGlXOfiVx6w6iWpp7SOC5pvk+gA== - dependencies: - semver "^5.6.0" - -react-bootstrap-daterangepicker@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/react-bootstrap-daterangepicker/-/react-bootstrap-daterangepicker-8.0.0.tgz#5c60670fae3cf9193fa274e4e12d9c878cb40d63" - integrity sha512-zwEMHq93/a0f2C2Cc/Q1zxN+jYWF4JsWEwVkJ2xVGp++Oc3Ck/fI2F9kiEqY1n8oKV0WFT4+cTcoagG7sWuXXw== - -react-card-flip@^1.1.5: - version "1.2.0" - resolved "https://registry.npmjs.org/react-card-flip/-/react-card-flip-1.2.0.tgz" - integrity sha512-5/tbaSBoTTdxV2glail7fr7W7CqNG/4BOm17pNmI1b6TwtRRUrElPdAO4h235MGU2dDwqyWBzO+H8y2Ax6BTpA== - -react-colorful@^5.1.2: - version "5.6.1" - resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.6.1.tgz#7dc2aed2d7c72fac89694e834d179e32f3da563b" - integrity sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw== - -react-datepicker@^4.6.0: - version "4.16.0" - resolved "https://registry.yarnpkg.com/react-datepicker/-/react-datepicker-4.16.0.tgz#b9dd389bb5611a1acc514bba1dd944be21dd877f" - integrity sha512-hNQ0PAg/LQoVbDUO/RWAdm/RYmPhN3cz7LuQ3hqbs24OSp69QCiKOJRrQ4jk1gv1jNR5oYu8SjjgfDh8q6Q1yw== - dependencies: - "@popperjs/core" "^2.11.8" - classnames "^2.2.6" - date-fns "^2.30.0" - prop-types "^15.7.2" - react-onclickoutside "^6.12.2" - react-popper "^2.3.0" - -react-day-picker@^8.8.0: - version "8.8.0" - resolved "https://registry.yarnpkg.com/react-day-picker/-/react-day-picker-8.8.0.tgz#582b9d5e54a84926f159be2b4004801707b3c885" - integrity sha512-QIC3uOuyGGbtypbd5QEggsCSqVaPNu8kzUWquZ7JjW9fuWB9yv7WyixKmnaFelTLXFdq7h7zU6n/aBleBqe/dA== - -react-dev-utils@^12.0.1: - version "12.0.1" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" - integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== - dependencies: - "@babel/code-frame" "^7.16.0" - address "^1.1.2" - browserslist "^4.18.1" - chalk "^4.1.2" - cross-spawn "^7.0.3" - detect-port-alt "^1.1.6" - escape-string-regexp "^4.0.0" - filesize "^8.0.6" - find-up "^5.0.0" - fork-ts-checker-webpack-plugin "^6.5.0" - global-modules "^2.0.0" - globby "^11.0.4" - gzip-size "^6.0.0" - immer "^9.0.7" - is-root "^2.1.0" - loader-utils "^3.2.0" - open "^8.4.0" - pkg-up "^3.1.0" - prompts "^2.4.2" - react-error-overlay "^6.0.11" - recursive-readdir "^2.2.2" - shell-quote "^1.7.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -react-docgen-typescript@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz#4611055e569edc071204aadb20e1c93e1ab1659c" - integrity sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg== - -react-docgen@^5.0.0: - version "5.4.3" - resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-5.4.3.tgz#7d297f73b977d0c7611402e5fc2a168acf332b26" - integrity sha512-xlLJyOlnfr8lLEEeaDZ+X2J/KJoe6Nr9AzxnkdQWush5hz2ZSu66w6iLMOScMmxoSHWpWMn+k3v5ZiyCfcWsOA== - dependencies: - "@babel/core" "^7.7.5" - "@babel/generator" "^7.12.11" - "@babel/runtime" "^7.7.6" - ast-types "^0.14.2" - commander "^2.19.0" - doctrine "^3.0.0" - estree-to-babel "^3.1.0" - neo-async "^2.6.1" - node-dir "^0.1.10" - strip-indent "^3.0.0" - -react-dom@^17.0.2: - version "17.0.2" - resolved "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" - integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler "^0.20.2" - -react-element-to-jsx-string@^15.0.0: - version "15.0.0" - resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz#1cafd5b6ad41946ffc8755e254da3fc752a01ac6" - integrity sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ== - dependencies: - "@base2/pretty-print-object" "1.0.1" - is-plain-object "5.0.0" - react-is "18.1.0" - -react-error-overlay@^6.0.11: - version "6.0.11" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" - integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== - -react-fast-compare@^3.0.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" - integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== - -react-ga4@^1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/react-ga4/-/react-ga4-1.4.1.tgz" - integrity sha512-ioBMEIxd4ePw4YtaloTUgqhQGqz5ebDdC4slEpLgy2sLx1LuZBC9iYCwDymTXzcntw6K1dHX183ulP32nNdG7w== - -react-inspector@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-6.0.2.tgz#aa3028803550cb6dbd7344816d5c80bf39d07e9d" - integrity sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ== - -react-is@18.1.0: - version "18.1.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67" - integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg== - -react-is@^16.10.2, react-is@^16.13.1, react-is@^16.7.0: +react-is@^16.13.1: version "16.13.1" resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^17.0.1, react-is@^17.0.2: - version "17.0.2" - resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -react-is@^18.0.0, react-is@^18.2.0: - 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@^3.0.4: - 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-multi-carousel@^2.6.5: - version "2.8.4" - resolved "https://registry.yarnpkg.com/react-multi-carousel/-/react-multi-carousel-2.8.4.tgz#eee6493878974e372e5aa9944754602ec0f34968" - integrity sha512-7Is5Wr+m2ebkR+oq2Su2tjUdBwpVtB2O6Tjb74KDNfxWe/FrsTQwezTJTk/r9cKCrRp9Li308v822/5bZm7XKg== - -react-onclickoutside@^6.12.2: - version "6.13.0" - resolved "https://registry.yarnpkg.com/react-onclickoutside/-/react-onclickoutside-6.13.0.tgz#e165ea4e5157f3da94f4376a3ab3e22a565f4ffc" - integrity sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A== - -react-popper@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-2.3.0.tgz#17891c620e1320dce318bad9fede46a5f71c70ba" - integrity sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q== - dependencies: - react-fast-compare "^3.0.1" - warning "^4.0.2" - -react-property@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/react-property/-/react-property-2.0.0.tgz" - integrity sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw== - -react-redux@^8.0.5: - version "8.0.5" - resolved "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz" - integrity sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw== - 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" - -react-refresh@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" - integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== - -react-resize-detector@^7.1.2: - version "7.1.2" - resolved "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-7.1.2.tgz" - integrity sha512-zXnPJ2m8+6oq9Nn8zsep/orts9vQv3elrpA+R8XTcW7DVVUJ9vwDwMXaBtykAYjMnkCIaOoK9vObyR7ZgFNlOw== - dependencies: - lodash "^4.17.21" - -react-router-dom@^6.2.1: - version "6.14.1" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.14.1.tgz#0ad7ba7abdf75baa61169d49f096f0494907a36f" - integrity sha512-ssF6M5UkQjHK70fgukCJyjlda0Dgono2QGwqGvuk7D+EDGHdacEN3Yke2LTMjkrpHuFwBfDFsEjGVXBDmL+bWw== - dependencies: - "@remix-run/router" "1.7.1" - react-router "6.14.1" - -react-router@6.14.1: - version "6.14.1" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.14.1.tgz#5e82bcdabf21add859dc04b1859f91066b3a5810" - integrity sha512-U4PfgvG55LdvbQjg5Y9QRWyVxIdO1LlpYT7x+tMAxd9/vmiPuJhIwdxZuIQLN/9e3O4KFDHYfR9gzGeYMasW8g== - dependencies: - "@remix-run/router" "1.7.1" - -react-scripts@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-5.0.1.tgz#6285dbd65a8ba6e49ca8d651ce30645a6d980003" - integrity sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ== - dependencies: - "@babel/core" "^7.16.0" - "@pmmmwh/react-refresh-webpack-plugin" "^0.5.3" - "@svgr/webpack" "^5.5.0" - babel-jest "^27.4.2" - babel-loader "^8.2.3" - babel-plugin-named-asset-import "^0.3.8" - babel-preset-react-app "^10.0.1" - bfj "^7.0.2" - browserslist "^4.18.1" - camelcase "^6.2.1" - case-sensitive-paths-webpack-plugin "^2.4.0" - css-loader "^6.5.1" - css-minimizer-webpack-plugin "^3.2.0" - dotenv "^10.0.0" - dotenv-expand "^5.1.0" - eslint "^8.3.0" - eslint-config-react-app "^7.0.1" - eslint-webpack-plugin "^3.1.1" - file-loader "^6.2.0" - fs-extra "^10.0.0" - html-webpack-plugin "^5.5.0" - identity-obj-proxy "^3.0.0" - jest "^27.4.3" - jest-resolve "^27.4.2" - jest-watch-typeahead "^1.0.0" - mini-css-extract-plugin "^2.4.5" - postcss "^8.4.4" - postcss-flexbugs-fixes "^5.0.2" - postcss-loader "^6.2.1" - postcss-normalize "^10.0.1" - postcss-preset-env "^7.0.1" - prompts "^2.4.2" - react-app-polyfill "^3.0.0" - react-dev-utils "^12.0.1" - react-refresh "^0.11.0" - resolve "^1.20.0" - resolve-url-loader "^4.0.0" - sass-loader "^12.3.0" - semver "^7.3.5" - source-map-loader "^3.0.0" - style-loader "^3.3.1" - tailwindcss "^3.0.2" - terser-webpack-plugin "^5.2.5" - webpack "^5.64.4" - webpack-dev-server "^4.6.0" - webpack-manifest-plugin "^4.0.2" - workbox-webpack-plugin "^6.4.1" - optionalDependencies: - fsevents "^2.3.2" - -react-select@^5.2.2: - version "5.7.0" - resolved "https://registry.npmjs.org/react-select/-/react-select-5.7.0.tgz" - integrity sha512-lJGiMxCa3cqnUr2Jjtg9YHsaytiZqeNOKeibv6WF5zbK/fPegZ1hg3y/9P1RZVLhqBTs0PfqQLKuAACednYGhQ== - dependencies: - "@babel/runtime" "^7.12.0" - "@emotion/cache" "^11.4.0" - "@emotion/react" "^11.8.1" - "@floating-ui/dom" "^1.0.1" - "@types/react-transition-group" "^4.4.0" - memoize-one "^6.0.0" - prop-types "^15.6.0" - react-transition-group "^4.3.0" - use-isomorphic-layout-effect "^1.1.2" - -react-smooth@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/react-smooth/-/react-smooth-2.0.1.tgz" - integrity sha512-Own9TA0GPPf3as4vSwFhDouVfXP15ie/wIHklhyKBH5AN6NFtdk0UpHBnonV11BtqDkAWlt40MOUc+5srmW7NA== - dependencies: - fast-equals "^2.0.0" - react-transition-group "2.9.0" - -react-svg@^16.1.15: - version "16.1.15" - resolved "https://registry.yarnpkg.com/react-svg/-/react-svg-16.1.15.tgz#24b5b7a79e17aa13f351d669e1eb9018ea3c3ce8" - integrity sha512-xXRku+OlcSE5k6JrJ6jdOFJVAqPcOb1HL93dqi5An2Qe2GMX0RNdvq9JOWUxLroSmV0I3PY2zz3i5+BhAB4yVg== - dependencies: - "@babel/runtime" "^7.22.3" - "@tanem/svg-injector" "^10.1.56" - "@types/prop-types" "^15.7.5" - prop-types "^15.8.1" - -react-transition-group@2.9.0: - version "2.9.0" - resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz" - integrity sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg== - dependencies: - dom-helpers "^3.4.0" - loose-envify "^1.4.0" - prop-types "^15.6.2" - react-lifecycles-compat "^3.0.4" - -react-transition-group@^4.3.0, react-transition-group@^4.4.5: - version "4.4.5" - resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz" - integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== - dependencies: - "@babel/runtime" "^7.5.5" - dom-helpers "^5.0.1" - loose-envify "^1.4.0" - prop-types "^15.6.2" - -react@^17.0.2: - version "17.0.2" - resolved "https://registry.npmjs.org/react/-/react-17.0.2.tgz" - integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -read-cache@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" - integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== - dependencies: - pify "^2.3.0" - read-cmd-shim@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz" @@ -27421,7 +16301,7 @@ read@1, read@~1.0.1: dependencies: mute-stream "~0.0.4" -"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.0, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: +"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.0, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -27430,7 +16310,7 @@ read@1, read@~1.0.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@2.3.7, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@2.3.7, readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -27443,7 +16323,7 @@ readable-stream@2.3.7, readable-stream@^2.0.0, readable-stream@^2.0.1, readable- string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^1.0.26-4, readable-stream@^1.0.33: +readable-stream@^1.0.33: version "1.1.14" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== @@ -27463,7 +16343,7 @@ readable-stream@^4.0.0: events "^3.3.0" process "^0.11.10" -readable-stream@~1.0.15, readable-stream@~1.0.26, readable-stream@~1.0.26-4, readable-stream@~1.0.31: +readable-stream@~1.0.15, readable-stream@~1.0.31: version "1.0.34" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== @@ -27504,59 +16384,6 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" -readline-transform@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/readline-transform/-/readline-transform-1.0.0.tgz" - integrity sha512-7KA6+N9IGat52d83dvxnApAWN+MtVb1MiVuMR/cf1O4kYsJG+g/Aav0AHcHKsb6StinayfPLne0+fMX2sOzAKg== - -recast@^0.21.0: - version "0.21.5" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.21.5.tgz#e8cd22bb51bcd6130e54f87955d33a2b2e57b495" - integrity sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg== - dependencies: - ast-types "0.15.2" - esprima "~4.0.0" - source-map "~0.6.1" - tslib "^2.0.1" - -recast@^0.23.1: - version "0.23.2" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.23.2.tgz#d3dda3e8f0a3366860d7508c00e34a338ac52b41" - integrity sha512-Qv6cPfVZyMOtPszK6PgW70pUgm7gPlFitAPf0Q69rlOA0zLw2XdDcNmPbVGYicFGT9O8I7TZ/0ryJD+6COvIPw== - dependencies: - assert "^2.0.0" - ast-types "^0.16.1" - esprima "~4.0.0" - source-map "~0.6.1" - tslib "^2.0.1" - -recharts-scale@^0.4.4: - version "0.4.5" - resolved "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz" - integrity sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w== - dependencies: - decimal.js-light "^2.4.1" - -recharts@^2.1.10: - version "2.2.0" - resolved "https://registry.npmjs.org/recharts/-/recharts-2.2.0.tgz" - integrity sha512-/uRJ0oaESGyz//PgAzvrwXEhrKaNha1ELLysEMRklbnsddiVQsSNicP7DWiz8qFcyYXy3BrDqrUjiLiVRTSMtA== - dependencies: - "@types/d3-interpolate" "^2.0.0" - "@types/d3-scale" "^3.0.0" - "@types/d3-shape" "^2.0.0" - classnames "^2.2.5" - d3-interpolate "^2.0.0" - d3-scale "^3.0.0" - d3-shape "^2.0.0" - eventemitter3 "^4.0.1" - lodash "^4.17.19" - react-is "^16.10.2" - react-resize-detector "^7.1.2" - react-smooth "^2.0.1" - recharts-scale "^0.4.4" - reduce-css-calc "^2.1.8" - rechoir@^0.6.2: version "0.6.2" resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" @@ -27593,63 +16420,17 @@ redeyed@~2.1.0: dependencies: esprima "~4.0.0" -reduce-css-calc@^2.1.8: - version "2.1.8" - resolved "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz" - integrity sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg== - dependencies: - css-unit-converter "^1.1.1" - postcss-value-parser "^3.3.0" - reduce-flatten@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz" integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== -redux-mock-store@^1.5.4: - version "1.5.4" - resolved "https://registry.npmjs.org/redux-mock-store/-/redux-mock-store-1.5.4.tgz" - integrity sha512-xmcA0O/tjCLXhh9Fuiq6pMrJCwFRaouA8436zcikdIpYWWCjU76CRk+i2bHx8EeiSiMGnB85/lZdU3wIJVXHTA== - dependencies: - lodash.isplainobject "^4.0.6" - -redux-persist@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz" - integrity sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ== - -redux-thunk@^2.3.0: - version "2.4.2" - resolved "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz" - integrity sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q== - -redux@^4.0.5: - 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" - -redux@^4.1.2: - version "4.2.0" - resolved "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz" - integrity sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA== - dependencies: - "@babel/runtime" "^7.9.2" - reflect-metadata@^0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== -regenerate-unicode-properties@^10.1.0: - version "10.1.0" - resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz" - integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.2.1, regenerate@^1.4.2: +regenerate@^1.2.1: version "1.4.2" resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== @@ -27659,11 +16440,6 @@ regenerator-runtime@^0.11.0: resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.9: - 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-runtime@^0.14.0: version "0.14.0" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" @@ -27678,13 +16454,6 @@ regenerator-transform@^0.10.0: babel-types "^6.19.0" private "^0.1.6" -regenerator-transform@^0.15.1: - version "0.15.1" - resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz" - integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== - dependencies: - "@babel/runtime" "^7.8.4" - regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" @@ -27693,11 +16462,6 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regex-parser@^2.2.11: - version "2.2.11" - resolved "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz" - integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== - regexp-tree@^0.1.23, regexp-tree@^0.1.24, regexp-tree@~0.1.1: version "0.1.24" resolved "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.24.tgz" @@ -27731,55 +16495,11 @@ regexpu-core@^2.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" -regexpu-core@^5.2.1: - version "5.2.2" - resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz" - 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" - -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== - dependencies: - "@babel/regjsgen" "^0.8.0" - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - -registry-auth-token@3.3.2: - version "3.3.2" - resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz" - integrity sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ== - dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" - -registry-url@3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz" - integrity sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA== - dependencies: - rc "^1.0.1" - regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz" integrity sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g== -regjsgen@^0.7.1: - version "0.7.1" - resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz" - integrity sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA== - regjsparser@^0.1.4: version "0.1.5" resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz" @@ -27787,18 +16507,6 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" - integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== - release-zalgo@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz" @@ -27806,17 +16514,6 @@ release-zalgo@^1.0.0: dependencies: es6-error "^4.0.1" -remark-external-links@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/remark-external-links/-/remark-external-links-8.0.0.tgz#308de69482958b5d1cd3692bc9b725ce0240f345" - integrity sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA== - dependencies: - extend "^3.0.0" - is-absolute-url "^3.0.0" - mdast-util-definitions "^4.0.0" - space-separated-tokens "^1.0.0" - unist-util-visit "^2.0.0" - remark-footnotes@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-3.0.0.tgz" @@ -27848,26 +16545,6 @@ remark-parse@^9.0.0: dependencies: mdast-util-from-markdown "^0.8.0" -remark-slug@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/remark-slug/-/remark-slug-6.1.0.tgz#0503268d5f0c4ecb1f33315c00465ccdd97923ce" - integrity sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ== - dependencies: - github-slugger "^1.0.0" - mdast-util-to-string "^1.0.0" - unist-util-visit "^2.0.0" - -renderkid@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" - integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== - dependencies: - css-select "^4.1.3" - dom-converter "^0.2.0" - htmlparser2 "^6.1.0" - lodash "^4.17.21" - strip-ansi "^6.0.1" - repeat-element@^1.1.2: version "1.1.4" resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz" @@ -27981,16 +16658,6 @@ require-package-name@^2.0.1: resolved "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz" integrity sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q== -requireindex@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" - integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - reserved-words@^0.1.2: version "0.1.2" resolved "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz" @@ -28023,38 +16690,11 @@ resolve-from@^5.0.0: resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-url-loader@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" - integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA== - dependencies: - adjust-sourcemap-loader "^4.0.0" - convert-source-map "^1.7.0" - loader-utils "^2.0.0" - postcss "^7.0.35" - source-map "0.6.1" - -resolve-url-loader@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz#ee3142fb1f1e0d9db9524d539cfa166e9314f795" - integrity sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg== - dependencies: - adjust-sourcemap-loader "^4.0.0" - convert-source-map "^1.7.0" - loader-utils "^2.0.0" - postcss "^8.2.14" - source-map "0.6.1" - resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== -resolve.exports@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" - integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== - resolve@1.1.x: version "1.1.7" resolved "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" @@ -28067,7 +16707,7 @@ resolve@1.17.0: dependencies: path-parse "^1.0.6" -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.14.2, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.2, resolve@^1.3.2, resolve@^1.8.1, resolve@~1.22.1: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.18.1, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.3.2, resolve@^1.8.1, resolve@~1.22.1: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== @@ -28085,11 +16725,6 @@ resolve@^2.0.0-next.4: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -response-iterator@^0.2.6: - version "0.2.6" - resolved "https://registry.npmjs.org/response-iterator/-/response-iterator-0.2.6.tgz" - integrity sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw== - responselike@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" @@ -28137,11 +16772,6 @@ retry@^0.12.0: resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== -retry@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - reusify@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" @@ -28152,14 +16782,14 @@ rfdc@^1.3.0: resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== -rimraf@2.6.3, rimraf@~2.6.2: +rimraf@2.6.3: version "2.6.3" resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: glob "^7.1.3" -rimraf@^2.2.8, rimraf@^2.6.1, rimraf@^2.6.3: +rimraf@^2.2.8, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -28193,23 +16823,6 @@ rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4, rlp@^2.2.6, rlp@^2.2 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== - 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== - optionalDependencies: - fsevents "~2.3.2" - run-async@^2.2.0, run-async@^2.4.0: version "2.4.1" resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" @@ -28248,17 +16861,12 @@ rxjs@^7.2.0, rxjs@^7.5.1: dependencies: tslib "^2.1.0" -safe-buffer@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" - integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== - safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, 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, 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.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -28298,38 +16906,6 @@ safe-regex@^2.1.1: resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sanitize.css@*: - version "13.0.0" - resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-13.0.0.tgz#2675553974b27964c75562ade3bd85d79879f173" - integrity sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA== - -sass-loader@^10.2.0: - version "10.4.1" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.4.1.tgz#bea4e173ddf512c9d7f53e9ec686186146807cbf" - integrity sha512-aX/iJZTTpNUNx/OSYzo2KsjIUQHqvWsAhhUijFjAPdZTEhstjZI9zTNvkTTwsx+uNUJqUwOw5gacxQMx4hJxGQ== - dependencies: - klona "^2.0.4" - loader-utils "^2.0.0" - neo-async "^2.6.2" - schema-utils "^3.0.0" - semver "^7.3.2" - -sass-loader@^12.3.0: - version "12.6.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.6.0.tgz#5148362c8e2cdd4b950f3c63ac5d16dbfed37bcb" - integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== - dependencies: - klona "^2.0.4" - neo-async "^2.6.2" - -sass-loader@^13.2.2: - version "13.3.1" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-13.3.1.tgz#32ee5791434b9b4dbd1adcce76fcb4cea49cc12c" - integrity sha512-cBTxmgyVA1nXPvIK4brjJMXOMJ2v2YrQEuHqLw3LylGb3gsR6jAvdjHMcy/+JGTmmIF9SauTrLLR7bsWDMWqgg== - dependencies: - klona "^2.0.6" - neo-async "^2.6.2" - sass@^1.29.0: version "1.57.1" resolved "https://registry.npmjs.org/sass/-/sass-1.57.1.tgz" @@ -28339,36 +16915,6 @@ sass@^1.29.0: immutable "^4.0.0" source-map-js ">=0.6.2 <2.0.0" -sass@^1.43.4: - version "1.63.6" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.63.6.tgz#481610e612902e0c31c46b46cf2dad66943283ea" - integrity sha512-MJuxGMHzaOW7ipp+1KdELtqKbfAWbH7OLIdoSMnVe3EXPMTmxTmlaZDCTsgIpPCs3w99lLo9/zDKkOrJuT5byw== - dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" - source-map-js ">=0.6.2 <2.0.0" - -sass@^1.62.1: - version "1.62.1" - resolved "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz" - integrity sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A== - 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: - version "1.2.4" - resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -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" - sc-istanbul@^0.4.5: version "0.4.6" resolved "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz" @@ -28389,41 +16935,6 @@ sc-istanbul@^0.4.5: which "^1.1.1" wordwrap "^1.0.0" -scheduler@^0.20.2: - version "0.20.2" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz" - integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" - -schema-utils@^2.6.5, schema-utils@^2.7.0: - version "2.7.1" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== - dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" - -schema-utils@^3.0.0, schema-utils@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.2.tgz#36c10abca6f7577aeae136c804b0c741edeadc99" - integrity sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - schema-utils@^3.1.0, schema-utils@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" @@ -28433,16 +16944,6 @@ schema-utils@^3.1.0, schema-utils@^3.1.1: ajv "^6.12.5" ajv-keywords "^3.5.2" -schema-utils@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.1.tgz#eb2d042df8b01f4b5c276a2dfd41ba0faab72e8d" - integrity sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.9.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.1.0" - scrypt-js@2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz" @@ -28487,18 +16988,6 @@ seedrandom@3.0.1: resolved "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.1.tgz" integrity sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg== -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" - integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== - -selfsigned@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" - integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== - dependencies: - node-forge "^1" - semaphore-async-await@^1.5.1: version "1.5.1" resolved "https://registry.npmjs.org/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz" @@ -28526,38 +17015,23 @@ semver@7.3.7: dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: +semver@^6.0.0, semver@^6.1.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.1: +semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.1: version "7.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== dependencies: lru-cache "^6.0.0" -semver@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-2.3.2.tgz#b9848f25d6cf36333073ec9ef8856d42f1233e52" - integrity sha512-abLdIKCosKfpnmhS52NCTjO4RiLspDfsn37prjzGrp9im5DPJOgh82Os92vtwGh6XdQryKI/7SREZnV+aqiXrA== - semver@~5.4.1: version "5.4.1" resolved "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz" integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== -semver@~7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - send@0.18.0: version "0.18.0" resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" @@ -28599,58 +17073,13 @@ serialize-javascript@6.0.0: dependencies: randombytes "^2.1.0" -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: +serialize-javascript@^6.0.0: version "6.0.1" resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz" integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== dependencies: randombytes "^2.1.0" -serve-favicon@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.5.0.tgz#935d240cdfe0f5805307fdfe967d88942a2cbcf0" - integrity sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA== - dependencies: - etag "~1.8.1" - fresh "0.5.2" - ms "2.1.1" - parseurl "~1.3.2" - safe-buffer "5.1.1" - -serve-handler@6.1.3: - version "6.1.3" - resolved "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz" - integrity sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w== - dependencies: - bytes "3.0.0" - content-disposition "0.5.2" - fast-url-parser "1.1.3" - mime-types "2.1.18" - minimatch "3.0.4" - path-is-inside "1.0.2" - path-to-regexp "2.2.1" - range-parser "1.2.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" - integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - serve-static@1.15.0: version "1.15.0" resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" @@ -28661,21 +17090,6 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" -serve@^11.3.2: - version "11.3.2" - resolved "https://registry.npmjs.org/serve/-/serve-11.3.2.tgz" - integrity sha512-yKWQfI3xbj/f7X1lTBg91fXBP0FqjJ4TEi+ilES5yzH0iKJpN5LjNb1YzIfQg9Rqn4ECUS2SOf2+Kmepogoa5w== - dependencies: - "@zeit/schemas" "2.6.0" - ajv "6.5.3" - arg "2.0.0" - boxen "1.3.0" - chalk "2.4.1" - clipboardy "1.2.3" - compression "1.7.3" - serve-handler "6.1.3" - update-check "1.5.2" - servify@^0.1.12: version "0.1.12" resolved "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz" @@ -28717,11 +17131,6 @@ setimmediate@^1.0.5: resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" @@ -28757,11 +17166,6 @@ shallow-clone@^3.0.0: dependencies: kind-of "^6.0.2" -shallowequal@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" - integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" @@ -28786,11 +17190,6 @@ shebang-regex@^3.0.0: resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.7.3: - version "1.8.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" - integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== - shelljs@^0.8.3, shelljs@^0.8.5: version "0.8.5" resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz" @@ -28832,11 +17231,6 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" @@ -28860,13 +17254,6 @@ simple-get@^3.0.3: once "^1.3.1" simple-concat "^1.0.0" -simple-update-notifier@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz#67694c121de354af592b347cdba798463ed49c82" - integrity sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg== - dependencies: - semver "~7.0.0" - sinon@^15.2.0: version "15.2.0" resolved "https://registry.yarnpkg.com/sinon/-/sinon-15.2.0.tgz#5e44d4bc5a9b5d993871137fd3560bebfac27565" @@ -28879,11 +17266,6 @@ sinon@^15.2.0: nise "^5.1.4" supports-color "^7.2.0" -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - slash@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" @@ -28990,15 +17372,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sockjs@^0.3.24: - version "0.3.24" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" - integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== - dependencies: - faye-websocket "^0.11.3" - uuid "^8.3.2" - websocket-driver "^0.7.4" - socks-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz" @@ -29173,25 +17546,11 @@ sort-keys@^4.0.0: dependencies: is-plain-obj "^2.0.0" -source-list-map@^2.0.0, source-list-map@^2.0.1: - 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-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2: +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: 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-loader@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.2.tgz#af23192f9b344daa729f6772933194cc5fa54fee" - integrity sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg== - dependencies: - abab "^2.0.5" - iconv-lite "^0.6.3" - source-map-js "^1.0.1" - source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" @@ -29218,7 +17577,7 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@^0.5.13, source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5.19, source-map-support@^0.5.21, source-map-support@^0.5.6, source-map-support@~0.5.20: +source-map-support@^0.5.13, source-map-support@^0.5.17, source-map-support@^0.5.19, source-map-support@^0.5.21, source-map-support@^0.5.6, source-map-support@~0.5.20: 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== @@ -29231,27 +17590,15 @@ source-map-url@^0.4.0: resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz" integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== -source-map@0.6.1, 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.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== -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" +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@~0.2.0: version "0.2.0" @@ -29265,11 +17612,6 @@ sourcemap-codec@^1.4.8: resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== -space-separated-tokens@^1.0.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" - integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== - spawn-wrap@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz" @@ -29316,29 +17658,6 @@ spdx-license-ids@^3.0.0: resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz" integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - split-on-first@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz" @@ -29368,7 +17687,7 @@ split2@^4.1.0: resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== -split@^1.0.0, split@^1.0.1: +split@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/split/-/split-1.0.1.tgz" integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== @@ -29414,23 +17733,6 @@ ssri@^9.0.0: dependencies: minipass "^3.1.1" -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stack-utils@^2.0.3: - version "2.0.6" - resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" - -stackframe@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" - integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== - stacktrace-parser@^0.1.10: version "0.1.10" resolved "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz" @@ -29451,64 +17753,11 @@ statuses@2.0.1: resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - stealthy-require@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz" integrity sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g== -stop-iteration-iterator@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz" - integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== - dependencies: - internal-slot "^1.0.4" - -store2@^2.14.2: - version "2.14.2" - resolved "https://registry.yarnpkg.com/store2/-/store2-2.14.2.tgz#56138d200f9fe5f582ad63bc2704dbc0e4a45068" - integrity sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w== - -storybook-addon-sass-postcss@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/storybook-addon-sass-postcss/-/storybook-addon-sass-postcss-0.1.3.tgz#085640d42bfe563af5f45d71bea57b682cfef466" - integrity sha512-Jwi7KSx661hrFGO4q3jvMuvgObL8UdBYtvnKzXovBWyZoKsaji+sXKm6IpqGwy44R0To4dmobzZoW9q9rW3sWQ== - dependencies: - "@storybook/node-logger" "^6.1.14" - css-loader "^3.6.0" - postcss "^7.0.35" - postcss-loader "^4.2.0" - sass "^1.43.4" - sass-loader "^10.2.0" - style-loader "^1.3.0" - -storybook@^7.0.15: - version "7.1.1" - resolved "https://registry.yarnpkg.com/storybook/-/storybook-7.1.1.tgz#37218a3ce4a093c92ade7ca2ac3190521f81f49f" - integrity sha512-5/FIgiD574uwwDGtyyMuqXSOw4kzpEiPbMy1jMWmc8lI2g6vynwbyWqqXmVqtKpJa1vVCM4+KjFqZCmyXFJiZQ== - dependencies: - "@storybook/cli" "7.1.1" - -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-combiner@^0.2.2: - version "0.2.2" - resolved "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz" - integrity sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ== - dependencies: - duplexer "~0.1.1" - through "~2.3.4" - stream-shift@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz" @@ -29554,41 +17803,6 @@ string-format@^2.0.0: resolved "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz" 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-length@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-5.0.1.tgz#3d647f497b6e8e8d41e422f7e0b23bc536c8381e" - integrity sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow== - dependencies: - char-regex "^2.0.0" - strip-ansi "^7.0.1" - -string-natural-compare@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz" - integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== - -string-range@~1.2, string-range@~1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/string-range/-/string-range-1.2.2.tgz#a893ed347e72299bc83befbbf2a692a8d239d5dd" - integrity sha512-tYft6IFi8SjplJpxCUxyqisD3b+R2CSkomrtJYCkvuf1KuCAWgz7YXt4O0jip7efpfCemwHEzTEAO8EuOYgh3w== - -"string-width-cjs@npm:string-width@^4.2.0": - 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-width@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" @@ -29598,7 +17812,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -29624,16 +17838,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.8: +string.prototype.matchall@^4.0.8: 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== @@ -29702,13 +17907,6 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -"strip-ansi-cjs@npm: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-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" @@ -29737,13 +17935,6 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" @@ -29761,11 +17952,6 @@ strip-bom@^4.0.0: resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" 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-eof@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" @@ -29800,7 +17986,7 @@ strip-json-comments@2.0.1, strip-json-comments@^2.0.1, strip-json-comments@~2.0. resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== -strip-json-comments@3.1.1, strip-json-comments@^3.0.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 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== @@ -29824,75 +18010,6 @@ strong-log-transformer@^2.1.0: minimist "^1.2.0" through "^2.3.4" -style-loader@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e" - integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q== - dependencies: - loader-utils "^2.0.0" - schema-utils "^2.7.0" - -style-loader@^3.3.1, style-loader@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.3.tgz#bba8daac19930169c0c9c96706749a597ae3acff" - integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== - -style-to-js@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/style-to-js/-/style-to-js-1.1.3.tgz#2012d75dc89bf400edc29c545ed61c8626b00184" - integrity sha512-zKI5gN/zb7LS/Vm0eUwjmjrXWw8IMtyA8aPBJZdYiQTXj4+wQ3IucOLIOnF7zCHxvW8UhIGh/uZh/t9zEHXNTQ== - dependencies: - style-to-object "0.4.1" - -style-to-object@0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.4.1.tgz#53cf856f7cf7f172d72939d9679556469ba5de37" - integrity sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw== - dependencies: - inline-style-parser "0.1.1" - -styled-components@^5.3.10: - version "5.3.10" - resolved "https://registry.npmjs.org/styled-components/-/styled-components-5.3.10.tgz" - integrity sha512-3kSzSBN0TiCnGJM04UwO1HklIQQSXW7rCARUk+VyMR7clz8XVlA3jijtf5ypqoDIdNMKx3la4VvaPFR855SFcg== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/traverse" "^7.4.5" - "@emotion/is-prop-valid" "^1.1.0" - "@emotion/stylis" "^0.8.4" - "@emotion/unitless" "^0.7.4" - babel-plugin-styled-components ">= 1.12.0" - css-to-react-native "^3.0.0" - hoist-non-react-statics "^3.0.0" - shallowequal "^1.1.0" - supports-color "^5.5.0" - -stylehacks@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" - integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== - dependencies: - browserslist "^4.21.4" - postcss-selector-parser "^6.0.4" - -stylis@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" - integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== - -sucrase@^3.32.0: - version "3.32.0" - resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.32.0.tgz#c4a95e0f1e18b6847127258a75cf360bc568d4a7" - integrity sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.2" - commander "^4.0.0" - glob "7.1.6" - lines-and-columns "^1.1.6" - mz "^2.7.0" - pirates "^4.0.1" - ts-interface-checker "^0.1.9" - superagent@^8.0.5: version "8.0.6" resolved "https://registry.npmjs.org/superagent/-/superagent-8.0.6.tgz" @@ -29943,14 +18060,14 @@ supports-color@^3.1.0: dependencies: has-flag "^1.0.0" -supports-color@^5.0.0, supports-color@^5.3.0, supports-color@^5.5.0: +supports-color@^5.0.0, supports-color@^5.3.0: version "5.5.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0, supports-color@^7.2.0: +supports-color@^7.1.0, supports-color@^7.2.0: version "7.2.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -29965,56 +18082,11 @@ supports-hyperlinks@^1.0.1: has-flag "^2.0.0" supports-color "^5.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.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -svg-parser@^2.0.2: - 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@^1.2.2: - version "1.3.2" - resolved "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -svgo@^2.7.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== - 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" - swap-case@^1.1.0: version "1.1.2" resolved "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz" @@ -30040,16 +18112,6 @@ swarm-js@^0.1.40: tar "^4.0.2" xhr-request "^1.0.1" -symbol-observable@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz" - integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== - -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== - sync-request@^6.0.0: version "6.1.0" resolved "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz" @@ -30066,11 +18128,6 @@ sync-rpc@^1.2.1: dependencies: get-port "^3.1.0" -synchronous-promise@^2.0.15: - version "2.0.17" - resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.17.tgz#38901319632f946c982152586f2caf8ddc25c032" - integrity sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g== - table-layout@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz" @@ -30102,41 +18159,7 @@ table@^6.0.9, table@^6.8.0: string-width "^4.2.3" strip-ansi "^6.0.1" -tailwindcss@^3.0.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.2.tgz#2f9e35d715fdf0bbf674d90147a0684d7054a2d3" - integrity sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w== - dependencies: - "@alloc/quick-lru" "^5.2.0" - arg "^5.0.2" - chokidar "^3.5.3" - didyoumean "^1.2.2" - dlv "^1.1.3" - fast-glob "^3.2.12" - glob-parent "^6.0.2" - is-glob "^4.0.3" - jiti "^1.18.2" - lilconfig "^2.1.0" - micromatch "^4.0.5" - normalize-path "^3.0.0" - object-hash "^3.0.0" - picocolors "^1.0.0" - postcss "^8.4.23" - postcss-import "^15.1.0" - postcss-js "^4.0.1" - postcss-load-config "^4.0.1" - postcss-nested "^6.0.1" - postcss-selector-parser "^6.0.11" - postcss-value-parser "^4.2.0" - resolve "^1.22.2" - sucrase "^3.32.0" - -tapable@^1.0.0: - version "1.1.3" - resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: +tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== @@ -30162,7 +18185,7 @@ tape@^4.6.3: string.prototype.trim "~1.2.6" through "~2.3.8" -tar-fs@^2.0.0, tar-fs@^2.1.1: +tar-fs@^2.0.0: version "2.1.1" resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz" integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== @@ -30208,7 +18231,7 @@ tar@^6.0.2, tar@^6.1.0: mkdirp "^1.0.3" yallist "^4.0.0" -tar@^6.1.11, tar@^6.1.13, tar@^6.1.2: +tar@^6.1.11, tar@^6.1.2: version "6.1.15" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.15.tgz#c9738b0b98845a3b344d334b8fa3041aaba53a69" integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A== @@ -30227,23 +18250,11 @@ tdigest@^0.1.1: dependencies: bintrees "1.0.2" -telejson@^7.0.3: - version "7.1.0" - resolved "https://registry.yarnpkg.com/telejson/-/telejson-7.1.0.tgz#1ef7a0dd57eeb52cde933126f61bcc296c170f52" - integrity sha512-jFJO4P5gPebZAERPkJsqMAQ0IMA1Hi0AoSfxpnUaV6j6R2SZqlpkbS20U6dEUtA3RUYt2Ak/mTlkQzHH9Rv/hA== - dependencies: - memoizerific "^1.11.3" - temp-dir@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz" integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== -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== - temp-write@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/temp-write/-/temp-write-4.0.0.tgz" @@ -30255,54 +18266,11 @@ temp-write@^4.0.0: temp-dir "^1.0.0" uuid "^3.3.2" -temp@^0.8.4: - version "0.8.4" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" - integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== - dependencies: - rimraf "~2.6.2" - -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" - -tempy@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-1.0.1.tgz#30fe901fd869cfb36ee2bd999805aa72fbb035de" - integrity sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w== - dependencies: - del "^6.0.0" - is-stream "^2.0.0" - temp-dir "^2.0.0" - type-fest "^0.16.0" - unique-string "^2.0.0" - -term-size@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz" - integrity sha512-7dPUZQGy/+m3/wjVz3ZW5dobSoD/02NxJpoXUX0WIyjfVS3l0c+b/+9phIDFA7FHzkYtwtMFgeGZ/Y8jVTeqQQ== - dependencies: - execa "^0.7.0" - term-size@^2.1.0: version "2.2.1" resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz" integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== -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.1.3: version "5.3.6" resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz" @@ -30314,27 +18282,6 @@ terser-webpack-plugin@^5.1.3: serialize-javascript "^6.0.0" terser "^5.14.1" -terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.1, terser-webpack-plugin@^5.3.7: - version "5.3.9" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1" - integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.17" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.16.8" - -terser@^5.0.0, terser@^5.10.0, terser@^5.16.8: - version "5.17.7" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.17.7.tgz#2a8b134826fe179b711969fd9d9a0c2479b2a8c3" - integrity sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" - terser@^5.14.1: version "5.16.5" resolved "https://registry.npmjs.org/terser/-/terser-5.16.5.tgz" @@ -30408,11 +18355,6 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" -throat@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.2.tgz#51a3fbb5e11ae72e2cf74861ed5c8020f89f29fe" - integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== - through2@^2.0.0, through2@^2.0.1, through2@^2.0.3: version "2.0.5" resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" @@ -30436,27 +18378,22 @@ through2@^4.0.0: dependencies: readable-stream "3" -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8, through@~2.3, through@~2.3.4, through@~2.3.8: +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - timed-out@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz" integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== -tiny-invariant@^1.1.0, tiny-invariant@^1.3.1: +tiny-invariant@^1.1.0: version "1.3.1" resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz" integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== -tiny-warning@^1.0.2, tiny-warning@^1.0.3: +tiny-warning@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== @@ -30483,11 +18420,6 @@ tmp@0.1.0: dependencies: rimraf "^2.6.3" -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" @@ -30540,11 +18472,6 @@ toformat@^2.0.0: resolved "https://registry.npmjs.org/toformat/-/toformat-2.0.0.tgz" integrity sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ== -toggle-selection@^1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz" - integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== - toidentifier@1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" @@ -30558,23 +18485,6 @@ tough-cookie@^2.3.3, tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" -tough-cookie@^4.0.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" - integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.2.0" - url-parse "^1.5.3" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz" - integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== - dependencies: - punycode "^2.1.0" - tr46@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz" @@ -30612,11 +18522,6 @@ trough@^1.0.0: resolved "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== -truncate-middle@^1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/truncate-middle/-/truncate-middle-1.0.6.tgz" - integrity sha512-oJLDTdHAk27V+JUUu1vKYezKehx/tECV0vnJ1e8JV/rvre5oLoFMaCLP53ZwiPsw4ZIJzyLoZr/TKQABnaNF6A== - tryer@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz" @@ -30632,11 +18537,6 @@ ts-command-line-args@^2.2.0: command-line-usage "^6.1.0" string-format "^2.0.0" -ts-dedent@^2.0.0, ts-dedent@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" - integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== - ts-essentials@^1.0.0, ts-essentials@^1.0.2: version "1.0.4" resolved "https://registry.npmjs.org/ts-essentials/-/ts-essentials-1.0.4.tgz" @@ -30667,23 +18567,6 @@ ts-generator@0.1.1, ts-generator@^0.1.1: resolve "^1.8.1" ts-essentials "^1.0.0" -ts-interface-checker@^0.1.9: - version "0.1.13" - resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" - integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== - -ts-invariant@^0.10.3: - version "0.10.3" - resolved "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz" - integrity sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ== - dependencies: - tslib "^2.1.0" - -ts-md5@^1.2.11: - version "1.3.1" - resolved "https://registry.npmjs.org/ts-md5/-/ts-md5-1.3.1.tgz" - integrity sha512-DiwiXfwvcTeZ5wCE0z+2A9EseZsztaiZtGrtSaY5JOD7ekPnR/GoIVD5gXZAlK9Na9Kvpo9Waz5rW64WKAWApg== - ts-mocha@^10.0.0: version "10.0.0" resolved "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.0.0.tgz" @@ -30756,17 +18639,17 @@ tsconfig-paths@^3.14.1, tsconfig-paths@^3.5.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@1.14.1, tslib@^1.11.1, tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: - version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - tslib@2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== -tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.5.2: +tslib@^1.11.1, tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.1.0, tslib@^2.3.1, tslib@^2.5.0: version "2.5.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.3.tgz#24944ba2d990940e6e982c4bea147aba80209913" integrity sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w== @@ -30868,11 +18751,6 @@ type-fest@^0.13.1: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz" integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== -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.18.0: version "0.18.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz" @@ -30908,11 +18786,6 @@ type-fest@^0.8.0, type-fest@^0.8.1: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-fest@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" - integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== - type-is@~1.6.18: version "1.6.18" resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" @@ -30969,18 +18842,13 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" -typedarray-to-buffer@3.1.5, typedarray-to-buffer@^3.1.5: +typedarray-to-buffer@^3.1.5: 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== dependencies: is-typedarray "^1.0.0" -typedarray-to-buffer@~1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-1.0.4.tgz#9bb8ba0e841fb3f4cf1fe7c245e9f3fa8a5fe99c" - integrity sha512-vjMKrfSoUDN8/Vnqitw2FmstOfuJ73G6CrSEKnf11A6RmasVxHqfeBcnTb6RsL4pTMuV5Zsv9IiHRphMZyckUw== - typedarray@^0.0.6: version "0.0.6" resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" @@ -31116,29 +18984,6 @@ undici@^5.14.0, undici@^5.4.0: dependencies: busboy "^1.6.0" -unicode-canonical-property-names-ecmascript@^2.0.0: - 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@^2.0.0: - 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== - 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.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@^2.0.0: - 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== - unified@^9.2.2: version "9.2.2" resolved "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz" @@ -31189,13 +19034,6 @@ unique-slug@^3.0.0: dependencies: imurmurhash "^0.1.4" -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" - unist-util-is@^4.0.0: version "4.1.0" resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz" @@ -31216,15 +19054,6 @@ unist-util-visit-parents@^3.0.0: "@types/unist" "^2.0.0" unist-util-is "^4.0.0" -unist-util-visit@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" - integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== - dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^4.0.0" - unist-util-visit-parents "^3.0.0" - universal-user-agent@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz" @@ -31235,11 +19064,6 @@ universalify@^0.1.0: resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" 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.npmjs.org/universalify/-/universalify-2.0.0.tgz" @@ -31255,21 +19079,6 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -unplugin@^0.10.2: - version "0.10.2" - resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-0.10.2.tgz#0f7089c3666f592cc448d746e39e7f41e9afb01a" - integrity sha512-6rk7GUa4ICYjae5PrAllvcDeuT8pA9+j5J5EkxbMFaV+SalHhxZ7X2dohMzu6C3XzsMT+6jwR/+pwPNR3uK9MA== - dependencies: - acorn "^8.8.0" - chokidar "^3.5.3" - webpack-sources "^3.2.3" - webpack-virtual-modules "^0.4.5" - -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz" - integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== - unset-value@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" @@ -31283,11 +19092,6 @@ untildify@^4.0.0: resolved "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz" 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== - upath@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz" @@ -31301,22 +19105,6 @@ update-browserslist-db@^1.0.10, update-browserslist-db@^1.0.9: escalade "^3.1.1" picocolors "^1.0.0" -update-browserslist-db@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" - integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -update-check@1.5.2: - version "1.5.2" - resolved "https://registry.npmjs.org/update-check/-/update-check-1.5.2.tgz" - integrity sha512-1TrmYLuLj/5ZovwUS7fFd1jMH3NnFDN1y1A8dboedIDt7zs/zJMo6TwwlhYKkSeEwzleeiSBV5/3c9ufAQWDaQ== - dependencies: - registry-auth-token "3.3.2" - registry-url "3.1.0" - update-section@^0.3.3: version "0.3.3" resolved "https://registry.npmjs.org/update-section/-/update-section-0.3.3.tgz" @@ -31358,14 +19146,6 @@ url-parse-lax@^3.0.0: 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" - 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.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz" @@ -31392,23 +19172,6 @@ usb@^1.6.3: node-addon-api "^4.2.0" node-gyp-build "^4.3.0" -use-isomorphic-layout-effect@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz" - integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== - -use-resize-observer@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/use-resize-observer/-/use-resize-observer-9.1.0.tgz#14735235cf3268569c1ea468f8a90c5789fc5c6c" - integrity sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow== - dependencies: - "@juggle/resize-observer" "^3.3.1" - -use-sync-external-store@^1.0.0: - 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== - use@^3.1.0: version "3.1.1" resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz" @@ -31426,7 +19189,7 @@ utf8@3.0.0, utf8@^3.0.0: resolved "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz" integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== @@ -31449,17 +19212,7 @@ util.promisify@^1.0.0: has-symbols "^1.0.1" object.getownpropertydescriptors "^2.1.1" -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -util@^0.12.0, util@^0.12.4, util@^0.12.5: +util@^0.12.0: version "0.12.5" resolved "https://registry.npmjs.org/util/-/util-0.12.5.tgz" integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== @@ -31470,11 +19223,6 @@ util@^0.12.0, util@^0.12.4, util@^0.12.5: is-typed-array "^1.1.3" which-typed-array "^1.1.2" -utila@~0.4: - version "0.4.0" - resolved "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" - integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== - utils-merge@1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" @@ -31515,24 +19263,6 @@ v8-compile-cache@^2.0.3: resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== -v8-to-istanbul@^8.1.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" - integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -v8-to-istanbul@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" - integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - vali-date@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz" @@ -31600,35 +19330,7 @@ vscode-textmate@^8.0.0: resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-8.0.0.tgz#2c7a3b1163ef0441097e0b5d6389cd5504b59e5d" integrity sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg== -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== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -walker@^1.0.7, walker@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -warning@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" - integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== - dependencies: - loose-envify "^1.0.0" - -watchpack@^2.2.0, watchpack@^2.4.0: +watchpack@^2.4.0: version "2.4.0" resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== @@ -31636,13 +19338,6 @@ watchpack@^2.2.0, watchpack@^2.4.0: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - wcwidth@^1.0.0, wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" @@ -31678,15 +19373,6 @@ web3-bzz@1.8.1: got "12.1.0" swarm-js "^0.1.40" -web3-bzz@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.8.2.tgz" - integrity sha512-1EEnxjPnFnvNWw3XeeKuTR8PBxYd0+XWzvaLK7OJC/Go9O8llLGxrxICbKV+8cgIE0sDRBxiYx02X+6OhoAQ9w== - dependencies: - "@types/node" "^12.12.6" - got "12.1.0" - swarm-js "^0.1.40" - web3-core-helpers@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.11.tgz" @@ -31712,14 +19398,6 @@ web3-core-helpers@1.8.1: web3-eth-iban "1.8.1" web3-utils "1.8.1" -web3-core-helpers@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz" - integrity sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw== - dependencies: - web3-eth-iban "1.8.2" - web3-utils "1.8.2" - web3-core-method@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.11.tgz" @@ -31754,17 +19432,6 @@ web3-core-method@1.8.1: web3-core-subscriptions "1.8.1" web3-utils "1.8.1" -web3-core-method@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.8.2.tgz" - integrity sha512-1qnr5mw5wVyULzLOrk4B+ryO3gfGjGd/fx8NR+J2xCGLf1e6OSjxT9vbfuQ3fErk/NjSTWWreieYWLMhaogcRA== - dependencies: - "@ethersproject/transactions" "^5.6.2" - web3-core-helpers "1.8.2" - web3-core-promievent "1.8.2" - web3-core-subscriptions "1.8.2" - web3-utils "1.8.2" - web3-core-promievent@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz" @@ -31786,13 +19453,6 @@ web3-core-promievent@1.8.1: dependencies: eventemitter3 "4.0.4" -web3-core-promievent@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.8.2.tgz" - integrity sha512-nvkJWDVgoOSsolJldN33tKW6bKKRJX3MCPDYMwP5SUFOA/mCzDEoI88N0JFofDTXkh1k7gOqp1pvwi9heuaxGg== - dependencies: - eventemitter3 "4.0.4" - web3-core-requestmanager@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz" @@ -31826,17 +19486,6 @@ web3-core-requestmanager@1.8.1: web3-providers-ipc "1.8.1" web3-providers-ws "1.8.1" -web3-core-requestmanager@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.8.2.tgz" - integrity sha512-p1d090RYs5Mu7DK1yyc3GCBVZB/03rBtFhYFoS2EruGzOWs/5Q0grgtpwS/DScdRAm8wB8mYEBhY/RKJWF6B2g== - dependencies: - util "^0.12.5" - web3-core-helpers "1.8.2" - web3-providers-http "1.8.2" - web3-providers-ipc "1.8.2" - web3-providers-ws "1.8.2" - web3-core-subscriptions@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz" @@ -31862,14 +19511,6 @@ web3-core-subscriptions@1.8.1: eventemitter3 "4.0.4" web3-core-helpers "1.8.1" -web3-core-subscriptions@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.8.2.tgz" - integrity sha512-vXQogHDmAIQcKpXvGiMddBUeP9lnKgYF64+yQJhPNE5PnWr1sAibXuIPV7mIPihpFr/n/DORRj6Wh1pUv9zaTw== - dependencies: - eventemitter3 "4.0.4" - web3-core-helpers "1.8.2" - web3-core@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-core/-/web3-core-1.2.11.tgz" @@ -31909,19 +19550,6 @@ web3-core@1.8.1: web3-core-requestmanager "1.8.1" web3-utils "1.8.1" -web3-core@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3-core/-/web3-core-1.8.2.tgz" - integrity sha512-DJTVEAYcNqxkqruJE+Rxp3CIv0y5AZMwPHQmOkz/cz+MM75SIzMTc0AUdXzGyTS8xMF8h3YWMQGgGEy8SBf1PQ== - dependencies: - "@types/bn.js" "^5.1.0" - "@types/node" "^12.12.6" - bignumber.js "^9.0.0" - web3-core-helpers "1.8.2" - web3-core-method "1.8.2" - web3-core-requestmanager "1.8.2" - web3-utils "1.8.2" - web3-eth-abi@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz" @@ -31947,14 +19575,6 @@ web3-eth-abi@1.8.1, web3-eth-abi@^1.6.1: "@ethersproject/abi" "^5.6.3" web3-utils "1.8.1" -web3-eth-abi@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.8.2.tgz" - integrity sha512-Om9g3kaRNjqiNPAgKwGT16y+ZwtBzRe4ZJFGjLiSs6v5I7TPNF+rRMWuKnR6jq0azQZDj6rblvKFMA49/k48Og== - dependencies: - "@ethersproject/abi" "^5.6.3" - web3-utils "1.8.2" - web3-eth-accounts@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz" @@ -32006,22 +19626,6 @@ web3-eth-accounts@1.8.1: web3-core-method "1.8.1" web3-utils "1.8.1" -web3-eth-accounts@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.8.2.tgz" - integrity sha512-c367Ij63VCz9YdyjiHHWLFtN85l6QghgwMQH2B1eM/p9Y5lTlTX7t/Eg/8+f1yoIStXbk2w/PYM2lk+IkbqdLA== - 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.8.2" - web3-core-helpers "1.8.2" - web3-core-method "1.8.2" - web3-utils "1.8.2" - web3-eth-contract@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.11.tgz" @@ -32065,20 +19669,6 @@ web3-eth-contract@1.8.1: web3-eth-abi "1.8.1" web3-utils "1.8.1" -web3-eth-contract@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.8.2.tgz" - integrity sha512-ID5A25tHTSBNwOPjiXSVzxruz006ULRIDbzWTYIFTp7NJ7vXu/kynKK2ag/ObuTqBpMbobP8nXcA9b5EDkIdQA== - dependencies: - "@types/bn.js" "^5.1.0" - web3-core "1.8.2" - web3-core-helpers "1.8.2" - web3-core-method "1.8.2" - web3-core-promievent "1.8.2" - web3-core-subscriptions "1.8.2" - web3-eth-abi "1.8.2" - web3-utils "1.8.2" - web3-eth-ens@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz" @@ -32122,20 +19712,6 @@ web3-eth-ens@1.8.1: web3-eth-contract "1.8.1" web3-utils "1.8.1" -web3-eth-ens@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.8.2.tgz" - integrity sha512-PWph7C/CnqdWuu1+SH4U4zdrK4t2HNt0I4XzPYFdv9ugE8EuojselioPQXsVGvjql+Nt3jDLvQvggPqlMbvwRw== - dependencies: - content-hash "^2.5.2" - eth-ens-namehash "2.0.8" - web3-core "1.8.2" - web3-core-helpers "1.8.2" - web3-core-promievent "1.8.2" - web3-eth-abi "1.8.2" - web3-eth-contract "1.8.2" - web3-utils "1.8.2" - web3-eth-iban@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz" @@ -32160,14 +19736,6 @@ web3-eth-iban@1.8.1: bn.js "^5.2.1" web3-utils "1.8.1" -web3-eth-iban@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz" - integrity sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ== - dependencies: - bn.js "^5.2.1" - web3-utils "1.8.2" - web3-eth-personal@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz" @@ -32204,18 +19772,6 @@ web3-eth-personal@1.8.1: web3-net "1.8.1" web3-utils "1.8.1" -web3-eth-personal@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.8.2.tgz" - integrity sha512-Vg4HfwCr7doiUF/RC+Jz0wT4+cYaXcOWMAW2AHIjHX6Z7Xwa8nrURIeQgeEE62qcEHAzajyAdB1u6bJyTfuCXw== - dependencies: - "@types/node" "^12.12.6" - web3-core "1.8.2" - web3-core-helpers "1.8.2" - web3-core-method "1.8.2" - web3-net "1.8.2" - web3-utils "1.8.2" - web3-eth@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.11.tgz" @@ -32271,24 +19827,6 @@ web3-eth@1.8.1: web3-net "1.8.1" web3-utils "1.8.1" -web3-eth@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3-eth/-/web3-eth-1.8.2.tgz" - integrity sha512-JoTiWWc4F4TInpbvDUGb0WgDYJsFhuIjJlinc5ByjWD88Gvh+GKLsRjjFdbqe5YtwIGT4NymwoC5LQd1K6u/QQ== - dependencies: - web3-core "1.8.2" - web3-core-helpers "1.8.2" - web3-core-method "1.8.2" - web3-core-subscriptions "1.8.2" - web3-eth-abi "1.8.2" - web3-eth-accounts "1.8.2" - web3-eth-contract "1.8.2" - web3-eth-ens "1.8.2" - web3-eth-iban "1.8.2" - web3-eth-personal "1.8.2" - web3-net "1.8.2" - web3-utils "1.8.2" - web3-net@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-net/-/web3-net-1.2.11.tgz" @@ -32316,15 +19854,6 @@ web3-net@1.8.1: web3-core-method "1.8.1" web3-utils "1.8.1" -web3-net@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3-net/-/web3-net-1.8.2.tgz" - integrity sha512-1itkDMGmbgb83Dg9nporFes9/fxsU7smJ3oRXlFkg4ZHn8YJyP1MSQFPJWWwSc+GrcCFt4O5IrUTvEkHqE3xag== - dependencies: - web3-core "1.8.2" - web3-core-method "1.8.2" - web3-utils "1.8.2" - web3-provider-engine@14.2.1: version "14.2.1" resolved "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-14.2.1.tgz" @@ -32351,34 +19880,6 @@ web3-provider-engine@14.2.1: xhr "^2.2.0" xtend "^4.0.1" -web3-provider-engine@16.0.1: - version "16.0.1" - resolved "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-16.0.1.tgz" - integrity sha512-/Eglt2aocXMBiDj7Se/lyZnNDaHBaoJlaUfbP5HkLJQC/HlGbR+3/W+dINirlJDhh7b54DzgykqY7ksaU5QgTg== - dependencies: - 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-tx "^1.2.0" - 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.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.11.tgz" @@ -32405,16 +19906,6 @@ web3-providers-http@1.8.1: es6-promise "^4.2.8" web3-core-helpers "1.8.1" -web3-providers-http@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.8.2.tgz" - integrity sha512-2xY94IIEQd16+b+vIBF4IC1p7GVaz9q4EUFscvMUjtEq4ru4Atdzjs9GP+jmcoo49p70II0UV3bqQcz0TQfVyQ== - dependencies: - abortcontroller-polyfill "^1.7.3" - cross-fetch "^3.1.4" - es6-promise "^4.2.8" - web3-core-helpers "1.8.2" - web3-providers-ipc@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz" @@ -32440,14 +19931,6 @@ web3-providers-ipc@1.8.1: oboe "2.1.5" web3-core-helpers "1.8.1" -web3-providers-ipc@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.8.2.tgz" - integrity sha512-p6fqKVGFg+WiXGHWnB1hu43PbvPkDHTz4RgoEzbXugv5rtv5zfYLqm8Ba6lrJOS5ks9kGKR21a0y3NzE3u7V4w== - dependencies: - oboe "2.1.5" - web3-core-helpers "1.8.2" - web3-providers-ws@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz" @@ -32476,15 +19959,6 @@ web3-providers-ws@1.8.1: web3-core-helpers "1.8.1" websocket "^1.0.32" -web3-providers-ws@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.8.2.tgz" - integrity sha512-3s/4K+wHgbiN+Zrp9YjMq2eqAF6QGABw7wFftPdx+m5hWImV27/MoIx57c6HffNRqZXmCHnfWWFCNHHsi7wXnA== - dependencies: - eventemitter3 "4.0.4" - web3-core-helpers "1.8.2" - websocket "^1.0.32" - web3-shh@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.11.tgz" @@ -32515,16 +19989,6 @@ web3-shh@1.8.1: web3-core-subscriptions "1.8.1" web3-net "1.8.1" -web3-shh@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3-shh/-/web3-shh-1.8.2.tgz" - integrity sha512-uZ+3MAoNcaJsXXNCDnizKJ5viBNeHOFYsCbFhV755Uu52FswzTOw6DtE7yK9nYXMtIhiSgi7nwl1RYzP8pystw== - dependencies: - web3-core "1.8.2" - web3-core-method "1.8.2" - web3-core-subscriptions "1.8.2" - web3-net "1.8.2" - web3-utils@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.11.tgz" @@ -32565,19 +20029,6 @@ web3-utils@1.8.1, web3-utils@^1.0.0-beta.31, web3-utils@^1.2.5, web3-utils@^1.3. randombytes "^2.1.0" utf8 "3.0.0" -web3-utils@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz" - integrity sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA== - 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.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3/-/web3-1.2.11.tgz" @@ -32617,34 +20068,11 @@ web3@1.8.1, web3@^1.2.5, web3@^1.6.1: web3-shh "1.8.1" web3-utils "1.8.1" -web3@^1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/web3/-/web3-1.8.2.tgz" - integrity sha512-92h0GdEHW9wqDICQQKyG4foZBYi0OQkyg4CRml2F7XBl/NG+fu9o6J19kzfFXzSBoA4DnJXbyRgj/RHZv5LRiw== - dependencies: - web3-bzz "1.8.2" - web3-core "1.8.2" - web3-eth "1.8.2" - web3-eth-personal "1.8.2" - web3-net "1.8.2" - web3-shh "1.8.2" - web3-utils "1.8.2" - webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -webidl-conversions@^4.0.2: - 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== - -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - webidl-conversions@^6.1.0: version "6.1.0" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" @@ -32669,70 +20097,6 @@ webpack-cli@^5.0.1: rechoir "^0.8.0" webpack-merge "^5.7.3" -webpack-dev-middleware@^5.3.1: - version "5.3.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" - integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== - dependencies: - colorette "^2.0.10" - memfs "^3.4.3" - mime-types "^2.1.31" - range-parser "^1.2.1" - schema-utils "^4.0.0" - -webpack-dev-server@^4.6.0: - version "4.15.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.0.tgz#87ba9006eca53c551607ea0d663f4ae88be7af21" - integrity sha512-HmNB5QeSl1KpulTBQ8UT4FPrByYyaLxpJoQ0+s7EvUrMc16m0ZS1sgb1XGqzmgCPk0c9y+aaXxn11tbLzuM7NQ== - dependencies: - "@types/bonjour" "^3.5.9" - "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" - "@types/serve-index" "^1.9.1" - "@types/serve-static" "^1.13.10" - "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.1" - ansi-html-community "^0.0.8" - bonjour-service "^1.0.11" - chokidar "^3.5.3" - colorette "^2.0.10" - compression "^1.7.4" - connect-history-api-fallback "^2.0.0" - default-gateway "^6.0.3" - express "^4.17.3" - graceful-fs "^4.2.6" - html-entities "^2.3.2" - http-proxy-middleware "^2.0.3" - ipaddr.js "^2.0.1" - launch-editor "^2.6.0" - open "^8.0.9" - p-retry "^4.5.0" - rimraf "^3.0.2" - schema-utils "^4.0.0" - selfsigned "^2.1.1" - serve-index "^1.9.1" - sockjs "^0.3.24" - spdy "^4.0.2" - webpack-dev-middleware "^5.3.1" - ws "^8.13.0" - -webpack-hot-middleware@^2.25.1: - version "2.25.3" - resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.3.tgz#be343ce2848022cfd854dd82820cd730998c6794" - integrity sha512-IK/0WAHs7MTu1tzLTjio73LjS3Ov+VvBKQmE8WPlJutgG5zT6Urgq/BbAdRrHTRpyzK0dvAvFh1Qg98akxgZpA== - dependencies: - ansi-html-community "0.0.8" - html-entities "^2.1.0" - strip-ansi "^6.0.0" - -webpack-manifest-plugin@^4.0.2: - version "4.1.1" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz#10f8dbf4714ff93a215d5a45bcc416d80506f94f" - integrity sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow== - dependencies: - tapable "^2.0.0" - webpack-sources "^2.2.0" - webpack-merge@^5.7.3: version "5.8.0" resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz" @@ -32741,62 +20105,11 @@ webpack-merge@^5.7.3: clone-deep "^4.0.1" wildcard "^2.0.0" -webpack-sources@^1.4.3: - version "1.4.3" - resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack-sources@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd" - integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== - dependencies: - source-list-map "^2.0.1" - source-map "^0.6.1" - webpack-sources@^3.2.3: version "3.2.3" resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack-virtual-modules@^0.4.3, webpack-virtual-modules@^0.4.5: - version "0.4.6" - resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz#3e4008230731f1db078d9cb6f68baf8571182b45" - integrity sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA== - -webpack@5, webpack@^5.64.4: - version "5.85.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.85.1.tgz#d77406352f8f14ec847c54e4dcfb80b28c776b3f" - integrity sha512-xTb7MRf4LY8Z5rzn7aIx4TDrwYJrjcHnIfU1TqtyZOoObyuGSpAUwIvVuqq5wPnv7WEgQr8UvO1q/dgoGG4HjA== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.0" - "@webassemblyjs/ast" "^1.11.5" - "@webassemblyjs/wasm-edit" "^1.11.5" - "@webassemblyjs/wasm-parser" "^1.11.5" - acorn "^8.7.1" - acorn-import-assertions "^1.9.0" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.14.1" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.1.2" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.7" - watchpack "^2.4.0" - webpack-sources "^3.2.3" - webpack@^5.76.0: version "5.76.0" resolved "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz" @@ -32827,20 +20140,6 @@ webpack@^5.76.0: watchpack "^2.4.0" webpack-sources "^3.2.3" -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - websocket@1.0.32: version "1.0.32" resolved "https://registry.npmjs.org/websocket/-/websocket-1.0.32.tgz" @@ -32865,28 +20164,11 @@ websocket@^1.0.31, websocket@^1.0.32: utf-8-validate "^5.0.2" yaeti "^0.0.6" -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - whatwg-fetch@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz" integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== -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-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" @@ -32895,16 +20177,7 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -whatwg-url@^8.0.0, whatwg-url@^8.4.0, whatwg-url@^8.5.0: +whatwg-url@^8.4.0: version "8.7.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== @@ -32924,16 +20197,6 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which-collection@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz" - 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@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz" @@ -32990,20 +20253,13 @@ wide-align@1.1.3: dependencies: string-width "^1.0.2 || 2" -wide-align@^1.1.0, wide-align@^1.1.2, wide-align@^1.1.5: +wide-align@^1.1.0, wide-align@^1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: string-width "^1.0.2 || 2 || 3 || 4" -widest-line@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz" - integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== - dependencies: - string-width "^2.1.1" - wildcard@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz" @@ -33032,175 +20288,6 @@ wordwrapjs@^4.0.0: reduce-flatten "^2.0.0" typical "^5.2.0" -workbox-background-sync@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.6.1.tgz#08d603a33717ce663e718c30cc336f74909aff2f" - integrity sha512-trJd3ovpWCvzu4sW0E8rV3FUyIcC0W8G+AZ+VcqzzA890AsWZlUGOTSxIMmIHVusUw/FDq1HFWfy/kC/WTRqSg== - dependencies: - idb "^7.0.1" - workbox-core "6.6.1" - -workbox-broadcast-update@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.6.1.tgz#0fad9454cf8e4ace0c293e5617c64c75d8a8c61e" - integrity sha512-fBhffRdaANdeQ1V8s692R9l/gzvjjRtydBOvR6WCSB0BNE2BacA29Z4r9/RHd9KaXCPl6JTdI9q0bR25YKP8TQ== - dependencies: - workbox-core "6.6.1" - -workbox-build@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.6.1.tgz#6010e9ce550910156761448f2dbea8cfcf759cb0" - integrity sha512-INPgDx6aRycAugUixbKgiEQBWD0MPZqU5r0jyr24CehvNuLPSXp/wGOpdRJmts656lNiXwqV7dC2nzyrzWEDnw== - 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.6.1" - workbox-broadcast-update "6.6.1" - workbox-cacheable-response "6.6.1" - workbox-core "6.6.1" - workbox-expiration "6.6.1" - workbox-google-analytics "6.6.1" - workbox-navigation-preload "6.6.1" - workbox-precaching "6.6.1" - workbox-range-requests "6.6.1" - workbox-recipes "6.6.1" - workbox-routing "6.6.1" - workbox-strategies "6.6.1" - workbox-streams "6.6.1" - workbox-sw "6.6.1" - workbox-window "6.6.1" - -workbox-cacheable-response@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.6.1.tgz#284c2b86be3f4fd191970ace8c8e99797bcf58e9" - integrity sha512-85LY4veT2CnTCDxaVG7ft3NKaFbH6i4urZXgLiU4AiwvKqS2ChL6/eILiGRYXfZ6gAwDnh5RkuDbr/GMS4KSag== - dependencies: - workbox-core "6.6.1" - -workbox-core@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.6.1.tgz#7184776d4134c5ed2f086878c882728fc9084265" - integrity sha512-ZrGBXjjaJLqzVothoE12qTbVnOAjFrHDXpZe7coCb6q65qI/59rDLwuFMO4PcZ7jcbxY+0+NhUVztzR/CbjEFw== - -workbox-expiration@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.6.1.tgz#a841fa36676104426dbfb9da1ef6a630b4f93739" - integrity sha512-qFiNeeINndiOxaCrd2DeL1Xh1RFug3JonzjxUHc5WkvkD2u5abY3gZL1xSUNt3vZKsFFGGORItSjVTVnWAZO4A== - dependencies: - idb "^7.0.1" - workbox-core "6.6.1" - -workbox-google-analytics@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.6.1.tgz#a07a6655ab33d89d1b0b0a935ffa5dea88618c5d" - integrity sha512-1TjSvbFSLmkpqLcBsF7FuGqqeDsf+uAXO/pjiINQKg3b1GN0nBngnxLcXDYo1n/XxK4N7RaRrpRlkwjY/3ocuA== - dependencies: - workbox-background-sync "6.6.1" - workbox-core "6.6.1" - workbox-routing "6.6.1" - workbox-strategies "6.6.1" - -workbox-navigation-preload@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.6.1.tgz#61a34fe125558dd88cf09237f11bd966504ea059" - integrity sha512-DQCZowCecO+wRoIxJI2V6bXWK6/53ff+hEXLGlQL4Rp9ZaPDLrgV/32nxwWIP7QpWDkVEtllTAK5h6cnhxNxDA== - dependencies: - workbox-core "6.6.1" - -workbox-precaching@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.6.1.tgz#dedeeba10a2d163d990bf99f1c2066ac0d1a19e2" - integrity sha512-K4znSJ7IKxCnCYEdhNkMr7X1kNh8cz+mFgx9v5jFdz1MfI84pq8C2zG+oAoeE5kFrUf7YkT5x4uLWBNg0DVZ5A== - dependencies: - workbox-core "6.6.1" - workbox-routing "6.6.1" - workbox-strategies "6.6.1" - -workbox-range-requests@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.6.1.tgz#ddaf7e73af11d362fbb2f136a9063a4c7f507a39" - integrity sha512-4BDzk28govqzg2ZpX0IFkthdRmCKgAKreontYRC5YsAPB2jDtPNxqx3WtTXgHw1NZalXpcH/E4LqUa9+2xbv1g== - dependencies: - workbox-core "6.6.1" - -workbox-recipes@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.6.1.tgz#ea70d2b2b0b0bce8de0a9d94f274d4a688e69fae" - integrity sha512-/oy8vCSzromXokDA+X+VgpeZJvtuf8SkQ8KL0xmRivMgJZrjwM3c2tpKTJn6PZA6TsbxGs3Sc7KwMoZVamcV2g== - dependencies: - workbox-cacheable-response "6.6.1" - workbox-core "6.6.1" - workbox-expiration "6.6.1" - workbox-precaching "6.6.1" - workbox-routing "6.6.1" - workbox-strategies "6.6.1" - -workbox-routing@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.6.1.tgz#cba9a1c7e0d1ea11e24b6f8c518840efdc94f581" - integrity sha512-j4ohlQvfpVdoR8vDYxTY9rA9VvxTHogkIDwGdJ+rb2VRZQ5vt1CWwUUZBeD/WGFAni12jD1HlMXvJ8JS7aBWTg== - dependencies: - workbox-core "6.6.1" - -workbox-strategies@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.6.1.tgz#38d0f0fbdddba97bd92e0c6418d0b1a2ccd5b8bf" - integrity sha512-WQLXkRnsk4L81fVPkkgon1rZNxnpdO5LsO+ws7tYBC6QQQFJVI6v98klrJEjFtZwzw/mB/HT5yVp7CcX0O+mrw== - dependencies: - workbox-core "6.6.1" - -workbox-streams@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.6.1.tgz#b2f7ba7b315c27a6e3a96a476593f99c5d227d26" - integrity sha512-maKG65FUq9e4BLotSKWSTzeF0sgctQdYyTMq529piEN24Dlu9b6WhrAfRpHdCncRS89Zi2QVpW5V33NX8PgH3Q== - dependencies: - workbox-core "6.6.1" - workbox-routing "6.6.1" - -workbox-sw@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.6.1.tgz#d4c4ca3125088e8b9fd7a748ed537fa0247bd72c" - integrity sha512-R7whwjvU2abHH/lR6kQTTXLHDFU2izht9kJOvBRYK65FbwutT4VvnUAJIgHvfWZ/fokrOPhfoWYoPCMpSgUKHQ== - -workbox-webpack-plugin@^6.4.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.1.tgz#4f81cc1ad4e5d2cd7477a86ba83c84ee2d187531" - integrity sha512-zpZ+ExFj9NmiI66cFEApyjk7hGsfJ1YMOaLXGXBoZf0v7Iu6hL0ZBe+83mnDq3YYWAfA3fnyFejritjOHkFcrA== - 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.6.1" - -workbox-window@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.6.1.tgz#f22a394cbac36240d0dadcbdebc35f711bb7b89e" - integrity sha512-wil4nwOY58nTdCvif/KEZjQ2NP8uk3gGeRNy2jPBbzypU4BT4D9L8xiwbmDBpZlSgJd2xsT9FvSNU0gsxV51JQ== - dependencies: - "@types/trusted-types" "^2.0.2" - workbox-core "6.6.1" - workerpool@6.1.0: version "6.1.0" resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz" @@ -33211,15 +20298,6 @@ workerpool@6.2.1: resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== -"wrap-ansi-cjs@npm: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" - wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" @@ -33255,21 +20333,12 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - wrappy@1: 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@^2.3.0, write-file-atomic@^2.4.2: +write-file-atomic@^2.4.2: version "2.4.3" resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz" integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== @@ -33288,14 +20357,6 @@ write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -write-file-atomic@^4.0.2: - 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" - write-json-file@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz" @@ -33341,11 +20402,6 @@ ws@7.4.6: resolved "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@7.5.3: - version "7.5.3" - resolved "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz" - integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== - ws@^3.0.0: version "3.3.3" resolved "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz" @@ -33362,23 +20418,11 @@ ws@^5.1.1: dependencies: async-limiter "~1.0.0" -ws@^6.1.0: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" - integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== - dependencies: - async-limiter "~1.0.0" - ws@^7.4.6: version "7.5.9" resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== -ws@^8.13.0, ws@^8.2.3: - version "8.13.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" - integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== - xhr-request-promise@^0.1.2: version "0.1.3" resolved "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz" @@ -33416,56 +20460,28 @@ xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: parse-headers "^2.0.0" xtend "^4.0.0" -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - xml@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz" integrity sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw== -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== - xmlhttprequest@1.8.0: version "1.8.0" resolved "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz" integrity sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA== -xtend@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.2.0.tgz#eef6b1f198c1c8deafad8b1765a04dad4a01c5a9" - integrity sha512-SLt5uylT+4aoXxXuwtQp5ZnMMzhDb1Xkg4pEqc00WUJCQifPfV9Ub1VrNhp9kXkrjZD2I2Hl8WnjP37jzZLPZw== - xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -xtend@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.0.6.tgz#5ea657a6dba447069c2e59c58a1138cb0c5e6cee" - integrity sha512-fOZg4ECOlrMl+A6Msr7EIFcON1L26mb4NY5rurSkOex/TWhazOrg6eXD/B0XkuiYcYhQDWLXzQxLMVJ7LXwokg== - dependencies: - is-object "~0.1.2" - object-keys "~0.2.0" - -xtend@~2.1.1, xtend@~2.1.2: +xtend@~2.1.1: 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" -xtend@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a" - integrity sha512-sp/sT9OALMjRW1fKDlPeuSZlDQpkqReA0pyJukniWbTGoEKefHxhGJynE3PNhUMlcM8qWIjPwecwCw4LArS5Eg== - y18n@^3.2.1: version "3.2.2" resolved "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz" @@ -33501,16 +20517,11 @@ yallist@^4.0.0: resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@1.10.2, yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: +yaml@1.10.2, yaml@^1.10.0, yaml@^1.10.2: version "1.10.2" resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yaml@^2.1.1: - 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, yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz" @@ -33540,7 +20551,7 @@ yargs-parser@^2.4.1: camelcase "^3.0.0" lodash.assign "^4.0.6" -yargs-parser@^20.2.2, yargs-parser@^20.2.3, yargs-parser@^20.2.9: +yargs-parser@^20.2.2, yargs-parser@^20.2.3: version "20.2.9" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== @@ -33569,7 +20580,7 @@ yargs-unparser@2.0.0: flat "^5.0.2" is-plain-obj "^2.1.0" -yargs@13.3.2, yargs@^13.2.4, yargs@^13.3.0: +yargs@13.3.2, yargs@^13.3.0: version "13.3.2" resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz" integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== @@ -33598,7 +20609,7 @@ yargs@16.2.0, yargs@^16.0.0, yargs@^16.1.0, yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^15.0.0, yargs@^15.0.2, yargs@^15.1.0: +yargs@^15.0.2, yargs@^15.1.0: version "15.4.1" resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== @@ -33648,14 +20659,6 @@ yargs@^4.7.1: y18n "^3.2.1" yargs-parser "^2.4.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.npmjs.org/yn/-/yn-3.1.1.tgz" @@ -33671,18 +20674,6 @@ yocto-queue@^0.1.0: resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zen-observable-ts@^1.2.5: - version "1.2.5" - resolved "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz" - integrity sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg== - dependencies: - zen-observable "0.8.15" - -zen-observable@0.8.15: - version "0.8.15" - resolved "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz" - integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== - zksync-web3@^0.8.1: version "0.8.1" resolved "https://registry.npmjs.org/zksync-web3/-/zksync-web3-0.8.1.tgz"