diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..82ada54 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,21 @@ +{ + "extends": ["eslint:recommended", "plugin:prettier/recommended"], + "plugins": ["prettier"], + "rules": { + "prettier/prettier": "error" + }, + "overrides": [ + { + "files": ["**/*.sol"], + "parser": "solidity-eslint-parser", + "plugins": ["solidity", "prettier"], + "rules": { + "prettier/prettier": ["error", { "parser": "solidity" }], + "no-unused-vars": "off", + "no-undef": "off", + "no-empty": "off" + } + } + ] + } + \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 9a75213..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - env: { - browser: false, - es2021: true, - mocha: true, - node: true, - }, - extends: [ - "standard", - "plugin:prettier/recommended", - "plugin:node/recommended", - ], - parserOptions: { - ecmaVersion: 12, - }, - overrides: [ - { - files: ["hardhat.config.js"], - globals: { task: true }, - }, - ], -}; diff --git a/.github/workflows/.lint.yml b/.github/workflows/.lint.yml new file mode 100644 index 0000000..b9041d8 --- /dev/null +++ b/.github/workflows/.lint.yml @@ -0,0 +1,19 @@ +name: Lint + +on: + push: + branches: + - v2 + pull_request: + branches: + - v2 + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Install dependencies + run: npm install + - name: Prettier check + run: npm run prettier:solidity && npm run prettier:ts diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..6c636f1 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,25 @@ +{ + "semi": false, + "singleQuote": true, + "printWidth": 120, + "tabWidth": 2, + "overrides": [ + { + "files": "*.sol", + "options": { + "printWidth": 80, + "tabWidth": 4, + "useTabs": false, + "singleQuote": false, + "bracketSpacing": false, + } + }, + { + "files": "*.json", + "options": { + "printWidth": 80, + "tabWidth": 2 + } + } + ] +} \ No newline at end of file diff --git a/.solhint.json b/.solhint.json index f3e31e8..7ede96e 100644 --- a/.solhint.json +++ b/.solhint.json @@ -1,7 +1,9 @@ { "extends": "solhint:recommended", "rules": { + "prettier/prettier": "error", "compiler-version": ["error", "^0.8.0"], "func-visibility": ["warn", { "ignoreConstructors": true }] - } + }, + "plugins": ["prettier"] } diff --git a/contracts/IRicochetToken.sol b/contracts/IRicochetToken.sol index df51697..8842366 100644 --- a/contracts/IRicochetToken.sol +++ b/contracts/IRicochetToken.sol @@ -1,8 +1,7 @@ // SPDX-License-Identifier: AGPLv3 pragma solidity ^0.8.0; -import { ISuperAgreement } from "ricochet-exchange-sfcontracts-used/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol"; - +import {ISuperAgreement} from "ricochet-exchange-sfcontracts-used/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol"; /** * @title Superfluid's token interface. @@ -10,7 +9,6 @@ import { ISuperAgreement } from "ricochet-exchange-sfcontracts-used/ethereum-con * @author Superfluid */ interface IRicochetToken { - /************************************************************************** * Basic information *************************************************************************/ @@ -18,71 +16,79 @@ interface IRicochetToken { /** * @dev Get superfluid host contract address */ - function getHost() external view returns(address host); + function getHost() external view returns (address host); // Ricochet Token lock function lock(bool _lockIt) external; + function transferOwnership(address newOwner) external; + function downgradeFrom(address account, uint256 amount) external; - function mintTo(address account, uint256 amount, bytes memory userData) external; - function burnFrom(address account, uint256 amount, bytes memory userData) external; + + function mintTo( + address account, + uint256 amount, + bytes memory userData + ) external; + + function burnFrom( + address account, + uint256 amount, + bytes memory userData + ) external; /************************************************************************** * Real-time balance functions *************************************************************************/ /** - * @dev Calculate the real balance of a user, taking in consideration all agreements of the account - * @param account for the query - * @param timestamp Time of balance - * @return availableBalance Real-time balance - * @return deposit Account deposit - * @return owedDeposit Account owed Deposit - */ + * @dev Calculate the real balance of a user, taking in consideration all agreements of the account + * @param account for the query + * @param timestamp Time of balance + * @return availableBalance Real-time balance + * @return deposit Account deposit + * @return owedDeposit Account owed Deposit + */ function realtimeBalanceOf( - address account, - uint256 timestamp + address account, + uint256 timestamp ) - external view - returns ( - int256 availableBalance, - uint256 deposit, - uint256 owedDeposit); + external + view + returns (int256 availableBalance, uint256 deposit, uint256 owedDeposit); /// @dev realtimeBalanceOf with timestamp equals to block timestamp function realtimeBalanceOfNow( - address account + address account ) - external view + external + view returns ( int256 availableBalance, uint256 deposit, uint256 owedDeposit, - uint256 timestamp); + uint256 timestamp + ); /** - * @dev Check if one account is critical - * @param account Account check if is critical by a future time - * @param timestamp Time of balance - * @return isCritical - */ + * @dev Check if one account is critical + * @param account Account check if is critical by a future time + * @param timestamp Time of balance + * @return isCritical + */ function isAccountCritical( address account, uint256 timestamp - ) - external view - returns(bool isCritical); + ) external view returns (bool isCritical); /** - * @dev Check if one account is critical now - * @param account Account check if is critical by a future time - * @return isCritical - */ + * @dev Check if one account is critical now + * @param account Account check if is critical by a future time + * @return isCritical + */ function isAccountCriticalNow( address account - ) - external view - returns(bool isCritical); + ) external view returns (bool isCritical); /** * @dev Check if one account is solvent @@ -93,9 +99,7 @@ interface IRicochetToken { function isAccountSolvent( address account, uint256 timestamp - ) - external view - returns(bool isSolvent); + ) external view returns (bool isSolvent); /** * @dev Check if one account is solvent now @@ -104,35 +108,28 @@ interface IRicochetToken { */ function isAccountSolventNow( address account - ) - external view - returns(bool isSolvent); + ) external view returns (bool isSolvent); /** - * @dev Get a list of agreements that is active for the account - * @dev An active agreement is one that has state for the account - * @param account Account to query - * @return activeAgreements List of accounts that have non-zero states for the account - */ - function getAccountActiveAgreements(address account) - external view - returns(ISuperAgreement[] memory activeAgreements); - + * @dev Get a list of agreements that is active for the account + * @dev An active agreement is one that has state for the account + * @param account Account to query + * @return activeAgreements List of accounts that have non-zero states for the account + */ + function getAccountActiveAgreements( + address account + ) external view returns (ISuperAgreement[] memory activeAgreements); - /************************************************************************** - * Super Agreement hosting functions - *************************************************************************/ + /************************************************************************** + * Super Agreement hosting functions + *************************************************************************/ /** * @dev Create a new agreement * @param id Agreement ID * @param data Agreement data */ - function createAgreement( - bytes32 id, - bytes32[] calldata data - ) - external; + function createAgreement(bytes32 id, bytes32[] calldata data) external; /** * @dev Agreement creation event @@ -156,20 +153,14 @@ interface IRicochetToken { address agreementClass, bytes32 id, uint dataLength - ) - external view - returns(bytes32[] memory data); + ) external view returns (bytes32[] memory data); /** * @dev Create a new agreement * @param id Agreement ID * @param data Agreement data */ - function updateAgreementData( - bytes32 id, - bytes32[] calldata data - ) - external; + function updateAgreementData(bytes32 id, bytes32[] calldata data) external; /** * @dev Agreement creation event @@ -187,21 +178,14 @@ interface IRicochetToken { * @dev Close the agreement * @param id Agreement ID */ - function terminateAgreement( - bytes32 id, - uint dataLength - ) - external; + function terminateAgreement(bytes32 id, uint dataLength) external; /** * @dev Agreement termination event * @param agreementClass Contract address of the agreement * @param id Agreement ID */ - event AgreementTerminated( - address indexed agreementClass, - bytes32 id - ); + event AgreementTerminated(address indexed agreementClass, bytes32 id); /** * @dev Update agreement state slot @@ -214,8 +198,7 @@ interface IRicochetToken { address account, uint256 slotId, bytes32[] calldata slotData - ) - external; + ) external; /** * @dev Agreement account state updated event @@ -241,9 +224,7 @@ interface IRicochetToken { address account, uint256 slotId, uint dataLength - ) - external view - returns (bytes32[] memory slotData); + ) external view returns (bytes32[] memory slotData); /** * @dev Agreement account state updated event @@ -266,11 +247,7 @@ interface IRicochetToken { * Modifiers: * - onlyAgreement */ - function settleBalance( - address account, - int256 delta - ) - external; + function settleBalance(address account, int256 delta) external; /** * @dev Agreement liquidation event (DEPRECATED BY AgreementLiquidatedBy) @@ -293,10 +270,7 @@ interface IRicochetToken { * @param bailoutAccount Account that bailout the penalty account * @param bailoutAmount Amount of account bailout */ - event Bailout( - address indexed bailoutAccount, - uint256 bailoutAmount - ); + event Bailout(address indexed bailoutAccount, uint256 bailoutAmount); /** * @dev Agreement liquidation event (including agent account) @@ -346,15 +320,13 @@ interface IRicochetToken { * Modifiers: * - onlyAgreement */ - function makeLiquidationPayouts - ( + function makeLiquidationPayouts( bytes32 id, address liquidator, address penaltyAccount, uint256 rewardAmount, uint256 bailoutAmount - ) - external; + ) external; /************************************************************************** * Function modifiers for access control and parameter validations @@ -365,10 +337,9 @@ interface IRicochetToken { * NOTE: solidity-coverage not supporting it *************************************************************************/ - /// @dev The msg.sender must be host contract - //modifier onlyHost() virtual; + /// @dev The msg.sender must be host contract + //modifier onlyHost() virtual; /// @dev The msg.sender must be a listed agreement. //modifier onlyAgreement() virtual; - } diff --git a/contracts/ISETHCustom.sol b/contracts/ISETHCustom.sol index 8486117..a97987f 100644 --- a/contracts/ISETHCustom.sol +++ b/contracts/ISETHCustom.sol @@ -3,12 +3,21 @@ pragma solidity >=0.4.0; interface ISETHCustom { // using native token function upgradeByETH() external payable; + function upgradeByETHTo(address to) external payable; + function downgradeToETH(uint wad) external; // using wrapped native token - function getUnderlyingToken() external view returns(address tokenAddr); + function getUnderlyingToken() external view returns (address tokenAddr); + function upgrade(uint256 amount) external; - function upgradeTo(address to, uint256 amount, bytes calldata data) external; + + function upgradeTo( + address to, + uint256 amount, + bytes calldata data + ) external; + function downgrade(uint256 amount) external; } diff --git a/contracts/REXMarket.sol b/contracts/REXMarket.sol index 79587d8..78b9adf 100644 --- a/contracts/REXMarket.sol +++ b/contracts/REXMarket.sol @@ -13,7 +13,6 @@ import "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol"; import "./referral/IREXReferral.sol"; import "hardhat/console.sol"; - // solhint-disable not-rely-on-time abstract contract REXMarket is Ownable, SuperAppBase, Initializable { // REX Market Base Contract @@ -37,11 +36,11 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { // the distrute method can distribute it struct ShareholderUpdate { - address shareholder; - address affiliate; - int96 previousFlowRate; - int96 currentFlowRate; - ISuperToken token; + address shareholder; + address affiliate; + int96 previousFlowRate; + int96 currentFlowRate; + ISuperToken token; } struct OutputPool { @@ -60,13 +59,13 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { mapping(uint32 => OutputPool) outputPools; // Maps IDA indexes to their distributed Supertokens mapping(ISuperToken => uint32) outputPoolIndicies; // Maps tokens to their IDA indexes in OutputPools uint8 numOutputPools; // Indexes outputPools and outputPoolFees - // If there is a difference in magnitude between the inputToken and outputToken, + // If there is a difference in magnitude between the inputToken and outputToken, // the difference is scaled by this amount when crediting shares of the outputToken pool // If USDC is 1 and ETH is 5000 USDC, that's 3 orders of magnitude, so the is set to 1e(3+1) = 1e4 // an addition of +1 accounts for the case when ETH increases to 50000 USDC // This same math should be applied to any pairing of tokens (e.g. MATIC/ETH, RIC/ETH) // TL;DR: This addresses the issue that you can't sell 1 wei of USDC to ETH, 1 wei of ETH is 5000 wei of USDC - uint128 shareScaler; + uint128 shareScaler; // Keep track of the exchange rates for the last 10 distributions } @@ -77,27 +76,29 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { // A list of the last several exchange rates recorded based on the swap rate // Array here functions as a circular buffer so we have these constants - // based on these the fastest TWAP is a 3 minute twap + // based on these the fastest TWAP is a 3 minute twap uint public constant BUFFER_SIZE = 3; // 3 slot circular buffer uint public constant BUFFER_DELAY = 60; // 60 seconds - TokenExchangeRate[BUFFER_SIZE] public tokenExchangeRates; + TokenExchangeRate[BUFFER_SIZE] public tokenExchangeRates; // This is the index for the circular buffer uint256 public tokenExchangeRateIndex; event RecordTokenPrice(uint256 rate, uint256 timestamp); - function _recordExchangeRate(uint256 rate, uint256 timestamp) internal { + function _recordExchangeRate(uint256 rate, uint256 timestamp) internal { // Record the exchange rate and timestamp in the circular buffer, tokenExchangeRates if (block.timestamp - market.lastDistributionAt > BUFFER_DELAY) { // Only record the exchange rate if the last distribution was more than 60 seconds ago // This is to prevent the exchange rate from being recorded too frequently // which may cause the average exchange rate to be manipulated - tokenExchangeRates[tokenExchangeRateIndex] = TokenExchangeRate(rate, timestamp); + tokenExchangeRates[tokenExchangeRateIndex] = TokenExchangeRate( + rate, + timestamp + ); // Increment the index, account for the circular buffer structure tokenExchangeRateIndex = (tokenExchangeRateIndex + 1) % BUFFER_SIZE; emit RecordTokenPrice(rate, timestamp); } - } // Function to compute a average value from tokenExchangeRates circular buffer using the tokenExchangeRateIndex @@ -113,15 +114,11 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { } } if (sum == 0) { - return 1; // Will be 0 for the first BUFFER_SIZE distributions - } else { - - } + return 1; // Will be 0 for the first BUFFER_SIZE distributions + } else {} return sum / BUFFER_SIZE; } - - ISuperfluid internal host; // Superfluid host contract IConstantFlowAgreementV1 internal cfa; // The stored constant flow agreement class address IInstantDistributionAgreementV1 internal ida; // The stored instant dist. agreement class address @@ -167,7 +164,10 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { /// @dev Allows anyone to close any stream if the app is jailed. /// @param streamer is stream source (streamer) address - function emergencyCloseStream(address streamer, ISuperToken token) external virtual { + function emergencyCloseStream( + address streamer, + ISuperToken token + ) external virtual { // Allows anyone to close any stream if the app is jailed require(host.isAppJailed(ISuperApp(address(this))), "!jailed"); @@ -187,55 +187,55 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { /// @dev Close stream from `streamer` address if balance is less than 8 hours of streaming /// @param streamer is stream source (streamer) address function closeStream(address streamer, ISuperToken token) public { - // Only closable iff their balance is less than 8 hours of streaming - (,int96 streamerFlowRate,,) = cfa.getFlow(token, streamer, address(this)); - // int96 streamerFlowRate = getStreamRate(token, streamer); - require(int(token.balanceOf(streamer)) <= streamerFlowRate * 8 hours, - "!closable"); - - // Close the streamers stream - // Does this trigger before/afterAgreementTerminated - host.callAgreement( - cfa, - abi.encodeWithSelector( - cfa.deleteFlow.selector, - token, - streamer, - address(this), - new bytes(0) // placeholder - ), - "0x" - ); + // Only closable iff their balance is less than 8 hours of streaming + (, int96 streamerFlowRate, , ) = cfa.getFlow( + token, + streamer, + address(this) + ); + // int96 streamerFlowRate = getStreamRate(token, streamer); + require( + int(token.balanceOf(streamer)) <= streamerFlowRate * 8 hours, + "!closable" + ); + + // Close the streamers stream + // Does this trigger before/afterAgreementTerminated + host.callAgreement( + cfa, + abi.encodeWithSelector( + cfa.deleteFlow.selector, + token, + streamer, + address(this), + new bytes(0) // placeholder + ), + "0x" + ); } /// @dev Drain contract's input and output tokens balance to owner if SuperApp dont have any input streams. function emergencyDrain(ISuperToken token) external virtual onlyOwner { require(host.isAppJailed(ISuperApp(address(this))), "!jailed"); - token.transfer( - owner(), - token.balanceOf(address(this)) - ); + token.transfer(owner(), token.balanceOf(address(this))); } /// @dev Sets emission rate for a output pool/token /// @param _index IDA index for the output pool/token /// @param _emissionRate Emission rate for the output pool/token - function setEmissionRate(uint32 _index, uint128 _emissionRate) - external - onlyOwner - { + function setEmissionRate( + uint32 _index, + uint128 _emissionRate + ) external onlyOwner { market.outputPools[_index].emissionRate = _emissionRate; } - /// @dev Get output token address /// @return output token address - function getOutputPool(uint32 _index) - external - view - returns (OutputPool memory) - { + function getOutputPool( + uint32 _index + ) external view returns (OutputPool memory) { return market.outputPools[_index]; } @@ -255,10 +255,9 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { // Custom functionality that needs to be overrided by contract extending the base // Converts input token to output token - function distribute(bytes memory _ctx) - public - virtual - returns (bytes memory _newCtx); + function distribute( + bytes memory _ctx + ) public virtual returns (bytes memory _newCtx); // Market initialization methods @@ -275,7 +274,7 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { market.inputToken = _inputToken; market.rateTolerance = _rateTolerance; market.affiliateFee = _affiliateFee; - market. feeRate = _feeRate; + market.feeRate = _feeRate; } function addOutputPool( @@ -300,11 +299,10 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { /// @dev Get flow rate for `_streamer` /// @param _streamer is streamer address /// @return _requesterFlowRate `_streamer` flow rate - function getStreamRate(address _streamer, ISuperToken _token) - external - view - returns (int96 _requesterFlowRate) - { + function getStreamRate( + address _streamer, + ISuperToken _token + ) external view returns (int96 _requesterFlowRate) { (, _requesterFlowRate, , ) = cfa.getFlow( _token, _streamer, @@ -319,7 +317,10 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { /// @return _approved Is the subscription approved? /// @return _units Units of the suscription. /// @return _pendingDistribution Pending amount of tokens to be distributed for unapproved subscription. - function getIDAShares(uint32 _index, address _streamer) + function getIDAShares( + uint32 _index, + address _streamer + ) public view returns ( @@ -343,7 +344,11 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { ) internal virtual returns (bytes memory _newCtx) { // We need to go through all the output tokens and update their IDA shares _newCtx = _ctx; - (uint128 userShares, uint128 daoShares, uint128 affiliateShares) = _getShareAllocations(_shareholderUpdate); + ( + uint128 userShares, + uint128 daoShares, + uint128 affiliateShares + ) = _getShareAllocations(_shareholderUpdate); // updateOutputPools for (uint32 _index = 0; _index < market.numOutputPools; _index++) { _newCtx = _updateSubscriptionWithContext( @@ -363,64 +368,85 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { market.outputPools[_index].token ); if (_shareholderUpdate.affiliate != address(0)) { - _newCtx = _updateSubscriptionWithContext( - _newCtx, - _index, - _shareholderUpdate.affiliate, - // affiliate may get 0.2% - affiliateShares, - market.outputPools[_index].token - ); + _newCtx = _updateSubscriptionWithContext( + _newCtx, + _index, + _shareholderUpdate.affiliate, + // affiliate may get 0.2% + affiliateShares, + market.outputPools[_index].token + ); } // TODO: Update the fee taken by the DAO } - } - function _getShareAllocations(ShareholderUpdate memory _shareholderUpdate) - internal returns (uint128 userShares, uint128 daoShares, uint128 affiliateShares) + function _getShareAllocations( + ShareholderUpdate memory _shareholderUpdate + ) + internal + returns (uint128 userShares, uint128 daoShares, uint128 affiliateShares) { - (,,daoShares,) = getIDAShares(market.outputPoolIndicies[_shareholderUpdate.token], owner()); - daoShares *= market.shareScaler; - - if (address(0) != _shareholderUpdate.affiliate) { - (,,affiliateShares,) = getIDAShares(market.outputPoolIndicies[_shareholderUpdate.token], _shareholderUpdate.affiliate); - affiliateShares *= market.shareScaler; - } - - // Compute the change in flow rate, will be negative is slowing the flow rate - int96 changeInFlowRate = _shareholderUpdate.currentFlowRate - _shareholderUpdate.previousFlowRate; - uint128 feeShares; - // if the change is positive value then DAO has some new shares, - // which would be 2% of the increase in shares - if(changeInFlowRate > 0) { - // Add new shares to the DAO - feeShares = uint128(uint256(int256(changeInFlowRate)) * market.feeRate / 1e6); - if (address(0) != _shareholderUpdate.affiliate) { - affiliateShares += feeShares * market.affiliateFee / 1e6; - feeShares -= feeShares * market.affiliateFee / 1e6; - } - daoShares += feeShares; - } else { - // Make the rate positive - changeInFlowRate = -1 * changeInFlowRate; - feeShares = uint128(uint256(int256(changeInFlowRate)) * market.feeRate / 1e6); + (, , daoShares, ) = getIDAShares( + market.outputPoolIndicies[_shareholderUpdate.token], + owner() + ); + daoShares *= market.shareScaler; + if (address(0) != _shareholderUpdate.affiliate) { - affiliateShares -= (feeShares * market.affiliateFee / 1e6 > affiliateShares) ? affiliateShares : feeShares * market.affiliateFee / 1e6; - feeShares -= feeShares * market.affiliateFee / 1e6; + (, , affiliateShares, ) = getIDAShares( + market.outputPoolIndicies[_shareholderUpdate.token], + _shareholderUpdate.affiliate + ); + affiliateShares *= market.shareScaler; } - daoShares -= (feeShares > daoShares) ? daoShares : feeShares; - } - userShares = uint128(uint256(int256(_shareholderUpdate.currentFlowRate))) * (1e6 - market.feeRate) / 1e6; - // Scale back shares - affiliateShares /= market.shareScaler; - daoShares /= market.shareScaler; - userShares /= market.shareScaler; + // Compute the change in flow rate, will be negative is slowing the flow rate + int96 changeInFlowRate = _shareholderUpdate.currentFlowRate - + _shareholderUpdate.previousFlowRate; + uint128 feeShares; + // if the change is positive value then DAO has some new shares, + // which would be 2% of the increase in shares + if (changeInFlowRate > 0) { + // Add new shares to the DAO + feeShares = uint128( + (uint256(int256(changeInFlowRate)) * market.feeRate) / 1e6 + ); + if (address(0) != _shareholderUpdate.affiliate) { + affiliateShares += (feeShares * market.affiliateFee) / 1e6; + feeShares -= (feeShares * market.affiliateFee) / 1e6; + } + daoShares += feeShares; + } else { + // Make the rate positive + changeInFlowRate = -1 * changeInFlowRate; + feeShares = uint128( + (uint256(int256(changeInFlowRate)) * market.feeRate) / 1e6 + ); + if (address(0) != _shareholderUpdate.affiliate) { + affiliateShares -= ((feeShares * market.affiliateFee) / 1e6 > + affiliateShares) + ? affiliateShares + : (feeShares * market.affiliateFee) / 1e6; + feeShares -= (feeShares * market.affiliateFee) / 1e6; + } + daoShares -= (feeShares > daoShares) ? daoShares : feeShares; + } + userShares = + (uint128(uint256(int256(_shareholderUpdate.currentFlowRate))) * + (1e6 - market.feeRate)) / + 1e6; + // Scale back shares + affiliateShares /= market.shareScaler; + daoShares /= market.shareScaler; + userShares /= market.shareScaler; } - function _getShareholderInfo(bytes calldata _agreementData, ISuperToken _superToken) + function _getShareholderInfo( + bytes calldata _agreementData, + ISuperToken _superToken + ) internal view returns (address _shareholder, int96 _flowRate, uint256 _timestamp) @@ -561,26 +587,22 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { ? _prevUpdateTimestamp : _lastDistributedAt )); - } // Boolean Helpers - function _isInputToken(ISuperToken _superToken) - internal - virtual - view - returns (bool) - { + function _isInputToken( + ISuperToken _superToken + ) internal view virtual returns (bool) { return address(_superToken) == address(market.inputToken); } - function _isOutputToken(ISuperToken _superToken) - internal - view - returns (bool) - { - return market.outputPools[market.outputPoolIndicies[_superToken]].token == _superToken; + function _isOutputToken( + ISuperToken _superToken + ) internal view returns (bool) { + return + market.outputPools[market.outputPoolIndicies[_superToken]].token == + _superToken; } function _isCFAv1(address _agreementClass) internal view returns (bool) { @@ -605,33 +627,36 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { } function _shouldDistribute() internal virtual returns (bool) { + (, , uint128 _totalUnitsApproved, uint128 _totalUnitsPending) = ida + .getIndex( + market.outputPools[PRIMARY_OUTPUT_INDEX].token, + address(this), + PRIMARY_OUTPUT_INDEX + ); - (, , uint128 _totalUnitsApproved, uint128 _totalUnitsPending) = ida - .getIndex( - market.outputPools[PRIMARY_OUTPUT_INDEX].token, - address(this), - PRIMARY_OUTPUT_INDEX - ); - - // Check balance and account for just 1 input token - uint256 _balance = market.inputToken.balanceOf( - address(this) - ); + // Check balance and account for just 1 input token + uint256 _balance = market.inputToken.balanceOf(address(this)); - return _totalUnitsApproved + _totalUnitsPending > 0 && _balance > 0; + return _totalUnitsApproved + _totalUnitsPending > 0 && _balance > 0; } - function _registerReferral(bytes memory _ctx, address _shareholder) internal { - require(referrals.addressToAffiliate(_shareholder) == 0, "noAffiliates"); - ISuperfluid.Context memory decompiledContext = host.decodeCtx(_ctx); - string memory affiliateId; - if (decompiledContext.userData.length > 0) { - (affiliateId) = abi.decode(decompiledContext.userData, (string)); - } else { - affiliateId = ""; - } + function _registerReferral( + bytes memory _ctx, + address _shareholder + ) internal { + require( + referrals.addressToAffiliate(_shareholder) == 0, + "noAffiliates" + ); + ISuperfluid.Context memory decompiledContext = host.decodeCtx(_ctx); + string memory affiliateId; + if (decompiledContext.userData.length > 0) { + (affiliateId) = abi.decode(decompiledContext.userData, (string)); + } else { + affiliateId = ""; + } - referrals.safeRegisterCustomer(_shareholder, affiliateId); + referrals.safeRegisterCustomer(_shareholder, affiliateId); } // Superfluid Functions @@ -642,9 +667,7 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { bytes32, //_agreementId, bytes calldata _agreementData, bytes calldata // _ctx - ) external view virtual override returns (bytes memory _cbdata) { - - } + ) external view virtual override returns (bytes memory _cbdata) {} function afterAgreementCreated( ISuperToken _superToken, @@ -665,16 +688,20 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { } (address _shareholder, int96 _flowRate, ) = _getShareholderInfo( - _agreementData, _superToken + _agreementData, + _superToken ); _registerReferral(_ctx, _shareholder); ShareholderUpdate memory _shareholderUpdate = ShareholderUpdate( - _shareholder, referrals.getAffiliateAddress(_shareholder), 0, _flowRate, _superToken + _shareholder, + referrals.getAffiliateAddress(_shareholder), + 0, + _flowRate, + _superToken ); _newCtx = _updateShareholder(_newCtx, _shareholderUpdate); - } function beforeAgreementUpdated( @@ -684,19 +711,19 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { bytes calldata _agreementData, bytes calldata _ctx ) external view virtual override returns (bytes memory _cbdata) { - _onlyHost(); - if (!_isInputToken(_superToken) || !_isCFAv1(_agreementClass)) - return _ctx; + _onlyHost(); + if (!_isInputToken(_superToken) || !_isCFAv1(_agreementClass)) + return _ctx; - // Get the stakeholders current flow rate and save it in cbData - (, int96 _flowRate,) = _getShareholderInfo( - _agreementData, _superToken - ); + // Get the stakeholders current flow rate and save it in cbData + (, int96 _flowRate, ) = _getShareholderInfo( + _agreementData, + _superToken + ); - _cbdata = abi.encode(_flowRate); + _cbdata = abi.encode(_flowRate); } - function afterAgreementUpdated( ISuperToken _superToken, address _agreementClass, @@ -710,24 +737,27 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { return _ctx; _newCtx = _ctx; - (address _shareholder, int96 _flowRate,) = _getShareholderInfo( - _agreementData, _superToken + (address _shareholder, int96 _flowRate, ) = _getShareholderInfo( + _agreementData, + _superToken ); int96 _beforeFlowRate = abi.decode(_cbdata, (int96)); - if (_shouldDistribute()) { _newCtx = distribute(_newCtx); } ShareholderUpdate memory _shareholderUpdate = ShareholderUpdate( - _shareholder, referrals.getAffiliateAddress(_shareholder), _beforeFlowRate, _flowRate, _superToken + _shareholder, + referrals.getAffiliateAddress(_shareholder), + _beforeFlowRate, + _flowRate, + _superToken ); // TODO: Udpate shareholder needs before and after flow rate _newCtx = _updateShareholder(_newCtx, _shareholderUpdate); - } // We need before agreement to get the uninvested amount using the flowRate before update @@ -742,7 +772,11 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { if (!_isInputToken(_superToken) || !_isCFAv1(_agreementClass)) return _ctx; - (address _shareholder, int96 _flowRateMain, uint256 _timestamp) = _getShareholderInfo(_agreementData, _superToken); + ( + address _shareholder, + int96 _flowRateMain, + uint256 _timestamp + ) = _getShareholderInfo(_agreementData, _superToken); uint256 _uinvestAmount = _calcUserUninvested( _timestamp, @@ -750,7 +784,6 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { market.lastDistributionAt ); _cbdata = abi.encode(_uinvestAmount, _flowRateMain); - } function afterAgreementTerminated( @@ -766,18 +799,34 @@ abstract contract REXMarket is Ownable, SuperAppBase, Initializable { return _ctx; _newCtx = _ctx; - (address _shareholder, ) = abi.decode(_agreementData, (address, address)); - (uint256 _uninvestAmount, int96 _beforeFlowRate ) = abi.decode(_cbdata, (uint256, int96)); + (address _shareholder, ) = abi.decode( + _agreementData, + (address, address) + ); + (uint256 _uninvestAmount, int96 _beforeFlowRate) = abi.decode( + _cbdata, + (uint256, int96) + ); ShareholderUpdate memory _shareholderUpdate = ShareholderUpdate( - _shareholder, referrals.getAffiliateAddress(_shareholder), _beforeFlowRate, 0, _superToken + _shareholder, + referrals.getAffiliateAddress(_shareholder), + _beforeFlowRate, + 0, + _superToken ); _newCtx = _updateShareholder(_newCtx, _shareholderUpdate); // Refund the unswapped amount back to the person who started the stream - try _superToken.transferFrom(address(this), _shareholder, _uninvestAmount) + try + _superToken.transferFrom( + address(this), + _shareholder, + _uninvestAmount + ) // solhint-disable-next-line no-empty-blocks - {} catch { - } + { + + } catch {} } } diff --git a/contracts/REXRecurringDeposits.sol b/contracts/REXRecurringDeposits.sol index 169b094..2713b81 100644 --- a/contracts/REXRecurringDeposits.sol +++ b/contracts/REXRecurringDeposits.sol @@ -9,10 +9,9 @@ import "./superswap/interfaces/IV3SwapRouter.sol"; import "./matic/IWMATIC.sol"; import "hardhat/console.sol"; - contract RecurringDeposits is Ownable, OpsTaskCreator { - - IWMATIC public constant WMATIC = IWMATIC(0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270); + IWMATIC public constant WMATIC = + IWMATIC(0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270); ISuperToken public depositToken; ERC20 public gasToken; @@ -102,7 +101,7 @@ contract RecurringDeposits is Ownable, OpsTaskCreator { // Creates the performNextDeposit task on Gelato Network function createTask() external payable onlyOwner { require(taskId == bytes32(""), "Already started task"); - + bytes memory execData = abi.encodeCall(this.performNextDeposit, ()); ModuleData memory moduleData = ModuleData({ modules: new Module[](1), @@ -127,7 +126,6 @@ contract RecurringDeposits is Ownable, OpsTaskCreator { ); require(gasToken.transferFrom(msg.sender, address(this), amount)); gasTank[msg.sender] += amount; - } function withdrawGas(uint256 amount) public { @@ -168,7 +166,7 @@ contract RecurringDeposits is Ownable, OpsTaskCreator { // Polled by gelato to perform the next deposit, gas tank is used to reimburse the user for gas costs function performNextDeposit() public payable { - uint gasUsed = gasleft(); + uint gasUsed = gasleft(); ScheduledDeposit storage deposit = scheduledDeposits[head]; uint256 depositAmount = deposit.amount; address depositor = deposit.owner; @@ -201,9 +199,12 @@ contract RecurringDeposits is Ownable, OpsTaskCreator { // If the gelato executor is paying for the transaction, pay for the gas for them uint amountIn; - if(fee > 0) { + if (fee > 0) { amountIn = _swap(fee, type(uint256).max, 500); - require(amountIn <= gasTank[depositor], "Not enough gas in the tank"); + require( + amountIn <= gasTank[depositor], + "Not enough gas in the tank" + ); WMATIC.withdraw(WMATIC.balanceOf(address(this))); _transfer(fee, feeToken); } else { @@ -212,7 +213,6 @@ contract RecurringDeposits is Ownable, OpsTaskCreator { amountIn = _swap(fee, type(uint256).max, 500); WMATIC.transfer(depositor, amountIn); } - } // Perform a deposit (upgrade) for a specific user for a specific amount @@ -273,16 +273,21 @@ contract RecurringDeposits is Ownable, OpsTaskCreator { uint256 amountInMaximum, uint24 fee ) internal returns (uint256) { - // TODO: Use path as (USDC -> RIC -> MATIC) instead of (USDC -> MATIC) - IV3SwapRouter.ExactOutputParams memory params = IV3SwapRouter.ExactOutputParams({ - // Pass the swap through the feeToken LP - path: abi.encodePacked(address(WMATIC), fee, address(feeToken), fee, address(gasToken)), - recipient: address(this), - amountOut: amountOut, - amountInMaximum: 2000000 - }); + IV3SwapRouter.ExactOutputParams memory params = IV3SwapRouter + .ExactOutputParams({ + // Pass the swap through the feeToken LP + path: abi.encodePacked( + address(WMATIC), + fee, + address(feeToken), + fee, + address(gasToken) + ), + recipient: address(this), + amountOut: amountOut, + amountInMaximum: 2000000 + }); return router.exactOutput(params); - } } diff --git a/contracts/REXTwoWayAlluoMarket.sol b/contracts/REXTwoWayAlluoMarket.sol index acf2a64..b39cf7a 100644 --- a/contracts/REXTwoWayAlluoMarket.sol +++ b/contracts/REXTwoWayAlluoMarket.sol @@ -5,18 +5,20 @@ import "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "./REXMarket.sol"; -import './ISETHCustom.sol'; -import './alluo/IbAlluo.sol'; +import "./ISETHCustom.sol"; +import "./alluo/IbAlluo.sol"; contract REXTwoWayAlluoMarket is REXMarket { using SafeERC20 for ERC20; // DAI - address constant inputTokenAUnderlying = 0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063; + address constant inputTokenAUnderlying = + 0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063; // // WBTC // address constant inputTokenBUnderlying = 0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6; // WETH - address constant inputTokenBUnderlying = 0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619; + address constant inputTokenBUnderlying = + 0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619; ISuperToken inputTokenA; ISuperToken inputTokenB; @@ -57,48 +59,40 @@ contract REXTwoWayAlluoMarket is REXMarket { market.feeRate = _feeRate; market.affiliateFee = 500000; // TODO: Parameterize this - addOutputPool( - inputTokenA, - _feeRate, - 0 - ); - addOutputPool( - inputTokenB, - _feeRate, - 0 - ); + addOutputPool(inputTokenA, _feeRate, 0); + addOutputPool(inputTokenB, _feeRate, 0); market.outputPoolIndicies[inputTokenA] = OUTPUTA_INDEX; market.outputPoolIndicies[inputTokenB] = OUTPUTB_INDEX; // Approve ibAlluoA to deposit inputTokenA ERC20(inputTokenAUnderlying).safeIncreaseAllowance( address(inputTokenA.getUnderlyingToken()), - 2**256 - 1 + 2 ** 256 - 1 ); // otherwise approve underlying for upgrade ERC20(inputTokenBUnderlying).safeIncreaseAllowance( address(inputTokenB.getUnderlyingToken()), - 2**256 - 1 + 2 ** 256 - 1 ); // Approve ibAlluoA to deposit inputTokenA ERC20(inputTokenA.getUnderlyingToken()).safeIncreaseAllowance( address(inputTokenA), - 2**256 - 1 + 2 ** 256 - 1 ); ERC20(inputTokenB.getUnderlyingToken()).safeIncreaseAllowance( address(inputTokenB), - 2**256 - 1 + 2 ** 256 - 1 ); ERC20(inputTokenAUnderlying).safeIncreaseAllowance( address(router), - 2**256 - 1 + 2 ** 256 - 1 ); ERC20(inputTokenBUnderlying).safeIncreaseAllowance( address(router), - 2**256 - 1 + 2 ** 256 - 1 ); market.lastDistributionAt = block.timestamp; @@ -114,16 +108,8 @@ contract REXTwoWayAlluoMarket is REXMarket { address(market.outputPools[SUBSIDYB_INDEX].token) == address(0), "already initialized" ); - addOutputPool( - _subsidyToken, - 0, - _emissionRate - ); - addOutputPool( - _subsidyToken, - 0, - _emissionRate - ); + addOutputPool(_subsidyToken, 0, _emissionRate); + addOutputPool(_subsidyToken, 0, _emissionRate); lastDistributionTokenAAt = block.timestamp; lastDistributionTokenBAt = block.timestamp; // Does not need to add subsidy token to outputPoolIndicies @@ -150,11 +136,9 @@ contract REXTwoWayAlluoMarket is REXMarket { market.numOutputPools++; } - function distribute(bytes memory ctx) - public - override - returns (bytes memory newCtx) - { + function distribute( + bytes memory ctx + ) public override returns (bytes memory newCtx) { newCtx = ctx; IbAlluo ibTokenA = IbAlluo(inputTokenA.getUnderlyingToken()); @@ -163,8 +147,10 @@ contract REXTwoWayAlluoMarket is REXMarket { // At this point, we've got enough of tokenA and tokenB to perform the distribution ibTokenA.updateRatio(); ibTokenB.updateRatio(); - uint256 tokenAAmount = inputTokenA.balanceOf(address(this)) * ibTokenA.growingRatio() / 1e18; - uint256 tokenBAmount = inputTokenB.balanceOf(address(this)) * ibTokenB.growingRatio() / 1e18; + uint256 tokenAAmount = (inputTokenA.balanceOf(address(this)) * + ibTokenA.growingRatio()) / 1e18; + uint256 tokenBAmount = (inputTokenB.balanceOf(address(this)) * + ibTokenB.growingRatio()) / 1e18; // TODO: get token price from oracle @@ -178,53 +164,53 @@ contract REXTwoWayAlluoMarket is REXMarket { // tokenHave becomes tokenANeed tokenHave = tokenAAmount - tokenHave; // Convert token have A to ibAlluoA amount - inputTokenA.downgrade(tokenHave * 1e18 / ibTokenA.growingRatio()); + inputTokenA.downgrade((tokenHave * 1e18) / ibTokenA.growingRatio()); - ibTokenA.withdraw( - inputTokenAUnderlying, - tokenHave - ); + ibTokenA.withdraw(inputTokenAUnderlying, tokenHave); _swap( - inputTokenAUnderlying, - inputTokenBUnderlying, - ERC20(inputTokenAUnderlying).balanceOf(address(this)), - 0, - block.timestamp + 3600 + inputTokenAUnderlying, + inputTokenBUnderlying, + ERC20(inputTokenAUnderlying).balanceOf(address(this)), + 0, + block.timestamp + 3600 ); - ibTokenB.deposit(inputTokenBUnderlying, ERC20(inputTokenBUnderlying).balanceOf(address(this))); + ibTokenB.deposit( + inputTokenBUnderlying, + ERC20(inputTokenBUnderlying).balanceOf(address(this)) + ); inputTokenB.upgrade(ibTokenB.balanceOf(address(this))); - // Otherwise we have more tokenB than we need, swap the surplus to inputTokenA + // Otherwise we have more tokenB than we need, swap the surplus to inputTokenA } else { // TODO: Calculate token have using oracle tokenHave = 0; - // (tokenAAmount * market.oracles[inputTokenA].usdPrice) / - // market.oracles[inputTokenB].usdPrice; + // (tokenAAmount * market.oracles[inputTokenA].usdPrice) / + // market.oracles[inputTokenB].usdPrice; tokenHave = tokenBAmount - tokenHave; // Convert token have B to ibAlluoB amount - inputTokenB.downgrade(tokenHave * 1e18 / ibTokenB.growingRatio()); + inputTokenB.downgrade((tokenHave * 1e18) / ibTokenB.growingRatio()); ibTokenB.withdrawTo( - address(this), - inputTokenBUnderlying, - tokenHave + address(this), + inputTokenBUnderlying, + tokenHave ); - _swap( - inputTokenBUnderlying, - inputTokenAUnderlying, - ERC20(inputTokenBUnderlying).balanceOf(address(this)), - 0, - block.timestamp + 3600 + inputTokenBUnderlying, + inputTokenAUnderlying, + ERC20(inputTokenBUnderlying).balanceOf(address(this)), + 0, + block.timestamp + 3600 ); // Deposit inputTokenAUnderlying - ibTokenA.deposit(inputTokenAUnderlying, ERC20(inputTokenAUnderlying).balanceOf(address(this))); + ibTokenA.deposit( + inputTokenAUnderlying, + ERC20(inputTokenAUnderlying).balanceOf(address(this)) + ); inputTokenA.upgrade(ibTokenA.balanceOf(address(this))); - - } // At this point, we've got enough of tokenA and tokenB to perform the distribution @@ -406,11 +392,11 @@ contract REXTwoWayAlluoMarket is REXMarket { path[1] = output; router.swapExactTokensForTokens( - amount, - 0, - path, - address(this), - block.timestamp + 3600 + amount, + 0, + path, + address(this), + block.timestamp + 3600 ); } @@ -474,26 +460,20 @@ contract REXTwoWayAlluoMarket is REXMarket { affiliateShares, market.outputPools[outputIndex].token ); - } } - function _isInputToken(ISuperToken _superToken) - internal - view - override - returns (bool) - { + function _isInputToken( + ISuperToken _superToken + ) internal view override returns (bool) { return address(_superToken) == address(inputTokenA) || address(_superToken) == address(inputTokenB); } - function _getLastDistributionAt(ISuperToken _token) - internal - view - returns (uint256) - { + function _getLastDistributionAt( + ISuperToken _token + ) internal view returns (uint256) { return market.outputPoolIndicies[_token] == OUTPUTA_INDEX ? lastDistributionTokenBAt @@ -524,5 +504,4 @@ contract REXTwoWayAlluoMarket is REXMarket { } receive() external payable {} - } diff --git a/contracts/REXTwoWayAlluoUsdcxMarket.sol b/contracts/REXTwoWayAlluoUsdcxMarket.sol index 21d358b..23580cb 100644 --- a/contracts/REXTwoWayAlluoUsdcxMarket.sol +++ b/contracts/REXTwoWayAlluoUsdcxMarket.sol @@ -5,8 +5,8 @@ import "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "./REXMarket.sol"; -import './ISETHCustom.sol'; -import './alluo/IbAlluo.sol'; +import "./ISETHCustom.sol"; +import "./alluo/IbAlluo.sol"; contract REXTwoWayAlluoUsdcxMarket is REXMarket { using SafeERC20 for ERC20; @@ -44,24 +44,19 @@ contract REXTwoWayAlluoUsdcxMarket is REXMarket { market.rateTolerance = _rateTolerance; market.feeRate = _feeRate; market.affiliateFee = 500000; - addOutputPool( - inputTokenB, - _feeRate, - 0 - ); + addOutputPool(inputTokenB, _feeRate, 0); market.outputPoolIndicies[inputTokenB] = OUTPUTB_INDEX; - // Approve stibAlluoUSD to upgrade ibAlluoUSD ERC20(inputTokenB.getUnderlyingToken()).safeIncreaseAllowance( address(inputTokenB), - 2**256 - 1 + 2 ** 256 - 1 ); // Approve USDC to deposit to ibAlluoUSD ERC20(inputTokenA.getUnderlyingToken()).safeIncreaseAllowance( address(inputTokenB.getUnderlyingToken()), - 2**256 - 1 + 2 ** 256 - 1 ); market.lastDistributionAt = block.timestamp; @@ -76,11 +71,7 @@ contract REXTwoWayAlluoUsdcxMarket is REXMarket { address(market.outputPools[SUBSIDYB_INDEX].token) == address(0), "already initialized" ); - addOutputPool( - _subsidyToken, - 0, - _emissionRate - ); + addOutputPool(_subsidyToken, 0, _emissionRate); market.lastDistributionAt = block.timestamp; // Does not need to add subsidy token to outputPoolIndicies @@ -108,11 +99,9 @@ contract REXTwoWayAlluoUsdcxMarket is REXMarket { // updateTokenPrice(_token); } - function distribute(bytes memory ctx) - public - override - returns (bytes memory newCtx) - { + function distribute( + bytes memory ctx + ) public override returns (bytes memory newCtx) { newCtx = ctx; IbAlluo ibTokenB = IbAlluo(inputTokenB.getUnderlyingToken()); @@ -122,7 +111,10 @@ contract REXTwoWayAlluoUsdcxMarket is REXMarket { uint256 tokenBAmount; inputTokenA.downgrade(tokenAAmount - tokenBAmount); - ibTokenB.deposit(inputTokenA.getUnderlyingToken(), ERC20(inputTokenA.getUnderlyingToken()).balanceOf(address(this))); + ibTokenB.deposit( + inputTokenA.getUnderlyingToken(), + ERC20(inputTokenA.getUnderlyingToken()).balanceOf(address(this)) + ); inputTokenB.upgrade(ibTokenB.balanceOf(address(this))); // OK to distribute @@ -134,46 +126,44 @@ contract REXTwoWayAlluoUsdcxMarket is REXMarket { if (tokenBAmount == 0) { return newCtx; } else { - - (tokenBAmount, ) = ida.calculateDistribution( - inputTokenB, - address(this), - OUTPUTB_INDEX, - tokenBAmount - ); - - newCtx = _idaDistribute( - OUTPUTB_INDEX, - uint128(tokenBAmount), - inputTokenB, - newCtx - ); - emit Distribution(tokenBAmount, 0, address(inputTokenB)); - - // Distribution Subsidy - uint256 distAmount = - (block.timestamp - market.lastDistributionAt) * - market.outputPools[SUBSIDYB_INDEX].emissionRate; - if ( - distAmount < - market.outputPools[SUBSIDYB_INDEX].token.balanceOf( - address(this) - ) - ) { - newCtx = _idaDistribute( - SUBSIDYB_INDEX, - uint128(distAmount), - market.outputPools[SUBSIDYB_INDEX].token, - newCtx - ); - emit Distribution( - distAmount, - 0, - address(market.outputPools[SUBSIDYB_INDEX].token) - ); - } - - market.lastDistributionAt = block.timestamp; + (tokenBAmount, ) = ida.calculateDistribution( + inputTokenB, + address(this), + OUTPUTB_INDEX, + tokenBAmount + ); + + newCtx = _idaDistribute( + OUTPUTB_INDEX, + uint128(tokenBAmount), + inputTokenB, + newCtx + ); + emit Distribution(tokenBAmount, 0, address(inputTokenB)); + + // Distribution Subsidy + uint256 distAmount = (block.timestamp - market.lastDistributionAt) * + market.outputPools[SUBSIDYB_INDEX].emissionRate; + if ( + distAmount < + market.outputPools[SUBSIDYB_INDEX].token.balanceOf( + address(this) + ) + ) { + newCtx = _idaDistribute( + SUBSIDYB_INDEX, + uint128(distAmount), + market.outputPools[SUBSIDYB_INDEX].token, + newCtx + ); + emit Distribution( + distAmount, + 0, + address(market.outputPools[SUBSIDYB_INDEX].token) + ); + } + + market.lastDistributionAt = block.timestamp; } } @@ -233,7 +223,6 @@ contract REXTwoWayAlluoUsdcxMarket is REXMarket { _shareholderUpdate.token = inputTokenB; - ( uint128 userShares, uint128 daoShares, @@ -259,20 +248,15 @@ contract REXTwoWayAlluoUsdcxMarket is REXMarket { ); } - function _isInputToken(ISuperToken _superToken) - internal - view - override - returns (bool) - { + function _isInputToken( + ISuperToken _superToken + ) internal view override returns (bool) { return address(_superToken) == address(inputTokenA); } - function _getLastDistributionAt(ISuperToken _token) - internal - view - returns (uint256) - { + function _getLastDistributionAt( + ISuperToken _token + ) internal view returns (uint256) { return market.lastDistributionAt; } @@ -280,16 +264,16 @@ contract REXTwoWayAlluoUsdcxMarket is REXMarket { // TODO: This section should be checked, // since it only checks one IDA, - (, , uint128 _totalUnitsApproved, uint128 _totalUnitsPending) = ida.getIndex( - market.outputPools[OUTPUTB_INDEX].token, - address(this), - OUTPUTB_INDEX - ); + (, , uint128 _totalUnitsApproved, uint128 _totalUnitsPending) = ida + .getIndex( + market.outputPools[OUTPUTB_INDEX].token, + address(this), + OUTPUTB_INDEX + ); if (_totalUnitsApproved + _totalUnitsPending > 0) { return true; } return false; } - } diff --git a/contracts/REXUniswapV3Market.sol b/contracts/REXUniswapV3Market.sol index 8ed18cc..1f47e95 100644 --- a/contracts/REXUniswapV3Market.sol +++ b/contracts/REXUniswapV3Market.sol @@ -32,22 +32,26 @@ import "./referral/IREXReferral.sol"; // Hardhat console import "hardhat/console.sol"; - -contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCreator { +contract REXUniswapV3Market is + Ownable, + SuperAppBase, + Initializable, + OpsTaskCreator +{ using SafeERC20 for ERC20; // REX Market Structures - // Parameters needed to perform a shareholder update (i.e. a flow rate update) + // Parameters needed to perform a shareholder update (i.e. a flow rate update) struct ShareholderUpdate { - address shareholder; // The shareholder to update - address affiliate; // The affiliate to update - int96 previousFlowRate; // The previous flow rate of the shareholder - int96 currentFlowRate; // The current flow rate of the shareholder - ISuperToken token; // The token to update the flow rate for + address shareholder; // The shareholder to update + address affiliate; // The affiliate to update + int96 previousFlowRate; // The previous flow rate of the shareholder + int96 currentFlowRate; // The current flow rate of the shareholder + ISuperToken token; // The token to update the flow rate for } - // The struct for the output pools (i.e. Superfluid IDA pools) + // The struct for the output pools (i.e. Superfluid IDA pools) struct OutputPool { ISuperToken token; // The token to distribute uint128 feeRate; // Fee taken by the DAO on each output distribution @@ -64,7 +68,7 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea ISuperfluid internal host; // Superfluid host contract IConstantFlowAgreementV1 internal cfa; // The stored constant flow agreement class address IInstantDistributionAgreementV1 internal ida; // The stored instant dist. agreement class address - + // REX Referral System IREXReferral internal referrals; @@ -77,30 +81,29 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea uint128 public feeRate; // Fee taken by the protocol on each distribution (basis points) uint128 public affiliateFee; // Fee taken by the affilaite on each distribution (basis points) uint128 public shareScaler; // The scaler to apply to the share of the outputToken pool - ISuperToken public inputToken; // e.g. USDCx + ISuperToken public inputToken; // e.g. USDCx ISuperToken public outputToken; // e.g. ETHx ISuperToken public subsidyToken; // e.g. RICx address public underlyingInputToken; // e.g. USDC address public underlyingOutputToken; // e.g. WETH IWMATIC public wmatic; ISuperToken public maticx; - uint32 constant public OUTPUT_INDEX = 0; // Superfluid IDA Index for outputToken's output pool - uint32 constant public SUBSIDY_INDEX = 1; // Superfluid IDA Index for subsidyToken's output pool - uint256 constant public INTERVAL = 60; // The interval for gelato to check for execution - + uint32 public constant OUTPUT_INDEX = 0; // Superfluid IDA Index for outputToken's output pool + uint32 public constant SUBSIDY_INDEX = 1; // Superfluid IDA Index for subsidyToken's output pool + uint256 public constant INTERVAL = 60; // The interval for gelato to check for execution // Uniswap Variables ISwapRouter02 public router; // UniswapV3 Router IUniswapV3Pool public uniswapPool; // The Uniswap V3 pool for inputToken and outputToken address[] public uniswapPath; // The path between inputToken and outputToken - uint24 public poolFee; // The pool fee to use in the path between inputToken and outputToken + uint24 public poolFee; // The pool fee to use in the path between inputToken and outputToken // Chainlink Variables AggregatorV3Interface public priceFeed; // Chainlink price feed for the inputToken/outputToken pair bool internal invertPrice; // Whether to invert the price in rate conversions // Gelato task variables - bytes32 public taskId; + bytes32 public taskId; uint256 public gelatoFeeShare = 100; // number of basis points gelato takes for executing the task /// @dev Swap data for performance tracking overtime @@ -108,9 +111,9 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea /// @param outputAmount The amount of outputToken received /// @param oraclePrice The oracle price at the time of the swap event RexSwap( - uint256 inputAmount, + uint256 inputAmount, uint256 outputAmount, - uint256 oraclePrice + uint256 oraclePrice ); constructor( @@ -123,7 +126,6 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea address payable _ops, address _taskCreator ) OpsTaskCreator(_ops, _taskCreator) { - host = _host; cfa = _cfa; ida = _ida; @@ -132,23 +134,21 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea transferOwnership(_owner); uint256 _configWord = SuperAppDefinitions.APP_LEVEL_FINAL; - if (bytes(_registrationKey).length > 0) { host.registerAppWithKey(_configWord, _registrationKey); } else { host.registerApp(_configWord); } - } /// @dev Creates the distribute task on Gelato Network function createTask() external payable onlyOwner { // Check the task wasn't already created require(taskId == bytes32(""), "Already started task"); - + // Create a timed interval task with Gelato Network - bytes memory execData = abi.encodeCall(this.distribute, ('', false)); + bytes memory execData = abi.encodeCall(this.distribute, ("", false)); ModuleData memory moduleData = ModuleData({ modules: new Module[](1), args: new bytes[](1) @@ -176,7 +176,7 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea /// @param _outputToken is the output supertoken for the market /// @param _subsidyToken is the subsidy supertoken for the market /// @param _shareScaler is the scaler for the output (IDA) pool shares - /// @param _feeRate is the protocol dev share rate + /// @param _feeRate is the protocol dev share rate /// @param _rateTolerance is the rate tolerance for the market function initializeMarket( ISuperToken _inputToken, @@ -194,20 +194,11 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea rateTolerance = _rateTolerance; feeRate = _feeRate; affiliateFee = _affiliateFee; - + // Create a OutputPool for the outputToken - addOutputPool( - outputToken, - _feeRate, - 0 - ); + addOutputPool(outputToken, _feeRate, 0); // Create a OutputPool for the subsidyToken - addOutputPool( - subsidyToken, - _feeRate, - 0 - ); - + addOutputPool(subsidyToken, _feeRate, 0); outputPoolIndicies[outputToken] = OUTPUT_INDEX; outputPoolIndicies[subsidyToken] = SUBSIDY_INDEX; @@ -217,10 +208,10 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea // Approve upgrading underlying outputTokens if its not a supertoken // Supertokens have their own address as the underlying token - if (underlyingOutputToken != address(outputToken)) { + if (underlyingOutputToken != address(outputToken)) { ERC20(underlyingOutputToken).safeIncreaseAllowance( address(outputToken), - 2**256 - 1 + 2 ** 256 - 1 ); } @@ -256,7 +247,7 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea ); // Require that the pool for gas reimbursements exists - if(address(underlyingInputToken) != address(wmatic)) { + if (address(underlyingInputToken) != address(wmatic)) { require( factory.getPool( address(wmatic), @@ -267,7 +258,7 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea ); } - // Use the pool for the underlying tokens for the input/output supertokens + // Use the pool for the underlying tokens for the input/output supertokens uniswapPool = IUniswapV3Pool( factory.getPool( address(underlyingInputToken), @@ -279,15 +270,14 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea // Approve Uniswap Router to spend ERC20(underlyingInputToken).safeIncreaseAllowance( address(router), - 2**256 - 1 + 2 ** 256 - 1 ); // Approve Uniswap Router to spend subsidyToken ERC20(_getUnderlyingToken(subsidyToken)).safeIncreaseAllowance( address(router), - 2**256 - 1 + 2 ** 256 - 1 ); - } /// @dev Initialize the Chainlink Aggregator @@ -317,7 +307,6 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea return price; } - /// @dev Add a new output pool to the market /// @param _token is the output token for the pool /// @param _feeRate is the protocol dev share rate @@ -327,7 +316,6 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea uint128 _feeRate, uint256 _emissionRate ) public onlyOwner { - OutputPool memory _newPool = OutputPool( _token, _feeRate, @@ -343,24 +331,22 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea /// @dev Distribute tokens to streamers /// @param ctx is the context for the distribution /// @param ignoreGasReimbursement is whether to ignore gas reimbursements (i.e. Gelato) - function distribute(bytes memory ctx, bool ignoreGasReimbursement) - public - payable - returns (bytes memory newCtx) - { - + function distribute( + bytes memory ctx, + bool ignoreGasReimbursement + ) public payable returns (bytes memory newCtx) { newCtx = ctx; uint gasUsed = gasleft(); // Track gas used in this function uint256 inputTokenAmount = inputToken.balanceOf(address(this)); - + // If there is no inputToken to distribute, then return if (inputTokenAmount == 0) { return newCtx; } // Swap inputToken for outputToken - _swap(inputTokenAmount); + _swap(inputTokenAmount); // At this point, we've got enough of tokenA and tokenB to perform the distribution uint256 outputTokenAmount = outputToken.balanceOf(address(this)); @@ -388,14 +374,10 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea // TODO: Emit Distribution event // Distribute subsidyToken - uint distAmount = - (block.timestamp - lastDistributedAt) * + uint distAmount = (block.timestamp - lastDistributedAt) * outputPools[SUBSIDY_INDEX].emissionRate; if ( - distAmount > 0 && distAmount < - subsidyToken.balanceOf( - address(this) - ) + distAmount > 0 && distAmount < subsidyToken.balanceOf(address(this)) ) { newCtx = _idaDistribute( SUBSIDY_INDEX, @@ -415,12 +397,12 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea return newCtx; } // Otherwise, calculate the gas reimbursement for Gelato or for the msg.sender - + // Get the fee details from Gelato Ops (uint256 fee, address feeToken) = _getFeeDetails(); // If the fee is greater than 0, reimburse the fee to the Gelato Ops - if(fee > 0) { + if (fee > 0) { _swapForGas(fee); // Log the balances of the tokens wmatic.withdraw(wmatic.balanceOf(address(this))); @@ -437,58 +419,58 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea // Uniswap V3 Swap Methods /// @dev Swap input token for WMATIC - function _swapForGas( - uint256 amountOut - ) internal returns (uint256) { - + function _swapForGas(uint256 amountOut) internal returns (uint256) { // If the underlyingInputToken is WMATIC, then just return the amountOut - if(underlyingInputToken == address(wmatic)) { + if (underlyingInputToken == address(wmatic)) { return amountOut; } // gelatoFeeShare reserves some underlyingInputToken for gas reimbursement // Use this amount to swap for enough WMATIC to cover the gas fee - IV3SwapRouter.ExactOutputParams memory params = IV3SwapRouter.ExactOutputParams({ - path: abi.encodePacked(address(wmatic), poolFee, underlyingInputToken), - recipient: address(this), - amountOut: amountOut, - // This is a swap for the gas fee reimbursement and will not be frontrun - amountInMaximum: type(uint256).max - }); + IV3SwapRouter.ExactOutputParams memory params = IV3SwapRouter + .ExactOutputParams({ + path: abi.encodePacked( + address(wmatic), + poolFee, + underlyingInputToken + ), + recipient: address(this), + amountOut: amountOut, + // This is a swap for the gas fee reimbursement and will not be frontrun + amountInMaximum: type(uint256).max + }); return router.exactOutput(params); - } // @notice Swap input token for output token // @param amount Amount of inputToken to swap // @return outAmount Amount of outputToken received // @dev This function has grown to do far more than just swap, this needs to be refactored - function _swap( - uint256 amount - ) internal returns (uint256 outAmount) { + function _swap(uint256 amount) internal returns (uint256 outAmount) { uint256 minOutput; // The minimum amount of output tokens based on oracle // Downgrade if this is not a supertoken if (underlyingInputToken != address(inputToken)) { inputToken.downgrade(inputToken.balanceOf(address(this))); - } - + } + // Calculate the amount of tokens amount = ERC20(underlyingInputToken).balanceOf(address(this)); - amount = amount * (1e4 - gelatoFeeShare) / 1e4; + amount = (amount * (1e4 - gelatoFeeShare)) / 1e4; // @dev Calculate minOutput based on oracle // @dev This should be its own method uint latestPrice = uint(int(getLatestPrice())); - // Compute the minimumOutput based on latestPrice if (!invertPrice) { - minOutput = amount * 1e8 / latestPrice * (10**(18 - ERC20(underlyingInputToken).decimals())); + minOutput = + ((amount * 1e8) / latestPrice) * + (10 ** (18 - ERC20(underlyingInputToken).decimals())); } else { // Invert the price, e.g. for OP>USDC market - minOutput = amount * latestPrice / 1e8 / 1e12; + minOutput = (amount * latestPrice) / 1e8 / 1e12; } // Apply the rate tolerance to allow for some slippage @@ -497,7 +479,11 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea // This is the code for the uniswap IV3SwapRouter.ExactInputParams memory params = IV3SwapRouter .ExactInputParams({ - path: abi.encodePacked(underlyingInputToken, poolFee, underlyingOutputToken), + path: abi.encodePacked( + underlyingInputToken, + poolFee, + underlyingOutputToken + ), recipient: address(this), amountIn: amount, amountOutMinimum: minOutput @@ -505,34 +491,31 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea outAmount = router.exactInput(params); // Emit swap event for performance tracking - emit RexSwap( - amount, - outAmount, - latestPrice - ); + emit RexSwap(amount, outAmount, latestPrice); // Upgrade if this is not a supertoken // TODO: This should be its own method if (underlyingOutputToken != address(outputToken)) { if (outputToken == maticx) { - wmatic.withdraw(ERC20(underlyingOutputToken).balanceOf(address(this))); - ISETHCustom(address(outputToken)).upgradeByETH{value: address(this).balance}(); + wmatic.withdraw( + ERC20(underlyingOutputToken).balanceOf(address(this)) + ); + ISETHCustom(address(outputToken)).upgradeByETH{ + value: address(this).balance + }(); } else { outputToken.upgrade( ERC20(underlyingOutputToken).balanceOf(address(this)) * - (10**(18 - ERC20(underlyingOutputToken).decimals())) + (10 ** (18 - ERC20(underlyingOutputToken).decimals())) ); } } // else this is a native supertoken } - function _isInputToken(ISuperToken _superToken) - internal - view - returns (bool) - { - return - address(_superToken) == address(inputToken); + function _isInputToken( + ISuperToken _superToken + ) internal view returns (bool) { + return address(_superToken) == address(inputToken); } function _shouldDistribute() internal view returns (bool) { @@ -548,12 +531,9 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea // function get the underlying tokens for token a and b, if token // is a supertoken, then the underlying is the supertoken itself - function _getUnderlyingToken(ISuperToken _token) - internal - view - returns (address) - { - + function _getUnderlyingToken( + ISuperToken _token + ) internal view returns (address) { // If the token is maticx, then the underlying token is wmatic if (address(_token) == address(maticx)) { return address(wmatic); @@ -569,8 +549,6 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea return underlyingToken; } - - // Superfluid Callbacks function beforeAgreementCreated( @@ -583,7 +561,6 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea _onlyHost(); if (!_isInputToken(_superToken) || !_isCFAv1(_agreementClass)) return _ctx; - } function afterAgreementCreated( @@ -605,16 +582,20 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea } (address _shareholder, int96 _flowRate, ) = _getShareholderInfo( - _agreementData, _superToken + _agreementData, + _superToken ); _registerReferral(_ctx, _shareholder); ShareholderUpdate memory _shareholderUpdate = ShareholderUpdate( - _shareholder, referrals.getAffiliateAddress(_shareholder), 0, _flowRate, _superToken + _shareholder, + referrals.getAffiliateAddress(_shareholder), + 0, + _flowRate, + _superToken ); _newCtx = _updateShareholder(_newCtx, _shareholderUpdate); - } /// @dev Called before an agreement is updated @@ -638,8 +619,9 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea return _ctx; // Get the stakeholders current flow rate and save it in cbData - (, int96 _flowRate,) = _getShareholderInfo( - _agreementData, _superToken + (, int96 _flowRate, ) = _getShareholderInfo( + _agreementData, + _superToken ); // Encode the rate for use in afterAgreementUpdated @@ -666,13 +648,14 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea // If the agreement is not a CFAv1 agreement, return the context if (!_isInputToken(_superToken) || !_isCFAv1(_agreementClass)) return _ctx; - + // Copy the argment context to a new context return variable _newCtx = _ctx; // Get the caller's address and current flow rate from the agreement data - (address _shareholder, int96 _flowRate,) = _getShareholderInfo( - _agreementData, _superToken + (address _shareholder, int96 _flowRate, ) = _getShareholderInfo( + _agreementData, + _superToken ); // Decode the cbData to get the caller's previous flow rate, set in beforeAgreementUpdated @@ -687,11 +670,14 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea // Build the shareholder update parameters and update the shareholder ShareholderUpdate memory _shareholderUpdate = ShareholderUpdate( - _shareholder, referrals.getAffiliateAddress(_shareholder), _beforeFlowRate, _flowRate, _superToken + _shareholder, + referrals.getAffiliateAddress(_shareholder), + _beforeFlowRate, + _flowRate, + _superToken ); _newCtx = _updateShareholder(_newCtx, _shareholderUpdate); - } // Agreement Terminated @@ -707,11 +693,10 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea if (!_isInputToken(_superToken) || !_isCFAv1(_agreementClass)) return _ctx; - ( - , - int96 _flowRateMain, - uint256 _timestamp - ) = _getShareholderInfo(_agreementData, _superToken); + (, int96 _flowRateMain, uint256 _timestamp) = _getShareholderInfo( + _agreementData, + _superToken + ); uint256 _uinvestAmount = _calcUserUninvested( _timestamp, @@ -747,24 +732,44 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea _newCtx = _ctx; // Get the caller's address and current flow rate from the agreement data - (address _shareholder, ) = abi.decode(_agreementData, (address, address)); - + (address _shareholder, ) = abi.decode( + _agreementData, + (address, address) + ); + // Decode the cbData to get the caller's previous flow rate, set in beforeAgreementTerminated - (uint256 _uninvestAmount, int96 _beforeFlowRate ) = abi.decode(_cbdata, (uint256, int96)); + (uint256 _uninvestAmount, int96 _beforeFlowRate) = abi.decode( + _cbdata, + (uint256, int96) + ); // Build the shareholder update parameters and update the shareholder ShareholderUpdate memory _shareholderUpdate = ShareholderUpdate( - _shareholder, referrals.getAffiliateAddress(_shareholder), _beforeFlowRate, 0, _superToken + _shareholder, + referrals.getAffiliateAddress(_shareholder), + _beforeFlowRate, + 0, + _superToken ); _newCtx = _updateShareholder(_newCtx, _shareholderUpdate); // Refund the unswapped amount back to the person who started the stream - try _superToken.transferFrom(address(this), _shareholder, _uninvestAmount) + try + _superToken.transferFrom( + address(this), + _shareholder, + _uninvestAmount + ) // solhint-disable-next-line no-empty-blocks - {} catch { + { + + } catch { // In case of any problems here, just log the error for record keeping and continue - console.log("Error refunding uninvested amount to shareholder:", _shareholder); + console.log( + "Error refunding uninvested amount to shareholder:", + _shareholder + ); console.log("Uninvested amount:", _uninvestAmount); } } @@ -825,7 +830,7 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea new bytes(0) // user data ); } - + /// @dev Same as _updateSubscription but uses provided SuperFluid context data /// @param ctx SuperFluid context data /// @param index IDA index ID @@ -857,8 +862,14 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea } // REX Referral Methods - function _registerReferral(bytes memory _ctx, address _shareholder) internal { - require(referrals.addressToAffiliate(_shareholder) == 0, "noAffiliates"); + function _registerReferral( + bytes memory _ctx, + address _shareholder + ) internal { + require( + referrals.addressToAffiliate(_shareholder) == 0, + "noAffiliates" + ); ISuperfluid.Context memory decompiledContext = host.decodeCtx(_ctx); string memory affiliateId; if (decompiledContext.userData.length > 0) { @@ -906,7 +917,6 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea ? _prevUpdateTimestamp : _lastDistributedAt )); - } // Shareholder Math Methods (TODO: Move to a library?) @@ -921,11 +931,10 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea uint32 outputIndex; uint32 subsidyIndex; - + outputIndex = OUTPUT_INDEX; subsidyIndex = SUBSIDY_INDEX; _shareholderUpdate.token = outputToken; - ( uint128 userShares, @@ -980,7 +989,10 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea } } - function _getShareholderInfo(bytes calldata _agreementData, ISuperToken _superToken) + function _getShareholderInfo( + bytes calldata _agreementData, + ISuperToken _superToken + ) internal view returns (address _shareholder, int96 _flowRate, uint256 _timestamp) @@ -1000,7 +1012,10 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea /// @return _approved Is the subscription approved? /// @return _units Units of the suscription. /// @return _pendingDistribution Pending amount of tokens to be distributed for unapproved subscription. - function getIDAShares(uint32 _index, address _streamer) + function getIDAShares( + uint32 _index, + address _streamer + ) public view returns ( @@ -1018,71 +1033,97 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea ); } - function _getShareAllocations(ShareholderUpdate memory _shareholderUpdate) - internal view returns (uint128 userShares, uint128 daoShares, uint128 affiliateShares) + function _getShareAllocations( + ShareholderUpdate memory _shareholderUpdate + ) + internal + view + returns (uint128 userShares, uint128 daoShares, uint128 affiliateShares) { - (,,daoShares,) = getIDAShares(outputPoolIndicies[_shareholderUpdate.token], owner()); - daoShares *= shareScaler; - - if (address(0) != _shareholderUpdate.affiliate) { - (,,affiliateShares,) = getIDAShares(outputPoolIndicies[_shareholderUpdate.token], _shareholderUpdate.affiliate); - affiliateShares *= shareScaler; - } - - // Compute the change in flow rate, will be negative is slowing the flow rate - int96 changeInFlowRate = _shareholderUpdate.currentFlowRate - _shareholderUpdate.previousFlowRate; - uint128 feeShares; - // if the change is positive value then DAO has some new shares, - // which would be 2% of the increase in shares - if(changeInFlowRate > 0) { - // Add new shares to the DAO - feeShares = uint128(uint256(int256(changeInFlowRate)) * feeRate / 1e6); - if (address(0) != _shareholderUpdate.affiliate) { - affiliateShares += feeShares * affiliateFee / 1e6; - feeShares -= feeShares * affiliateFee / 1e6; - } - daoShares += feeShares; - } else { - // Make the rate positive - changeInFlowRate = -1 * changeInFlowRate; - feeShares = uint128(uint256(int256(changeInFlowRate)) * feeRate / 1e6); + (, , daoShares, ) = getIDAShares( + outputPoolIndicies[_shareholderUpdate.token], + owner() + ); + daoShares *= shareScaler; + if (address(0) != _shareholderUpdate.affiliate) { - affiliateShares -= (feeShares * affiliateFee / 1e6 > affiliateShares) ? affiliateShares : feeShares * affiliateFee / 1e6; - feeShares -= feeShares * affiliateFee / 1e6; + (, , affiliateShares, ) = getIDAShares( + outputPoolIndicies[_shareholderUpdate.token], + _shareholderUpdate.affiliate + ); + affiliateShares *= shareScaler; } - daoShares -= (feeShares > daoShares) ? daoShares : feeShares; - } - userShares = uint128(uint256(int256(_shareholderUpdate.currentFlowRate))) * (1e6 - feeRate) / 1e6; - - // Scale back shares - affiliateShares /= shareScaler; - daoShares /= shareScaler; - userShares /= shareScaler; + // Compute the change in flow rate, will be negative is slowing the flow rate + int96 changeInFlowRate = _shareholderUpdate.currentFlowRate - + _shareholderUpdate.previousFlowRate; + uint128 feeShares; + // if the change is positive value then DAO has some new shares, + // which would be 2% of the increase in shares + if (changeInFlowRate > 0) { + // Add new shares to the DAO + feeShares = uint128( + (uint256(int256(changeInFlowRate)) * feeRate) / 1e6 + ); + if (address(0) != _shareholderUpdate.affiliate) { + affiliateShares += (feeShares * affiliateFee) / 1e6; + feeShares -= (feeShares * affiliateFee) / 1e6; + } + daoShares += feeShares; + } else { + // Make the rate positive + changeInFlowRate = -1 * changeInFlowRate; + feeShares = uint128( + (uint256(int256(changeInFlowRate)) * feeRate) / 1e6 + ); + if (address(0) != _shareholderUpdate.affiliate) { + affiliateShares -= ((feeShares * affiliateFee) / 1e6 > + affiliateShares) + ? affiliateShares + : (feeShares * affiliateFee) / 1e6; + feeShares -= (feeShares * affiliateFee) / 1e6; + } + daoShares -= (feeShares > daoShares) ? daoShares : feeShares; + } + userShares = + (uint128(uint256(int256(_shareholderUpdate.currentFlowRate))) * + (1e6 - feeRate)) / + 1e6; + + // Scale back shares + affiliateShares /= shareScaler; + daoShares /= shareScaler; + userShares /= shareScaler; } /// @dev Close stream from `streamer` address if balance is less than 8 hours of streaming /// @param streamer is stream source (streamer) address function closeStream(address streamer, ISuperToken token) public { - // Only closable iff their balance is less than 8 hours of streaming - (,int96 streamerFlowRate,,) = cfa.getFlow(token, streamer, address(this)); - // int96 streamerFlowRate = getStreamRate(token, streamer); - require(int(token.balanceOf(streamer)) <= streamerFlowRate * 8 hours, - "!closable"); - - // Close the streamers stream - // Does this trigger before/afterAgreementTerminated - host.callAgreement( - cfa, - abi.encodeWithSelector( - cfa.deleteFlow.selector, - token, - streamer, - address(this), - new bytes(0) // placeholder - ), - "0x" - ); + // Only closable iff their balance is less than 8 hours of streaming + (, int96 streamerFlowRate, , ) = cfa.getFlow( + token, + streamer, + address(this) + ); + // int96 streamerFlowRate = getStreamRate(token, streamer); + require( + int(token.balanceOf(streamer)) <= streamerFlowRate * 8 hours, + "!closable" + ); + + // Close the streamers stream + // Does this trigger before/afterAgreementTerminated + host.callAgreement( + cfa, + abi.encodeWithSelector( + cfa.deleteFlow.selector, + token, + streamer, + address(this), + new bytes(0) // placeholder + ), + "0x" + ); } /// @dev Withdraw subsidy token from the contract @@ -1092,10 +1133,7 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea /// @dev Sets emission rate for a output pool/token /// @param _emissionRate Emission rate for the output pool/token - function setEmissionRate(uint128 _emissionRate) - external - onlyOwner - { + function setEmissionRate(uint128 _emissionRate) external onlyOwner { outputPools[SUBSIDY_INDEX].emissionRate = _emissionRate; } @@ -1117,6 +1155,4 @@ contract REXUniswapV3Market is Ownable, SuperAppBase, Initializable, OpsTaskCrea // Payable for X->MATICx markets to work receive() external payable {} - } - diff --git a/contracts/RicochetToken.sol b/contracts/RicochetToken.sol index a085b9e..33c0d26 100644 --- a/contracts/RicochetToken.sol +++ b/contracts/RicochetToken.sol @@ -1,43 +1,28 @@ // SPDX-License-Identifier: AGPLv3 pragma solidity ^0.8.0; -import { UUPSProxiable } from "ricochet-exchange-sfcontracts-used/ethereum-contracts/contracts/upgradability/UUPSProxiable.sol"; +import {UUPSProxiable} from "ricochet-exchange-sfcontracts-used/ethereum-contracts/contracts/upgradability/UUPSProxiable.sol"; import "hardhat/console.sol"; -import { - ISuperfluid, - ISuperfluidGovernance, - ISuperToken, - ISuperAgreement, - IERC20, - IERC777, - TokenInfo -} from "ricochet-exchange-sfcontracts-used/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol"; -import { ISuperfluidToken, SuperfluidToken } from "ricochet-exchange-sfcontracts-used/ethereum-contracts/contracts/superfluid/SuperfluidToken.sol"; - -import { ERC777Helper } from "ricochet-exchange-sfcontracts-used/ethereum-contracts/contracts/utils/ERC777Helper.sol"; - -import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; -import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import { SafeMath } from "@openzeppelin/contracts/utils/math/SafeMath.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol"; -import { SignedSafeMath } from "@openzeppelin/contracts/utils/math/SignedSafeMath.sol"; -import { IERC777Recipient } from "@openzeppelin/contracts/token/ERC777/IERC777Recipient.sol"; -import { IERC777Sender } from "@openzeppelin/contracts/token/ERC777/IERC777Sender.sol"; -import { Address } from "@openzeppelin/contracts/utils/Address.sol"; +import {ISuperfluid, ISuperfluidGovernance, ISuperToken, ISuperAgreement, IERC20, IERC777, TokenInfo} from "ricochet-exchange-sfcontracts-used/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol"; +import {ISuperfluidToken, SuperfluidToken} from "ricochet-exchange-sfcontracts-used/ethereum-contracts/contracts/superfluid/SuperfluidToken.sol"; +import {ERC777Helper} from "ricochet-exchange-sfcontracts-used/ethereum-contracts/contracts/utils/ERC777Helper.sol"; + +import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; +import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import {SafeMath} from "@openzeppelin/contracts/utils/math/SafeMath.sol"; +import {SafeCast} from "@openzeppelin/contracts/utils/math/SafeCast.sol"; +import {SignedSafeMath} from "@openzeppelin/contracts/utils/math/SignedSafeMath.sol"; +import {IERC777Recipient} from "@openzeppelin/contracts/token/ERC777/IERC777Recipient.sol"; +import {IERC777Sender} from "@openzeppelin/contracts/token/ERC777/IERC777Sender.sol"; +import {Address} from "@openzeppelin/contracts/utils/Address.sol"; /** * @title Superfluid's super token implementation * @author Superfluid */ -contract RicochetToken is - UUPSProxiable, - SuperfluidToken, - ISuperToken, - Ownable -{ - +contract RicochetToken is UUPSProxiable, SuperfluidToken, ISuperToken, Ownable { using SafeMath for uint256; using SafeCast for uint256; using SignedSafeMath for int256; @@ -45,7 +30,7 @@ contract RicochetToken is using ERC777Helper for ERC777Helper.Operators; using SafeERC20 for IERC20; - uint8 constant private _STANDARD_DECIMALS = 18; + uint8 private constant _STANDARD_DECIMALS = 18; /* WARNING: NEVER RE-ORDER VARIABLES! Including the base contracts. Always double-check that new @@ -65,7 +50,7 @@ contract RicochetToken is string internal _symbol; /// @dev ERC20 Allowances Storage - mapping(address => mapping (address => uint256)) internal _allowances; + mapping(address => mapping(address => uint256)) internal _allowances; /// @dev ERC777 operators support data ERC777Helper.Operators internal _operators; @@ -86,10 +71,8 @@ contract RicochetToken is constructor( ISuperfluid host ) - SuperfluidToken(host) - // solhint-disable-next-line no-empty-blocks - { - } + SuperfluidToken(host) // solhint-disable-next-line no-empty-blocks + {} function initialize( IERC20 underlyingToken, @@ -97,7 +80,8 @@ contract RicochetToken is string calldata n, string calldata s ) - external override + external + override initializer // OpenZeppelin Initializable { _underlyingToken = underlyingToken; @@ -111,11 +95,17 @@ contract RicochetToken is } function proxiableUUID() public pure override returns (bytes32) { - return keccak256("org.superfluid-finance.contracts.SuperToken.implementation"); + return + keccak256( + "org.superfluid-finance.contracts.SuperToken.implementation" + ); } function updateCode(address newAddress) external override { - require(msg.sender == address(_host), "SuperToken: only host can update code"); + require( + msg.sender == address(_host), + "SuperToken: only host can update code" + ); UUPSProxiable._updateCodeAddress(newAddress); } @@ -136,17 +126,21 @@ contract RicochetToken is } /// @dev ISuperToken.upgrade implementation - function upgrade(uint256 amount) external onlyOwner override { + function upgrade(uint256 amount) external override onlyOwner { _upgrade(msg.sender, msg.sender, msg.sender, amount, "", ""); } /// @dev ISuperToken.upgradeTo implementation - function upgradeTo(address to, uint256 amount, bytes calldata data) external onlyOwner override { + function upgradeTo( + address to, + uint256 amount, + bytes calldata data + ) external override onlyOwner { _upgrade(msg.sender, msg.sender, to, amount, "", data); } /// @dev ISuperToken.downgrade implementation - function downgrade(uint256 amount) external onlyOwner override { + function downgrade(uint256 amount) external override onlyOwner { _downgrade(msg.sender, msg.sender, amount, "", ""); } @@ -155,34 +149,40 @@ contract RicochetToken is address account, uint256 amount, bytes memory userData - ) - external - onlyOwner - { - _mint(msg.sender, account, amount, - false /* requireReceptionAck */, userData, new bytes(0)); + ) external onlyOwner { + _mint( + msg.sender, + account, + amount, + false /* requireReceptionAck */, + userData, + new bytes(0) + ); } function burnFrom( - address account, - uint256 amount, - bytes memory userData - ) - external - onlyOwner - { - _burn(msg.sender, account, amount, userData, new bytes(0)); + address account, + uint256 amount, + bytes memory userData + ) external onlyOwner { + _burn(msg.sender, account, amount, userData, new bytes(0)); } /************************************************************************** * (private) Token Logics *************************************************************************/ - function _transferFrom(address spender, address holder, address recipient, uint amount) - internal returns (bool) - { + function _transferFrom( + address spender, + address holder, + address recipient, + uint amount + ) internal returns (bool) { require(holder != address(0), "SuperToken: transfer from zero address"); - require(recipient != address(0), "SuperToken: transfer to zero address"); + require( + recipient != address(0), + "SuperToken: transfer to zero address" + ); address operator = msg.sender; @@ -194,7 +194,11 @@ contract RicochetToken is _approve( holder, spender, - _allowances[holder][spender].sub(amount, "SuperToken: transfer amount exceeds allowance")); + _allowances[holder][spender].sub( + amount, + "SuperToken: transfer amount exceeds allowance" + ) + ); } _callTokensReceived(operator, holder, recipient, amount, "", "", false); @@ -220,9 +224,7 @@ contract RicochetToken is bytes memory userData, bytes memory operatorData, bool requireReceptionAck - ) - private - { + ) private { require(from != address(0), "SuperToken: transfer from zero address"); require(to != address(0), "SuperToken: transfer to zero address"); @@ -230,7 +232,15 @@ contract RicochetToken is _move(operator, from, to, amount, userData, operatorData); - _callTokensReceived(operator, from, to, amount, userData, operatorData, requireReceptionAck); + _callTokensReceived( + operator, + from, + to, + amount, + userData, + operatorData, + requireReceptionAck + ); } function _move( @@ -240,9 +250,7 @@ contract RicochetToken is uint256 amount, bytes memory userData, bytes memory operatorData - ) - private - { + ) private { SuperfluidToken._move(from, to, amount.toInt256()); emit Sent(operator, from, to, amount, userData, operatorData); @@ -273,14 +281,20 @@ contract RicochetToken is bool requireReceptionAck, bytes memory userData, bytes memory operatorData - ) - internal - { + ) internal { require(account != address(0), "SuperToken: mint to zero address"); SuperfluidToken._mint(account, amount); - _callTokensReceived(operator, address(0), account, amount, userData, operatorData, requireReceptionAck); + _callTokensReceived( + operator, + address(0), + account, + amount, + userData, + operatorData, + requireReceptionAck + ); emit Minted(operator, account, amount, userData, operatorData); emit Transfer(address(0), account, amount); @@ -299,12 +313,17 @@ contract RicochetToken is uint256 amount, bytes memory userData, bytes memory operatorData - ) - internal - { + ) internal { require(from != address(0), "SuperToken: burn from zero address"); - _callTokensToSend(operator, from, address(0), amount, userData, operatorData); + _callTokensToSend( + operator, + from, + address(0), + amount, + userData, + operatorData + ); SuperfluidToken._burn(from, amount); @@ -325,9 +344,11 @@ contract RicochetToken is * - `account` cannot be the zero address. * - `spender` cannot be the zero address. */ - function _approve(address account, address spender, uint256 amount) - internal - { + function _approve( + address account, + address spender, + uint256 amount + ) internal { require(account != address(0), "SuperToken: approve from zero address"); require(spender != address(0), "SuperToken: approve to zero address"); @@ -351,13 +372,22 @@ contract RicochetToken is uint256 amount, bytes memory userData, bytes memory operatorData - ) - private - { - address implementer = ERC777Helper._ERC1820_REGISTRY.getInterfaceImplementer( - from, ERC777Helper._TOKENS_SENDER_INTERFACE_HASH); + ) private { + address implementer = ERC777Helper + ._ERC1820_REGISTRY + .getInterfaceImplementer( + from, + ERC777Helper._TOKENS_SENDER_INTERFACE_HASH + ); if (implementer != address(0)) { - IERC777Sender(implementer).tokensToSend(operator, from, to, amount, userData, operatorData); + IERC777Sender(implementer).tokensToSend( + operator, + from, + to, + amount, + userData, + operatorData + ); } } @@ -380,17 +410,27 @@ contract RicochetToken is bytes memory userData, bytes memory operatorData, bool requireReceptionAck - ) - private - { - address implementer = ERC777Helper._ERC1820_REGISTRY.getInterfaceImplementer( - to, ERC777Helper._TOKENS_RECIPIENT_INTERFACE_HASH); + ) private { + address implementer = ERC777Helper + ._ERC1820_REGISTRY + .getInterfaceImplementer( + to, + ERC777Helper._TOKENS_RECIPIENT_INTERFACE_HASH + ); if (implementer != address(0)) { - IERC777Recipient(implementer).tokensReceived(operator, from, to, amount, userData, operatorData); + IERC777Recipient(implementer).tokensReceived( + operator, + from, + to, + amount, + userData, + operatorData + ); } else if (requireReceptionAck) { require( !to.isContract(), - "SuperToken: not an ERC777TokensRecipient"); + "SuperToken: not an ERC777TokensRecipient" + ); } } @@ -398,61 +438,75 @@ contract RicochetToken is * ERC20 Implementations *************************************************************************/ - function totalSupply() - public view override returns (uint256) - { + function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf( address account - ) - public - view - override - returns(uint256 balance) - { + ) public view override returns (uint256 balance) { // solhint-disable-next-line not-rely-on-time - (int256 availableBalance, , ) = super.realtimeBalanceOf(account, block.timestamp); + (int256 availableBalance, , ) = super.realtimeBalanceOf( + account, + block.timestamp + ); return availableBalance < 0 ? 0 : uint256(availableBalance); } - function transfer(address recipient, uint256 amount) - public override returns (bool) - { + function transfer( + address recipient, + uint256 amount + ) public override returns (bool) { return _transferFrom(msg.sender, msg.sender, recipient, amount); } - function allowance(address account, address spender) - public view override returns (uint256) - { + function allowance( + address account, + address spender + ) public view override returns (uint256) { return _allowances[account][spender]; } - function approve(address spender, uint256 amount) - public override - returns (bool) - { + function approve( + address spender, + uint256 amount + ) public override returns (bool) { _approve(msg.sender, spender, amount); return true; } - function transferFrom(address holder, address recipient, uint256 amount) - public override returns (bool) - { + function transferFrom( + address holder, + address recipient, + uint256 amount + ) public override returns (bool) { return _transferFrom(msg.sender, holder, recipient, amount); } - function increaseAllowance(address spender, uint256 addedValue) - public override returns (bool) { - _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue)); + function increaseAllowance( + address spender, + uint256 addedValue + ) public override returns (bool) { + _approve( + msg.sender, + spender, + _allowances[msg.sender][spender].add(addedValue) + ); return true; } - function decreaseAllowance(address spender, uint256 subtractedValue) - public override returns (bool) { - _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue, - "SuperToken: decreased allowance below zero")); + function decreaseAllowance( + address spender, + uint256 subtractedValue + ) public override returns (bool) { + _approve( + msg.sender, + spender, + _allowances[msg.sender][spender].sub( + subtractedValue, + "SuperToken: decreased allowance below zero" + ) + ); return true; } @@ -460,9 +514,15 @@ contract RicochetToken is * ERC-777 functions *************************************************************************/ - function granularity() external pure override returns (uint256) { return 1; } + function granularity() external pure override returns (uint256) { + return 1; + } - function send(address recipient, uint256 amount, bytes calldata data) external override { + function send( + address recipient, + uint256 amount, + bytes calldata data + ) external override { _send(msg.sender, msg.sender, recipient, amount, data, "", true); } @@ -470,7 +530,10 @@ contract RicochetToken is _downgrade(msg.sender, msg.sender, amount, data, ""); } - function isOperatorFor(address operator, address tokenHolder) external override view returns (bool) { + function isOperatorFor( + address operator, + address tokenHolder + ) external view override returns (bool) { return _operators.isOperatorFor(operator, tokenHolder); } @@ -486,7 +549,12 @@ contract RicochetToken is emit RevokedOperator(operator, holder); } - function defaultOperators() external override view returns (address[] memory) { + function defaultOperators() + external + view + override + returns (address[] memory) + { return ERC777Helper.defaultOperators(_operators); } @@ -498,7 +566,10 @@ contract RicochetToken is bytes calldata operatorData ) external override { address operator = msg.sender; - require(_operators.isOperatorFor(operator, sender), "SuperToken: caller is not an operator for holder"); + require( + _operators.isOperatorFor(operator, sender), + "SuperToken: caller is not an operator for holder" + ); _send(operator, sender, recipient, amount, data, operatorData, true); } @@ -509,7 +580,10 @@ contract RicochetToken is bytes calldata operatorData ) external override { address operator = msg.sender; - require(_operators.isOperatorFor(operator, account), "SuperToken: caller is not an operator for holder"); + require( + _operators.isOperatorFor(operator, account), + "SuperToken: caller is not an operator for holder" + ); _downgrade(operator, account, amount, data, operatorData); } @@ -525,32 +599,30 @@ contract RicochetToken is address account, uint256 amount, bytes memory userData - ) - external override - onlySelf - { - _mint(msg.sender, account, amount, - false /* requireReceptionAck */, userData, new bytes(0)); + ) external override onlySelf { + _mint( + msg.sender, + account, + amount, + false /* requireReceptionAck */, + userData, + new bytes(0) + ); } function selfBurn( - address account, - uint256 amount, - bytes memory userData - ) - external override - onlySelf - { - _burn(msg.sender, account, amount, userData, new bytes(0)); + address account, + uint256 amount, + bytes memory userData + ) external override onlySelf { + _burn(msg.sender, account, amount, userData, new bytes(0)); } /************************************************************************** * SuperToken extra functions *************************************************************************/ - function transferAll(address recipient) - external override - { + function transferAll(address recipient) external override { _transferFrom(msg.sender, msg.sender, recipient, balanceOf(msg.sender)); } @@ -559,12 +631,10 @@ contract RicochetToken is *************************************************************************/ /// @dev ISuperfluidGovernance.getUnderlyingToken implementation - function getUnderlyingToken() external view override returns(address) { + function getUnderlyingToken() external view override returns (address) { return address(_underlyingToken); } - - function _upgrade( address operator, address account, @@ -573,21 +643,38 @@ contract RicochetToken is bytes memory userData, bytes memory operatorData ) private { - require(address(_underlyingToken) != address(0), "SuperToken: no underlying token"); + require( + address(_underlyingToken) != address(0), + "SuperToken: no underlying token" + ); - (uint256 underlyingAmount, uint256 adjustedAmount) = _toUnderlyingAmount(amount); + ( + uint256 underlyingAmount, + uint256 adjustedAmount + ) = _toUnderlyingAmount(amount); uint256 amountBefore = _underlyingToken.balanceOf(address(this)); - _underlyingToken.safeTransferFrom(account, address(this), underlyingAmount); + _underlyingToken.safeTransferFrom( + account, + address(this), + underlyingAmount + ); uint256 amountAfter = _underlyingToken.balanceOf(address(this)); uint256 actualUpgradedAmount = amountAfter.sub(amountBefore); require( underlyingAmount == actualUpgradedAmount, - "SuperToken: inflationary/deflationary tokens not supported"); + "SuperToken: inflationary/deflationary tokens not supported" + ); - _mint(operator, to, adjustedAmount, + _mint( + operator, + to, + adjustedAmount, // if `to` is diffferent from `account`, we requireReceptionAck - account != to, userData, operatorData); + account != to, + userData, + operatorData + ); emit TokenUpgraded(to, adjustedAmount); } @@ -597,13 +684,20 @@ contract RicochetToken is address account, uint256 amount, bytes memory data, - bytes memory operatorData) private { - require(address(_underlyingToken) != address(0), "SuperToken: no underlying token"); + bytes memory operatorData + ) private { + require( + address(_underlyingToken) != address(0), + "SuperToken: no underlying token" + ); - (uint256 underlyingAmount, uint256 adjustedAmount) = _toUnderlyingAmount(amount); + ( + uint256 underlyingAmount, + uint256 adjustedAmount + ) = _toUnderlyingAmount(amount); - // _burn will check the (actual) amount availability again - _burn(operator, account, adjustedAmount, data, operatorData); + // _burn will check the (actual) amount availability again + _burn(operator, account, adjustedAmount, data, operatorData); uint256 amountBefore = _underlyingToken.balanceOf(address(this)); _underlyingToken.safeTransfer(account, underlyingAmount); @@ -611,7 +705,8 @@ contract RicochetToken is uint256 actualDowngradedAmount = amountBefore.sub(amountAfter); require( underlyingAmount == actualDowngradedAmount, - "SuperToken: inflationary/deflationary tokens not supported"); + "SuperToken: inflationary/deflationary tokens not supported" + ); emit TokenDowngraded(account, adjustedAmount); } @@ -619,10 +714,9 @@ contract RicochetToken is /** * @dev Handle decimal differences between underlying token and super token */ - function _toUnderlyingAmount(uint256 amount) - private view - returns (uint256 underlyingAmount, uint256 adjustedAmount) - { + function _toUnderlyingAmount( + uint256 amount + ) private view returns (uint256 underlyingAmount, uint256 adjustedAmount) { uint256 factor; if (_underlyingDecimals < _STANDARD_DECIMALS) { // if underlying has less decimals @@ -650,10 +744,7 @@ contract RicochetToken is address account, address spender, uint256 amount - ) - external override - onlyHost - { + ) external override onlyHost { _approve(account, spender, amount); } @@ -662,36 +753,32 @@ contract RicochetToken is address spender, address recipient, uint256 amount - ) - external override - onlyHost - { + ) external override onlyHost { _transferFrom(account, spender, recipient, amount); } - function operationUpgrade(address account, uint256 amount) - external override - onlyHost - { + function operationUpgrade( + address account, + uint256 amount + ) external override onlyHost { _upgrade(msg.sender, account, account, amount, "", ""); } - function operationDowngrade(address account, uint256 amount) - external override - onlyHost - { + function operationDowngrade( + address account, + uint256 amount + ) external override onlyHost { _downgrade(msg.sender, account, amount, "", ""); } /************************************************************************** - * Modifiers - *************************************************************************/ + * Modifiers + *************************************************************************/ modifier onlySelf() { require(msg.sender == address(this), "SuperToken: only self allowed"); _; } - fallback() external payable { } - + fallback() external payable {} } diff --git a/contracts/alluo/IbAlluo.sol b/contracts/alluo/IbAlluo.sol index cd0016b..1be22b9 100644 --- a/contracts/alluo/IbAlluo.sol +++ b/contracts/alluo/IbAlluo.sol @@ -66,18 +66,19 @@ interface IbAlluo { function UPGRADER_ROLE() external view returns (bytes32); - function allowance(address owner, address spender) - external - view - returns (uint256); + function allowance( + address owner, + address spender + ) external view returns (uint256); function annualInterest() external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); - function approveAssetValue(address spender, uint256 amount) - external - returns (bool); + function approveAssetValue( + address spender, + uint256 amount + ) external returns (bool); function balanceOf(address account) external view returns (uint256); @@ -89,10 +90,9 @@ interface IbAlluo { function changeUpgradeStatus(bool _status) external; - function convertToAssetValue(uint256 _amount) - external - view - returns (uint256); + function convertToAssetValue( + uint256 _amount + ) external view returns (uint256); function createFlow( address receiver, @@ -102,9 +102,10 @@ interface IbAlluo { function decimals() external view returns (uint8); - function decreaseAllowance(address spender, uint256 subtractedValue) - external - returns (bool); + function decreaseAllowance( + address spender, + uint256 subtractedValue + ) external returns (bool); function deleteFlow(address receiver) external; @@ -122,10 +123,9 @@ interface IbAlluo { function getBalance(address _address) external view returns (int256); - function getBalanceForTransfer(address _address) - external - view - returns (int256); + function getBalanceForTransfer( + address _address + ) external view returns (int256); function getListSupportedTokens() external view returns (address[] memory); @@ -135,14 +135,15 @@ interface IbAlluo { function growingRatio() external view returns (uint256); - function hasRole(bytes32 role, address account) - external - view - returns (bool); + function hasRole( + bytes32 role, + address account + ) external view returns (bool); - function increaseAllowance(address spender, uint256 addedValue) - external - returns (bool); + function increaseAllowance( + address spender, + uint256 addedValue + ) external returns (bool); function initialize( string memory _name, @@ -205,9 +206,10 @@ interface IbAlluo { function transfer(address to, uint256 amount) external returns (bool); - function transferAssetValue(address to, uint256 amount) - external - returns (bool); + function transferAssetValue( + address to, + uint256 amount + ) external returns (bool); function transferFrom( address from, @@ -239,9 +241,10 @@ interface IbAlluo { function upgradeTo(address newImplementation) external; - function upgradeToAndCall(address newImplementation, bytes memory data) - external - payable; + function upgradeToAndCall( + address newImplementation, + bytes memory data + ) external payable; function withdraw(address _targetToken, uint256 _amount) external; diff --git a/contracts/gelato/LibDataTypes.sol b/contracts/gelato/LibDataTypes.sol index 671befc..255c6ce 100644 --- a/contracts/gelato/LibDataTypes.sol +++ b/contracts/gelato/LibDataTypes.sol @@ -40,4 +40,4 @@ library LibDataTypes { uint128 nextExec; uint128 interval; } -} \ No newline at end of file +} diff --git a/contracts/gelato/Ops.sol b/contracts/gelato/Ops.sol index 2cdd28b..c0a172e 100644 --- a/contracts/gelato/Ops.sol +++ b/contracts/gelato/Ops.sol @@ -1,9 +1,8 @@ pragma solidity ^0.8.0; -import './LibDataTypes.sol'; +import "./LibDataTypes.sol"; contract Ops { - function exec( address _taskCreator, address _execAddress, @@ -13,7 +12,5 @@ contract Ops { address _feeToken, bool _useTaskTreasuryFunds, bool _revertOnFailure - ) external { - - } -} \ No newline at end of file + ) external {} +} diff --git a/contracts/gelato/OpsReady.sol b/contracts/gelato/OpsReady.sol index d5c05b5..d6d1940 100644 --- a/contracts/gelato/OpsReady.sol +++ b/contracts/gelato/OpsReady.sol @@ -37,9 +37,8 @@ abstract contract OpsReady { ops = IOps(_ops); _gelato = IOps(_ops).gelato(); bool test; - (dedicatedMsgSender, test) = IOpsProxyFactory(OPS_PROXY_FACTORY).getProxyOf( - _taskCreator - ); + (dedicatedMsgSender, test) = IOpsProxyFactory(OPS_PROXY_FACTORY) + .getProxyOf(_taskCreator); } /** @@ -64,4 +63,4 @@ abstract contract OpsReady { { (fee, feeToken) = ops.getFeeDetails(); } -} \ No newline at end of file +} diff --git a/contracts/gelato/OpsTaskCreator.sol b/contracts/gelato/OpsTaskCreator.sol index 62b8ac9..3981600 100644 --- a/contracts/gelato/OpsTaskCreator.sol +++ b/contracts/gelato/OpsTaskCreator.sol @@ -13,9 +13,10 @@ abstract contract OpsTaskCreator is OpsReady { address public immutable fundsOwner; ITaskTreasuryUpgradable public immutable taskTreasury; - constructor(address _ops, address _fundsOwner) - OpsReady(_ops, address(this)) - { + constructor( + address _ops, + address _fundsOwner + ) OpsReady(_ops, address(this)) { fundsOwner = _fundsOwner; taskTreasury = ops.taskTreasury(); } @@ -68,11 +69,10 @@ abstract contract OpsTaskCreator is OpsReady { return abi.encode(_resolverAddress, _resolverData); } - function _timeModuleArg(uint256 _startTime, uint256 _interval) - internal - pure - returns (bytes memory) - { + function _timeModuleArg( + uint256 _startTime, + uint256 _interval + ) internal pure returns (bytes memory) { return abi.encode(uint128(_startTime), uint128(_interval)); } @@ -83,4 +83,4 @@ abstract contract OpsTaskCreator is OpsReady { function _singleExecModuleArg() internal pure returns (bytes memory) { return bytes(""); } -} \ No newline at end of file +} diff --git a/contracts/gelato/Types.sol b/contracts/gelato/Types.sol index 7f0b6c1..ee5aac7 100644 --- a/contracts/gelato/Types.sol +++ b/contracts/gelato/Types.sol @@ -46,4 +46,4 @@ interface ITaskTreasuryUpgradable { interface IOpsProxyFactory { function getProxyOf(address account) external view returns (address, bool); -} \ No newline at end of file +} diff --git a/contracts/launchpad/RicochetLaunchpad.sol b/contracts/launchpad/RicochetLaunchpad.sol index 3bd7c8b..eb97a62 100644 --- a/contracts/launchpad/RicochetLaunchpad.sol +++ b/contracts/launchpad/RicochetLaunchpad.sol @@ -4,27 +4,15 @@ pragma abicoder v2; // import "hardhat/console.sol"; -import { - ISuperfluid, - ISuperToken, - ISuperApp, - ISuperAgreement, - SuperAppDefinitions -} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol";//"@superfluid-finance/ethereum-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol"; - -import { - IConstantFlowAgreementV1 -} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol"; - -import { - IInstantDistributionAgreementV1 -} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol"; - -import { - SuperAppBase -} from "@superfluid-finance/ethereum-contracts/contracts/apps/SuperAppBase.sol"; - -import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; +import {ISuperfluid, ISuperToken, ISuperApp, ISuperAgreement, SuperAppDefinitions} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol"; //"@superfluid-finance/ethereum-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol"; + +import {IConstantFlowAgreementV1} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol"; + +import {IInstantDistributionAgreementV1} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol"; + +import {SuperAppBase} from "@superfluid-finance/ethereum-contracts/contracts/apps/SuperAppBase.sol"; + +import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; @@ -34,7 +22,6 @@ import "./RicochetLaunchpadHelper.sol"; import "../referral/IREXReferral.sol"; contract RicochetLaunchpad is Ownable, SuperAppBase { - // TODO: uint256 public constant RATE_PERCISION = 1000000; using SafeERC20 for ERC20; using RicochetLaunchpadHelper for RicochetLaunchpadStorage.RicochetLaunchpad; @@ -47,10 +34,10 @@ contract RicochetLaunchpad is Ownable, SuperAppBase { constructor( ISuperfluid host, IConstantFlowAgreementV1 cfa, - IInstantDistributionAgreementV1 ida, + IInstantDistributionAgreementV1 ida, string memory registrationKey, IREXReferral _rexReferral - ) { + ) { require(address(host) != address(0), "host"); require(address(cfa) != address(0), "cfa"); require(address(ida) != address(0), "ida"); @@ -61,13 +48,12 @@ contract RicochetLaunchpad is Ownable, SuperAppBase { _launchpad.ida = ida; referrals = _rexReferral; - uint256 configWord = - SuperAppDefinitions.APP_LEVEL_FINAL | + uint256 configWord = SuperAppDefinitions.APP_LEVEL_FINAL | SuperAppDefinitions.BEFORE_AGREEMENT_CREATED_NOOP | SuperAppDefinitions.BEFORE_AGREEMENT_UPDATED_NOOP | SuperAppDefinitions.BEFORE_AGREEMENT_TERMINATED_NOOP; - if(bytes(registrationKey).length > 0) { + if (bytes(registrationKey).length > 0) { _launchpad.host.registerAppWithKey(configWord, registrationKey); } else { _launchpad.host.registerApp(configWord); @@ -80,10 +66,18 @@ contract RicochetLaunchpad is Ownable, SuperAppBase { address originator, address beneficiary, uint256 outputRate, - uint128 feeRate) external { - - require(address(inputToken) != address(0) && address(_launchpad.inputToken) == address(0) , "inputToken"); - require(address(outputToken) != address(0) && address(_launchpad.outputToken) == address(0), "outputToken"); + uint128 feeRate + ) external { + require( + address(inputToken) != address(0) && + address(_launchpad.inputToken) == address(0), + "inputToken" + ); + require( + address(outputToken) != address(0) && + address(_launchpad.outputToken) == address(0), + "outputToken" + ); require(address(originator) != address(0), "originator"); require(address(beneficiary) != address(0), "beneficiary"); @@ -97,22 +91,33 @@ contract RicochetLaunchpad is Ownable, SuperAppBase { _launchpad.beneficiary = beneficiary; // Set up the IDA for sending tokens back - _launchpad._createIndex(_launchpad.outputIndexId, _launchpad.outputToken); + _launchpad._createIndex( + _launchpad.outputIndexId, + _launchpad.outputToken + ); _launchpad.lastDistributionAt = block.timestamp; } - function _registerReferral(bytes memory _ctx, address _shareholder) internal { - require(referrals.addressToAffiliate(_shareholder) == 0, "noAffiliates"); - ISuperfluid.Context memory decompiledContext = _launchpad.host.decodeCtx(_ctx); - string memory affiliateId; - if (decompiledContext.userData.length > 0) { - (affiliateId) = abi.decode(decompiledContext.userData, (string)); - } else { - affiliateId = ""; - } - - referrals.safeRegisterCustomer(_shareholder, affiliateId); + function _registerReferral( + bytes memory _ctx, + address _shareholder + ) internal { + require( + referrals.addressToAffiliate(_shareholder) == 0, + "noAffiliates" + ); + ISuperfluid.Context memory decompiledContext = _launchpad + .host + .decodeCtx(_ctx); + string memory affiliateId; + if (decompiledContext.userData.length > 0) { + (affiliateId) = abi.decode(decompiledContext.userData, (string)); + } else { + affiliateId = ""; + } + + referrals.safeRegisterCustomer(_shareholder, affiliateId); } /************************************************************************** @@ -120,217 +125,285 @@ contract RicochetLaunchpad is Ownable, SuperAppBase { *************************************************************************/ /// @dev If a new stream is opened, or an existing one is opened - function _updateOutflow(bytes calldata ctx, bytes calldata agreementData, bool doDistributeFirst) - private - returns (bytes memory newCtx) - { - - newCtx = ctx; - - (, , uint128 totalUnitsApproved, uint128 totalUnitsPending) = _launchpad.ida.getIndex( - _launchpad.outputToken, - address(this), - _launchpad.outputIndexId); - // Check balance and account for - uint256 balance = ISuperToken(_launchpad.inputToken).balanceOf(address(this)) / - (10 ** (18 - ERC20(_launchpad.inputToken.getUnderlyingToken()).decimals())); - - if (doDistributeFirst && totalUnitsApproved + totalUnitsPending > 0 && balance > 0) { - newCtx = _launchpad._distribute(newCtx); - } - - (address requester, address flowReceiver) = abi.decode(agreementData, (address, address)); - require(flowReceiver == address(this), "!appflow"); - int96 appFlowRate = _launchpad.cfa.getNetFlow(_launchpad.inputToken, address(this)); - (, int96 requesterFlowRate, , ) = _launchpad.cfa.getFlow(_launchpad.inputToken, requester, address(this)); - - // Make sure the requester has at least 8 hours of balance to stream - require(int(_launchpad.inputToken.balanceOf(requester)) >= requesterFlowRate * 8 hours, "!enoughTokens"); - - require(requesterFlowRate >= 0, "!negativeRates"); + function _updateOutflow( + bytes calldata ctx, + bytes calldata agreementData, + bool doDistributeFirst + ) private returns (bytes memory newCtx) { + newCtx = ctx; + + (, , uint128 totalUnitsApproved, uint128 totalUnitsPending) = _launchpad + .ida + .getIndex( + _launchpad.outputToken, + address(this), + _launchpad.outputIndexId + ); + // Check balance and account for + uint256 balance = ISuperToken(_launchpad.inputToken).balanceOf( + address(this) + ) / + (10 ** + (18 - + ERC20(_launchpad.inputToken.getUnderlyingToken()) + .decimals())); + + if ( + doDistributeFirst && + totalUnitsApproved + totalUnitsPending > 0 && + balance > 0 + ) { + newCtx = _launchpad._distribute(newCtx); + } - address affiliate = referrals.getAffiliateAddress(requester); + (address requester, address flowReceiver) = abi.decode( + agreementData, + (address, address) + ); + require(flowReceiver == address(this), "!appflow"); + int96 appFlowRate = _launchpad.cfa.getNetFlow( + _launchpad.inputToken, + address(this) + ); + (, int96 requesterFlowRate, , ) = _launchpad.cfa.getFlow( + _launchpad.inputToken, + requester, + address(this) + ); + + // Make sure the requester has at least 8 hours of balance to stream + require( + int(_launchpad.inputToken.balanceOf(requester)) >= + requesterFlowRate * 8 hours, + "!enoughTokens" + ); + + require(requesterFlowRate >= 0, "!negativeRates"); + + address affiliate = referrals.getAffiliateAddress(requester); + + if (affiliate != address(0)) { + // affiliate and admin share 50/50 2% of requesterFlowRate. + int96 affiliateShares = (requesterFlowRate / 100) * 2; + newCtx = _launchpad._updateSubscriptionWithContext( + newCtx, + _launchpad.outputIndexId, + affiliate, + uint128(uint(int(affiliateShares / 2))), + _launchpad.outputToken + ); + newCtx = _launchpad._updateSubscriptionWithContext( + newCtx, + _launchpad.outputIndexId, + owner(), + uint128(uint(int(affiliateShares / 2))), + _launchpad.outputToken + ); + // take 2% off of requesterFlowRate if they have an affiliate + newCtx = _launchpad._updateSubscriptionWithContext( + newCtx, + _launchpad.outputIndexId, + requester, + uint128(uint(int(requesterFlowRate - affiliateShares))), + _launchpad.outputToken + ); + } else { + newCtx = _launchpad._updateSubscriptionWithContext( + newCtx, + _launchpad.outputIndexId, + requester, + uint128(uint(int(requesterFlowRate))), + _launchpad.outputToken + ); + } - if(affiliate != address(0)){ - // affiliate and admin share 50/50 2% of requesterFlowRate. - int96 affiliateShares = requesterFlowRate / 100 * 2; - newCtx = _launchpad._updateSubscriptionWithContext(newCtx, _launchpad.outputIndexId, affiliate, uint128(uint(int(affiliateShares / 2))), _launchpad.outputToken); - newCtx = _launchpad._updateSubscriptionWithContext(newCtx, _launchpad.outputIndexId, owner(), uint128(uint(int(affiliateShares / 2))), _launchpad.outputToken); - // take 2% off of requesterFlowRate if they have an affiliate - newCtx = _launchpad._updateSubscriptionWithContext(newCtx, _launchpad.outputIndexId, requester, uint128(uint(int(requesterFlowRate - affiliateShares))), _launchpad.outputToken); - } else { - newCtx = _launchpad._updateSubscriptionWithContext(newCtx, _launchpad.outputIndexId, requester, uint128(uint(int(requesterFlowRate))), _launchpad.outputToken); + emit UpdatedStream(requester, requesterFlowRate, appFlowRate); } - emit UpdatedStream(requester, requesterFlowRate, appFlowRate); - - } - - - function distribute() external { - _launchpad._distribute(new bytes(0)); - } - - function closeStream(address streamer) public { - _launchpad._closeStream(streamer); - } - - function emergencyCloseStream(address streamer) public { - _launchpad._emergencyCloseStream(streamer); - } - - function emergencyDrain() public { - _launchpad._emergencyDrain(); - } + function distribute() external { + _launchpad._distribute(new bytes(0)); + } - function setFeeRate(uint128 feeRate) external onlyOwner { - _launchpad.feeRate = feeRate; - } + function closeStream(address streamer) public { + _launchpad._closeStream(streamer); + } - function isAppJailed() external view returns (bool) { - return _launchpad.host.isAppJailed(this); - } + function emergencyCloseStream(address streamer) public { + _launchpad._emergencyCloseStream(streamer); + } - function getIDAShares(uint32 index, address streamer) external view returns (bool exist, - bool approved, - uint128 units, - uint256 pendingDistribution) { + function emergencyDrain() public { + _launchpad._emergencyDrain(); + } - (exist, approved, units, pendingDistribution) = _launchpad.ida.getSubscription( - _launchpad.outputToken, - address(this), - _launchpad.outputIndexId, - streamer); - } + function setFeeRate(uint128 feeRate) external onlyOwner { + _launchpad.feeRate = feeRate; + } - function getSharePrice() external view returns (uint256) { - return _launchpad.lastSharePrice; - } + function isAppJailed() external view returns (bool) { + return _launchpad.host.isAppJailed(this); + } - function getInputToken() external view returns (ISuperToken) { - return _launchpad.inputToken; - } + function getIDAShares( + uint32 index, + address streamer + ) + external + view + returns ( + bool exist, + bool approved, + uint128 units, + uint256 pendingDistribution + ) + { + (exist, approved, units, pendingDistribution) = _launchpad + .ida + .getSubscription( + _launchpad.outputToken, + address(this), + _launchpad.outputIndexId, + streamer + ); + } - function getOutputToken() external view returns (ISuperToken) { - return _launchpad.outputToken; - } + function getSharePrice() external view returns (uint256) { + return _launchpad.lastSharePrice; + } - function getOutputIndexId() external view returns (uint32) { - return _launchpad.outputIndexId; - } + function getInputToken() external view returns (ISuperToken) { + return _launchpad.inputToken; + } - function getOutputRate() external view returns (uint256) { - return _launchpad.outputRate; - } + function getOutputToken() external view returns (ISuperToken) { + return _launchpad.outputToken; + } - function getTotalInflow() external view returns (int96) { - return _launchpad.cfa.getNetFlow(_launchpad.inputToken, address(this)); - } + function getOutputIndexId() external view returns (uint32) { + return _launchpad.outputIndexId; + } - function getLastDistributionAt() external view returns (uint256) { - return _launchpad.lastDistributionAt; - } + function getOutputRate() external view returns (uint256) { + return _launchpad.outputRate; + } - function getOwner() external view returns (address) { - return _launchpad.owner; - } + function getTotalInflow() external view returns (int96) { + return _launchpad.cfa.getNetFlow(_launchpad.inputToken, address(this)); + } - function getFeeRate() external view returns (uint128) { - return _launchpad.feeRate; - } + function getLastDistributionAt() external view returns (uint256) { + return _launchpad.lastDistributionAt; + } - function getStreamRate(address streamer) external view returns (int96 requesterFlowRate) { - (, requesterFlowRate, , ) = _launchpad.cfa.getFlow(_launchpad.inputToken, streamer, address(this)); - } + function getOwner() external view returns (address) { + return _launchpad.owner; + } + function getFeeRate() external view returns (uint128) { + return _launchpad.feeRate; + } + function getStreamRate( + address streamer + ) external view returns (int96 requesterFlowRate) { + (, requesterFlowRate, , ) = _launchpad.cfa.getFlow( + _launchpad.inputToken, + streamer, + address(this) + ); + } - /** + /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. * NOTE: Override this to add changing the */ - function transferOwnership(address newOwner) public virtual override onlyOwner { + function transferOwnership( + address newOwner + ) public virtual override onlyOwner { super.transferOwnership(newOwner); _launchpad.owner = newOwner; } - /************************************************************************** - * SuperApp callbacks - *************************************************************************/ - - function afterAgreementCreated( - ISuperToken _superToken, - address _agreementClass, - bytes32, // _agreementId, - bytes calldata _agreementData, - bytes calldata ,// _cbdata, - bytes calldata _ctx - ) - external override - onlyExpected(_superToken, _agreementClass) - onlyHost - returns (bytes memory newCtx) - { - if (!_launchpad._isInputToken(_superToken) || !_launchpad._isCFAv1(_agreementClass)) return _ctx; - - (address requester) = abi.decode(_agreementData, (address)); - - _registerReferral(_ctx, requester); - return _updateOutflow(_ctx, _agreementData, true); - } - - function afterAgreementUpdated( - ISuperToken _superToken, - address _agreementClass, - bytes32 ,//_agreementId, - bytes calldata _agreementData, - bytes calldata ,//_cbdata, - bytes calldata _ctx - ) - external override - onlyExpected(_superToken, _agreementClass) - onlyHost - returns (bytes memory newCtx) - { - if (!_launchpad._isInputToken(_superToken) || !_launchpad._isCFAv1(_agreementClass)) return _ctx; - return _updateOutflow(_ctx, _agreementData, true); - } - - function afterAgreementTerminated( - ISuperToken _superToken, - address _agreementClass, - bytes32 ,//_agreementId, - bytes calldata _agreementData, - bytes calldata ,//_cbdata, - bytes calldata _ctx - ) - external override - onlyHost - returns (bytes memory newCtx) - { - console.log("afterAgreementTerminated"); - // According to the app basic law, we should never revert in a termination callback - if (!_launchpad._isInputToken(_superToken) || !_launchpad._isCFAv1(_agreementClass)) return _ctx; - // Skip distribution when terminating to avoid reverts - return _updateOutflow(_ctx, _agreementData, false); - } - - - - modifier onlyHost() { - require(msg.sender == address(_launchpad.host), "one host"); - _; - } - - modifier onlyExpected(ISuperToken superToken, address agreementClass) { - if (_launchpad._isCFAv1(agreementClass)) { - require(_launchpad._isInputToken(superToken), "!inputAccepted"); - } else if (_launchpad._isIDAv1(agreementClass)) { - require(_launchpad._isOutputToken(superToken), "!outputAccepted"); + /************************************************************************** + * SuperApp callbacks + *************************************************************************/ + + function afterAgreementCreated( + ISuperToken _superToken, + address _agreementClass, + bytes32, // _agreementId, + bytes calldata _agreementData, + bytes calldata, // _cbdata, + bytes calldata _ctx + ) + external + override + onlyExpected(_superToken, _agreementClass) + onlyHost + returns (bytes memory newCtx) + { + if ( + !_launchpad._isInputToken(_superToken) || + !_launchpad._isCFAv1(_agreementClass) + ) return _ctx; + + address requester = abi.decode(_agreementData, (address)); + + _registerReferral(_ctx, requester); + return _updateOutflow(_ctx, _agreementData, true); } - _; - } + function afterAgreementUpdated( + ISuperToken _superToken, + address _agreementClass, + bytes32, //_agreementId, + bytes calldata _agreementData, + bytes calldata, //_cbdata, + bytes calldata _ctx + ) + external + override + onlyExpected(_superToken, _agreementClass) + onlyHost + returns (bytes memory newCtx) + { + if ( + !_launchpad._isInputToken(_superToken) || + !_launchpad._isCFAv1(_agreementClass) + ) return _ctx; + return _updateOutflow(_ctx, _agreementData, true); + } + function afterAgreementTerminated( + ISuperToken _superToken, + address _agreementClass, + bytes32, //_agreementId, + bytes calldata _agreementData, + bytes calldata, //_cbdata, + bytes calldata _ctx + ) external override onlyHost returns (bytes memory newCtx) { + console.log("afterAgreementTerminated"); + // According to the app basic law, we should never revert in a termination callback + if ( + !_launchpad._isInputToken(_superToken) || + !_launchpad._isCFAv1(_agreementClass) + ) return _ctx; + // Skip distribution when terminating to avoid reverts + return _updateOutflow(_ctx, _agreementData, false); + } + + modifier onlyHost() { + require(msg.sender == address(_launchpad.host), "one host"); + _; + } + + modifier onlyExpected(ISuperToken superToken, address agreementClass) { + if (_launchpad._isCFAv1(agreementClass)) { + require(_launchpad._isInputToken(superToken), "!inputAccepted"); + } else if (_launchpad._isIDAv1(agreementClass)) { + require(_launchpad._isOutputToken(superToken), "!outputAccepted"); + } + _; + } } diff --git a/contracts/launchpad/RicochetLaunchpadHelper.sol b/contracts/launchpad/RicochetLaunchpadHelper.sol index bd4046c..4578bbd 100644 --- a/contracts/launchpad/RicochetLaunchpadHelper.sol +++ b/contracts/launchpad/RicochetLaunchpadHelper.sol @@ -4,247 +4,309 @@ pragma abicoder v2; import "hardhat/console.sol"; -import { - ISuperApp, - ISuperfluid, - ISuperToken, - ISuperToken, - ISuperAgreement -} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol"; +import {ISuperApp, ISuperfluid, ISuperToken, ISuperToken, ISuperAgreement} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "./RicochetLaunchpadStorage.sol"; - library RicochetLaunchpadHelper { + using SafeERC20 for ERC20; - using SafeERC20 for ERC20; + // TODO: Emit these events where appropriate + event Distribution( + uint256 inputAmount, + uint256 outputAmount, + uint256 feeCollected + ); + event UpdatedStream(address from, int96 newRate, int96 totalInflow); + + function _closeStream( + RicochetLaunchpadStorage.RicochetLaunchpad storage self, + address streamer + ) public { + // Only closable iff their balance is less than 8 hours of streaming + (, int96 streamerFlowRate, , ) = self.cfa.getFlow( + self.inputToken, + streamer, + address(this) + ); + require( + int(self.inputToken.balanceOf(streamer)) <= + streamerFlowRate * 8 hours, + "!closable" + ); + + // Update Subscriptions + _updateSubscription( + self, + self.outputIndexId, + streamer, + 0, + self.outputToken + ); + emit UpdatedStream( + streamer, + 0, + self.cfa.getNetFlow(self.inputToken, address(this)) + ); + + // Close the streamers stream + self.host.callAgreement( + self.cfa, + abi.encodeWithSelector( + self.cfa.deleteFlow.selector, + self.inputToken, + streamer, + address(this), + new bytes(0) // placeholder + ), + "0x" + ); + } - // TODO: Emit these events where appropriate - event Distribution(uint256 inputAmount, uint256 outputAmount, uint256 feeCollected); - event UpdatedStream(address from, int96 newRate, int96 totalInflow); + function _emergencyCloseStream( + RicochetLaunchpadStorage.RicochetLaunchpad storage self, + address streamer + ) public { + // Allows anyone to close any stream iff the app is jailed + bool isJailed = self.host.isAppJailed(ISuperApp(address(this))); + + require(isJailed, "!jailed"); + self.host.callAgreement( + self.cfa, + abi.encodeWithSelector( + self.cfa.deleteFlow.selector, + self.inputToken, + streamer, + address(this), + new bytes(0) // placeholder + ), + "0x" + ); + } + function _emergencyDrain( + RicochetLaunchpadStorage.RicochetLaunchpad storage self + ) public { + require( + self.cfa.getNetFlow(self.inputToken, address(this)) == 0, + "!zeroStreamers" + ); + self.inputToken.transfer( + self.owner, + self.inputToken.balanceOf(address(this)) + ); + self.outputToken.transfer( + self.owner, + self.outputToken.balanceOf(address(this)) + ); + } - function _closeStream(RicochetLaunchpadStorage.RicochetLaunchpad storage self, address streamer) public { - // Only closable iff their balance is less than 8 hours of streaming - (,int96 streamerFlowRate,,) = self.cfa.getFlow(self.inputToken, streamer, address(this)); - require(int(self.inputToken.balanceOf(streamer)) <= streamerFlowRate * 8 hours, - "!closable"); + // @dev Distribute a single `amount` of outputToken among all streamers + // @dev Calculates the amount to distribute + function _distribute( + RicochetLaunchpadStorage.RicochetLaunchpad storage self, + bytes memory ctx + ) external returns (bytes memory newCtx) { + newCtx = ctx; + require( + self.host.isCtxValid(newCtx) || newCtx.length == 0, + "!distributeCtx" + ); + + // Disperse input tokens to beneficiary and owner + uint256 inputAmount = self.inputToken.balanceOf(address(this)); + uint256 feeCollected = (inputAmount * self.feeRate) / 1e6; + uint256 distAmount = inputAmount - feeCollected; + ISuperToken(self.inputToken).transfer(self.owner, feeCollected); + ISuperToken(self.inputToken).transfer(self.beneficiary, distAmount); + + // Distribute the output tokens to the streamers + uint256 outputAmount = (block.timestamp - self.lastDistributionAt) * + self.outputRate; + if (self.outputToken.balanceOf(address(this)) >= outputAmount) { + newCtx = _idaDistribute( + self, + self.outputIndexId, + uint128(outputAmount), + self.outputToken, + newCtx + ); + self.lastSharePrice = (inputAmount * 1e18) / outputAmount; + emit Distribution(inputAmount, outputAmount, feeCollected); + } + + self.lastDistributionAt = block.timestamp; + + return newCtx; + } - // Update Subscriptions - _updateSubscription(self, self.outputIndexId, streamer, 0, self.outputToken); - emit UpdatedStream(streamer, 0, self.cfa.getNetFlow(self.inputToken, address(this))); + function _idaDistribute( + RicochetLaunchpadStorage.RicochetLaunchpad storage self, + uint32 index, + uint128 distAmount, + ISuperToken distToken, + bytes memory ctx + ) internal returns (bytes memory newCtx) { + newCtx = ctx; + if (newCtx.length == 0) { + // No context provided + self.host.callAgreement( + self.ida, + abi.encodeWithSelector( + self.ida.distribute.selector, + distToken, + index, + distAmount, + new bytes(0) // placeholder ctx + ), + new bytes(0) // user data + ); + } else { + require( + self.host.isCtxValid(newCtx) || newCtx.length == 0, + "!distribute" + ); + (newCtx, ) = self.host.callAgreementWithContext( + self.ida, + abi.encodeWithSelector( + self.ida.distribute.selector, + distToken, + index, + distAmount, + new bytes(0) // placeholder ctx + ), + new bytes(0), // user data + newCtx + ); + } + } - // Close the streamers stream - self.host.callAgreement( - self.cfa, - abi.encodeWithSelector( - self.cfa.deleteFlow.selector, - self.inputToken, - streamer, - address(this), - new bytes(0) // placeholder - ), - "0x" - ); + function _createIndex( + RicochetLaunchpadStorage.RicochetLaunchpad storage self, + uint256 index, + ISuperToken distToken + ) internal { + self.host.callAgreement( + self.ida, + abi.encodeWithSelector( + self.ida.createIndex.selector, + distToken, + index, + new bytes(0) // placeholder ctx + ), + new bytes(0) // user data + ); + } - } + function _updateSubscription( + RicochetLaunchpadStorage.RicochetLaunchpad storage self, + uint256 index, + address subscriber, + uint128 shares, + ISuperToken distToken + ) internal { + self.host.callAgreement( + self.ida, + abi.encodeWithSelector( + self.ida.updateSubscription.selector, + distToken, + index, + // one share for the to get it started + subscriber, + shares / 1e9, + new bytes(0) // placeholder ctx + ), + new bytes(0) // user data + ); + } - function _emergencyCloseStream(RicochetLaunchpadStorage.RicochetLaunchpad storage self, address streamer) public { - // Allows anyone to close any stream iff the app is jailed - bool isJailed = self.host.isAppJailed(ISuperApp(address(this))); + function _updateSubscriptionWithContext( + RicochetLaunchpadStorage.RicochetLaunchpad storage self, + bytes memory ctx, + uint256 index, + address subscriber, + uint128 shares, + ISuperToken distToken + ) internal returns (bytes memory newCtx) { + newCtx = ctx; + (newCtx, ) = self.host.callAgreementWithContext( + self.ida, + abi.encodeWithSelector( + self.ida.updateSubscription.selector, + distToken, + index, + subscriber, + shares / 1e9, // Number of shares is proportional to their rate + new bytes(0) + ), + new bytes(0), // user data + newCtx + ); + } - require(isJailed, "!jailed"); - self.host.callAgreement( - self.cfa, - abi.encodeWithSelector( - self.cfa.deleteFlow.selector, - self.inputToken, - streamer, - address(this), - new bytes(0) // placeholder - ), - "0x" - ); - } - - function _emergencyDrain(RicochetLaunchpadStorage.RicochetLaunchpad storage self) public { - require(self.cfa.getNetFlow(self.inputToken, address(this)) == 0, "!zeroStreamers"); - self.inputToken.transfer(self.owner, self.inputToken.balanceOf(address(this))); - self.outputToken.transfer(self.owner, self.outputToken.balanceOf(address(this))); - } - - - // @dev Distribute a single `amount` of outputToken among all streamers - // @dev Calculates the amount to distribute - function _distribute( - RicochetLaunchpadStorage.RicochetLaunchpad storage self, - bytes memory ctx - ) - external returns (bytes memory newCtx) - { - - newCtx = ctx; - require(self.host.isCtxValid(newCtx) || newCtx.length == 0, "!distributeCtx"); - - // Disperse input tokens to beneficiary and owner - uint256 inputAmount = self.inputToken.balanceOf(address(this)); - uint256 feeCollected = inputAmount * self.feeRate / 1e6; - uint256 distAmount = inputAmount - feeCollected; - ISuperToken(self.inputToken).transfer(self.owner, feeCollected); - ISuperToken(self.inputToken).transfer(self.beneficiary, distAmount); - - // Distribute the output tokens to the streamers - uint256 outputAmount = (block.timestamp - self.lastDistributionAt) * self.outputRate; - if(self.outputToken.balanceOf(address(this)) >= outputAmount) { - newCtx = _idaDistribute(self, self.outputIndexId, uint128(outputAmount), self.outputToken, newCtx); - self.lastSharePrice = inputAmount * 1e18 / outputAmount; - emit Distribution(inputAmount, outputAmount, feeCollected); - } - - self.lastDistributionAt = block.timestamp; - - return newCtx; - } - - - function _idaDistribute(RicochetLaunchpadStorage.RicochetLaunchpad storage self, uint32 index, uint128 distAmount, ISuperToken distToken, bytes memory ctx) internal returns (bytes memory newCtx) { - newCtx = ctx; - if (newCtx.length == 0) { // No context provided - self.host.callAgreement( - self.ida, - abi.encodeWithSelector( - self.ida.distribute.selector, - distToken, - index, - distAmount, - new bytes(0) // placeholder ctx - ), - new bytes(0) // user data - ); - } else { - require(self.host.isCtxValid(newCtx) || newCtx.length == 0, "!distribute"); - (newCtx, ) = self.host.callAgreementWithContext( - self.ida, - abi.encodeWithSelector( - self.ida.distribute.selector, - distToken, - index, - distAmount, - new bytes(0) // placeholder ctx - ), - new bytes(0), // user data - newCtx - ); + function _deleteSubscriptionWithContext( + RicochetLaunchpadStorage.RicochetLaunchpad storage self, + bytes memory ctx, + address receiver, + uint256 index, + address subscriber, + ISuperToken distToken + ) internal returns (bytes memory newCtx) { + (newCtx, ) = self.host.callAgreementWithContext( + self.ida, + abi.encodeWithSelector( + self.ida.deleteSubscription.selector, + distToken, + receiver, + index, + subscriber, + new bytes(0) + ), + new bytes(0), // user data + newCtx + ); + } + + /************************************************************************** + * SuperApp callbacks + *************************************************************************/ + + function _isInputToken( + RicochetLaunchpadStorage.RicochetLaunchpad storage self, + ISuperToken superToken + ) internal view returns (bool) { + return address(superToken) == address(self.inputToken); + } + + function _isOutputToken( + RicochetLaunchpadStorage.RicochetLaunchpad storage self, + ISuperToken superToken + ) internal view returns (bool) { + return address(superToken) == address(self.outputToken); + } + + function _isCFAv1( + RicochetLaunchpadStorage.RicochetLaunchpad storage self, + address agreementClass + ) internal view returns (bool) { + return + ISuperAgreement(agreementClass).agreementType() == + keccak256( + "org.superfluid-finance.agreements.ConstantFlowAgreement.v1" + ); + } + + function _isIDAv1( + RicochetLaunchpadStorage.RicochetLaunchpad storage self, + address agreementClass + ) internal view returns (bool) { + return + ISuperAgreement(agreementClass).agreementType() == + keccak256( + "org.superfluid-finance.agreements.InstantDistributionAgreement.v1" + ); } - } - - function _createIndex(RicochetLaunchpadStorage.RicochetLaunchpad storage self, uint256 index, ISuperToken distToken) internal { - self.host.callAgreement( - self.ida, - abi.encodeWithSelector( - self.ida.createIndex.selector, - distToken, - index, - new bytes(0) // placeholder ctx - ), - new bytes(0) // user data - ); - } - - function _updateSubscription( - RicochetLaunchpadStorage.RicochetLaunchpad storage self, - uint256 index, - address subscriber, - uint128 shares, - ISuperToken distToken) internal { - self.host.callAgreement( - self.ida, - abi.encodeWithSelector( - self.ida.updateSubscription.selector, - distToken, - index, - // one share for the to get it started - subscriber, - shares / 1e9, - new bytes(0) // placeholder ctx - ), - new bytes(0) // user data - ); - } - - function _updateSubscriptionWithContext( - RicochetLaunchpadStorage.RicochetLaunchpad storage self, - bytes memory ctx, - uint256 index, - address subscriber, - uint128 shares, - ISuperToken distToken) - internal returns (bytes memory newCtx) { - - newCtx = ctx; - (newCtx, ) = self.host.callAgreementWithContext( - self.ida, - abi.encodeWithSelector( - self.ida.updateSubscription.selector, - distToken, - index, - subscriber, - shares / 1e9, // Number of shares is proportional to their rate - new bytes(0) - ), - new bytes(0), // user data - newCtx - ); - } - - function _deleteSubscriptionWithContext( - RicochetLaunchpadStorage.RicochetLaunchpad storage self, - bytes memory ctx, - address receiver, - uint256 index, - address subscriber, - ISuperToken distToken) - internal returns (bytes memory newCtx) { - - (newCtx, ) = self.host.callAgreementWithContext( - self.ida, - abi.encodeWithSelector( - self.ida.deleteSubscription.selector, - distToken, - receiver, - index, - subscriber, - new bytes(0) - ), - new bytes(0), // user data - newCtx - ); - } - - - /************************************************************************** - * SuperApp callbacks - *************************************************************************/ - - function _isInputToken(RicochetLaunchpadStorage.RicochetLaunchpad storage self, ISuperToken superToken) internal view returns (bool) { - return address(superToken) == address(self.inputToken); - } - - function _isOutputToken(RicochetLaunchpadStorage.RicochetLaunchpad storage self, ISuperToken superToken) internal view returns (bool) { - return address(superToken) == address(self.outputToken); - } - - function _isCFAv1(RicochetLaunchpadStorage.RicochetLaunchpad storage self, address agreementClass) internal view returns (bool) { - return ISuperAgreement(agreementClass).agreementType() - == keccak256("org.superfluid-finance.agreements.ConstantFlowAgreement.v1"); - } - - function _isIDAv1(RicochetLaunchpadStorage.RicochetLaunchpad storage self, address agreementClass) internal view returns (bool) { - return ISuperAgreement(agreementClass).agreementType() - == keccak256("org.superfluid-finance.agreements.InstantDistributionAgreement.v1"); - } - - } +} diff --git a/contracts/launchpad/RicochetLaunchpadStorage.sol b/contracts/launchpad/RicochetLaunchpadStorage.sol index bf897f0..bfc3271 100644 --- a/contracts/launchpad/RicochetLaunchpadStorage.sol +++ b/contracts/launchpad/RicochetLaunchpadStorage.sol @@ -1,33 +1,23 @@ -import { - ISuperfluid, - ISuperToken -} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol"; +import {ISuperfluid, ISuperToken} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol"; +import {IConstantFlowAgreementV1} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol"; -import { - IConstantFlowAgreementV1 -} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol"; +import {IInstantDistributionAgreementV1} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol"; - -import { - IInstantDistributionAgreementV1 -} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol"; - - -library RicochetLaunchpadStorage { - struct RicochetLaunchpad { - ISuperfluid host; // Superfluid host contract - IConstantFlowAgreementV1 cfa; // The stored constant flow agreement class address - IInstantDistributionAgreementV1 ida; // The stored instant dist. agreement class address - ISuperToken inputToken; - ISuperToken outputToken; - address owner; - address originator; - address beneficiary; - uint256 lastDistributionAt; - uint256 outputRate; - uint32 outputIndexId; - uint128 feeRate; - uint256 lastSharePrice; - } +library RicochetLaunchpadStorage { + struct RicochetLaunchpad { + ISuperfluid host; // Superfluid host contract + IConstantFlowAgreementV1 cfa; // The stored constant flow agreement class address + IInstantDistributionAgreementV1 ida; // The stored instant dist. agreement class address + ISuperToken inputToken; + ISuperToken outputToken; + address owner; + address originator; + address beneficiary; + uint256 lastDistributionAt; + uint256 outputRate; + uint32 outputIndexId; + uint128 feeRate; + uint256 lastSharePrice; + } } diff --git a/contracts/matic/IWMATIC.sol b/contracts/matic/IWMATIC.sol index 616d69d..5470de6 100644 --- a/contracts/matic/IWMATIC.sol +++ b/contracts/matic/IWMATIC.sol @@ -3,7 +3,10 @@ pragma solidity ^0.8.0; interface IWMATIC { function deposit() external payable; + function transfer(address to, uint value) external returns (bool); + function withdraw(uint) external; + function balanceOf(address account) external view returns (uint256); } diff --git a/contracts/mockTokens/IERC20.sol b/contracts/mockTokens/IERC20.sol index c89cd48..47652f1 100644 --- a/contracts/mockTokens/IERC20.sol +++ b/contracts/mockTokens/IERC20.sol @@ -24,7 +24,10 @@ interface IERC20 { * * Emits a {Transfer} event. */ - function transfer(address recipient, uint256 amount) external returns (bool); + function transfer( + address recipient, + uint256 amount + ) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be @@ -33,7 +36,10 @@ interface IERC20 { * * This value changes when {approve} or {transferFrom} are called. */ - function allowance(address owner, address spender) external view returns (uint256); + function allowance( + address owner, + address spender + ) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. @@ -78,5 +84,9 @@ interface IERC20 { * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ - event Approval(address indexed owner, address indexed spender, uint256 value); + event Approval( + address indexed owner, + address indexed spender, + uint256 value + ); } diff --git a/contracts/mockTokens/ISuperToken.sol b/contracts/mockTokens/ISuperToken.sol index 0cd4ff0..242c3ba 100644 --- a/contracts/mockTokens/ISuperToken.sol +++ b/contracts/mockTokens/ISuperToken.sol @@ -71,11 +71,9 @@ interface SuperToken is IERC20, IERC777 { /** * @dev Returns the amount of tokens owned by an account (`owner`). */ - function balanceOf(address account) - external - view - override(IERC777, IERC20) - returns (uint256 balance); + function balanceOf( + address account + ) external view override(IERC777, IERC20) returns (uint256 balance); /************************************************************************** * ERC20 @@ -88,10 +86,10 @@ interface SuperToken is IERC20, IERC777 { * * Emits a {Transfer} event. */ - function transfer(address recipient, uint256 amount) - external - override(IERC20) - returns (bool); + function transfer( + address recipient, + uint256 amount + ) external override(IERC20) returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be @@ -100,11 +98,10 @@ interface SuperToken is IERC20, IERC777 { * * This value changes when {approve} or {transferFrom} are called. */ - function allowance(address owner, address spender) - external - view - override(IERC20) - returns (uint256); + function allowance( + address owner, + address spender + ) external view override(IERC20) returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. @@ -120,10 +117,10 @@ interface SuperToken is IERC20, IERC777 { * * Emits an {Approval} event. */ - function approve(address spender, uint256 amount) - external - override(IERC20) - returns (bool); + function approve( + address spender, + uint256 amount + ) external override(IERC20) returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the @@ -152,9 +149,10 @@ interface SuperToken is IERC20, IERC777 { * * - `spender` cannot be the zero address. */ - function increaseAllowance(address spender, uint256 addedValue) - external - returns (bool); + function increaseAllowance( + address spender, + uint256 addedValue + ) external returns (bool); /** * @dev Atomically decreases the allowance granted to `spender` by the caller. @@ -170,9 +168,10 @@ interface SuperToken is IERC20, IERC777 { * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ - function decreaseAllowance(address spender, uint256 subtractedValue) - external - returns (bool); + function decreaseAllowance( + address spender, + uint256 subtractedValue + ) external returns (bool); /************************************************************************** * ERC777 @@ -222,9 +221,10 @@ interface SuperToken is IERC20, IERC777 { * * - the caller must have at least `amount` tokens. */ - function burn(uint256 amount, bytes calldata data) - external - override(IERC777); + function burn( + uint256 amount, + bytes calldata data + ) external override(IERC777); /** * @dev Returns true if an account is an operator of `tokenHolder`. @@ -233,11 +233,10 @@ interface SuperToken is IERC20, IERC777 { * * See {operatorSend} and {operatorBurn}. */ - function isOperatorFor(address operator, address tokenHolder) - external - view - override(IERC777) - returns (bool); + function isOperatorFor( + address operator, + address tokenHolder + ) external view override(IERC777) returns (bool); /** * @dev Make an account an operator of the caller. diff --git a/contracts/mockTokens/MockERC20.sol b/contracts/mockTokens/MockERC20.sol index f612ce3..6f769a2 100644 --- a/contracts/mockTokens/MockERC20.sol +++ b/contracts/mockTokens/MockERC20.sol @@ -3,11 +3,9 @@ pragma solidity ^0.8.0; import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; contract MockERC20 is ERC20 { - - constructor(string memory name, string memory symbol) ERC20(name, symbol) { - } + constructor(string memory name, string memory symbol) ERC20(name, symbol) {} function mint(address to, uint256 amount) public { _mint(to, amount); } -} \ No newline at end of file +} diff --git a/contracts/mockTokens/MockSuperToken.sol b/contracts/mockTokens/MockSuperToken.sol index 896ffd9..af269e3 100644 --- a/contracts/mockTokens/MockSuperToken.sol +++ b/contracts/mockTokens/MockSuperToken.sol @@ -3,26 +3,29 @@ pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; contract MockSuperToken is ERC20 { + ERC20 public underlyingToken; - ERC20 public underlyingToken; + constructor(ERC20 _underlyingToken) ERC20("Supertoken", "ST") { + underlyingToken = _underlyingToken; + } - constructor( - ERC20 _underlyingToken - ) ERC20("Supertoken", "ST") { - underlyingToken = _underlyingToken; - } + function upgrade(uint amount) public { + require( + underlyingToken.transferFrom(msg.sender, address(this), amount), + "Transfer failed" + ); + _mint(msg.sender, amount); + } - function upgrade(uint amount) public { - require(underlyingToken.transferFrom(msg.sender, address(this), amount), "Transfer failed"); - _mint(msg.sender, amount); - } + function upgradeTo(address to, uint amount, bytes calldata data) public { + require( + underlyingToken.transferFrom(msg.sender, address(this), amount), + "Transfer failed" + ); + _mint(to, amount); + } - function upgradeTo(address to, uint amount, bytes calldata data) public { - require(underlyingToken.transferFrom(msg.sender, address(this), amount), "Transfer failed"); - _mint(to, amount); - } - - function getUnderlyingToken() public view returns (address) { - return address(underlyingToken); - } -} \ No newline at end of file + function getUnderlyingToken() public view returns (address) { + return address(underlyingToken); + } +} diff --git a/contracts/referral/IREXReferral.sol b/contracts/referral/IREXReferral.sol index 65bba7d..cc1d34f 100644 --- a/contracts/referral/IREXReferral.sol +++ b/contracts/referral/IREXReferral.sol @@ -2,27 +2,29 @@ pragma solidity ^0.8.0; interface IREXReferral { - - function addressToAffiliate (address) view external returns (uint256); + function addressToAffiliate(address) external view returns (uint256); /** * @dev Add a market contract to allow-list * @param contractAddr address for REXMarket contract */ - function registerApp (address contractAddr) external; + function registerApp(address contractAddr) external; /** * @dev Remove a market contract from allow-list * @param contractAddr address for REXMarket contract */ - function unregisterApp (address contractAddr) external; + function unregisterApp(address contractAddr) external; /** * @dev Apply for a new affiliate * @param name address for customer * @param affiliateId referral ID */ - function applyForAffiliate(string memory name, string memory affiliateId) external; + function applyForAffiliate( + string memory name, + string memory affiliateId + ) external; /** * @dev Enable a affiliate and allow to refer customers @@ -40,7 +42,9 @@ interface IREXReferral { * @dev Check if an affiliate is enabled * @param affiliateId referral ID */ - function isAffiliateEnabled(string memory affiliateId) external view returns (bool); + function isAffiliateEnabled( + string memory affiliateId + ) external view returns (bool); /** * @dev Withdraw affiliate for caller - only allowed for a disabled affiliate @@ -57,13 +61,17 @@ interface IREXReferral { * @dev Get affiliate address for customer - returns 0 if customer is organic * @param customerAddr address for customer */ - function getAffiliateAddress(address customerAddr) external view returns (address); + function getAffiliateAddress( + address customerAddr + ) external view returns (address); /** * @dev Perform all checks for customer and register organically or to affiliate when necessary * @param customerAddr address for new customer * @param affiliateId affiliateId of the referral */ - function safeRegisterCustomer(address customerAddr, string memory affiliateId) external; + function safeRegisterCustomer( + address customerAddr, + string memory affiliateId + ) external; } - diff --git a/contracts/referral/REXReferral.sol b/contracts/referral/REXReferral.sol index c44dc56..357b23d 100644 --- a/contracts/referral/REXReferral.sol +++ b/contracts/referral/REXReferral.sol @@ -27,12 +27,15 @@ contract REXReferral is AccessControlEnumerable { event AffiliateApplied(string name, string id); event AffiliateWithdrawn(string affiliateId); - event ReferredCustomerRegistered(address customer, address affiliate, string affiliateId); + event ReferredCustomerRegistered( + address customer, + address affiliate, + string affiliateId + ); event OrganicCustomerRegistered(address customer); // Roles - bytes32 public constant APP_ROLE = - keccak256("APP_ROLE"); + bytes32 public constant APP_ROLE = keccak256("APP_ROLE"); constructor() { _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); @@ -87,10 +90,22 @@ contract REXReferral is AccessControlEnumerable { } // Apply a new affiliate - function applyForAffiliate(string memory name, string memory affiliateId) public { + function applyForAffiliate( + string memory name, + string memory affiliateId + ) public { require(addressToAffiliate[msg.sender] == 0, "Already applied"); - require(affiliateIdToAffiliate[affiliateId] == 0, "Affiliate ID already exists"); - Affiliate memory affliate = Affiliate(name, affiliateId, false, 0, msg.sender); + require( + affiliateIdToAffiliate[affiliateId] == 0, + "Affiliate ID already exists" + ); + Affiliate memory affliate = Affiliate( + name, + affiliateId, + false, + 0, + msg.sender + ); affiliates.push(affliate); addressToAffiliate[msg.sender] = affiliates.length - 1; affiliateIdToAffiliate[affiliateId] = affiliates.length - 1; @@ -99,21 +114,16 @@ contract REXReferral is AccessControlEnumerable { } // Disable affiliate to refer customers - function disableAffiliate(string memory affiliateId) - public - onlyAdmin - validAffiliate(affiliateId) - { + function disableAffiliate( + string memory affiliateId + ) public onlyAdmin validAffiliate(affiliateId) { affiliates[affiliateIdToAffiliate[affiliateId]].enabled = false; } // Check if a affiliate is enabled - function isAffiliateEnabled(string memory affiliateId) - public - view - validAffiliate(affiliateId) - returns (bool) - { + function isAffiliateEnabled( + string memory affiliateId + ) public view validAffiliate(affiliateId) returns (bool) { return affiliates[affiliateIdToAffiliate[affiliateId]].enabled; } @@ -123,18 +133,17 @@ contract REXReferral is AccessControlEnumerable { affiliates[addressToAffiliate[msg.sender]].enabled == false, "Affiliate is already enabled" ); - string memory affiliateId = affiliates[addressToAffiliate[msg.sender]].id; + string memory affiliateId = affiliates[addressToAffiliate[msg.sender]] + .id; addressToAffiliate[msg.sender] = 0; affiliateIdToAffiliate[affiliateId] = 0; emit AffiliateWithdrawn(affiliateId); } // Change affiliate address (to transfer rewards) - function changeAffiliateAddress(address newAddress) - public - validAffiliateAddress - notZero(newAddress) - { + function changeAffiliateAddress( + address newAddress + ) public validAffiliateAddress notZero(newAddress) { uint256 affiliateIdx = addressToAffiliate[msg.sender]; Affiliate storage affiliate = affiliates[affiliateIdx]; affiliate.addr = newAddress; @@ -143,11 +152,10 @@ contract REXReferral is AccessControlEnumerable { } // Register a customer with an affiliate - function registerReferredCustomer(address customerAddr, string memory affiliateId) - internal - validAffiliate(affiliateId) - notZero(customerAddr) - { + function registerReferredCustomer( + address customerAddr, + string memory affiliateId + ) internal validAffiliate(affiliateId) notZero(customerAddr) { require( isCustomerOrganic[customerAddr] == false, "Already registered organically" @@ -165,11 +173,17 @@ contract REXReferral is AccessControlEnumerable { customerToAffiliate[customerAddr] = affiliateIdx; affiliates[affiliateIdx].totalRef += 1; - emit ReferredCustomerRegistered(customerAddr, affiliates[affiliateIdx].addr, affiliateId); + emit ReferredCustomerRegistered( + customerAddr, + affiliates[affiliateIdx].addr, + affiliateId + ); } // Register a customer as organic - function registerOrganicCustomer(address customerAddr) internal notZero(customerAddr) { + function registerOrganicCustomer( + address customerAddr + ) internal notZero(customerAddr) { require( customerToAffiliate[customerAddr] == 0, "Already registered to affiliate" @@ -179,16 +193,19 @@ contract REXReferral is AccessControlEnumerable { } // Get affiliate address for customer - returns 0 if customer is organic - function getAffiliateAddress(address customerAddr) - public - view - returns (address) - { - if (isCustomerOrganic[customerAddr] || customerToAffiliate[customerAddr] == 0) { + function getAffiliateAddress( + address customerAddr + ) public view returns (address) { + if ( + isCustomerOrganic[customerAddr] || + customerToAffiliate[customerAddr] == 0 + ) { return address(0); } - Affiliate memory affiliate = affiliates[customerToAffiliate[customerAddr]]; + Affiliate memory affiliate = affiliates[ + customerToAffiliate[customerAddr] + ]; if (!affiliate.enabled) { return address(0); } @@ -196,10 +213,10 @@ contract REXReferral is AccessControlEnumerable { } // Perform all checks for customer and register organically or to affiliate when necessary - function safeRegisterCustomer(address customerAddr, string memory affiliateId) - public - onlyApprovedApp - { + function safeRegisterCustomer( + address customerAddr, + string memory affiliateId + ) public onlyApprovedApp { // Customer is already registered organically if (isCustomerOrganic[customerAddr]) { return; diff --git a/contracts/superswap/RexSuperSwap.sol b/contracts/superswap/RexSuperSwap.sol index 56735bc..a8c3fb9 100644 --- a/contracts/superswap/RexSuperSwap.sol +++ b/contracts/superswap/RexSuperSwap.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.0; pragma abicoder v2; -import { ISuperToken } from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol"; +import {ISuperToken} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol"; import "./TransferHelper.sol"; import "./interfaces/ISwapRouter02.sol"; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; @@ -12,138 +12,169 @@ import "../ISETHCustom.sol"; import "hardhat/console.sol"; contract RexSuperSwap { - using SafeERC20 for ERC20; - ISwapRouter02 public immutable swapRouter; - address public superNativeToken; + using SafeERC20 for ERC20; + ISwapRouter02 public immutable swapRouter; + address public superNativeToken; - event SuperSwapComplete(uint256 amountOut); + event SuperSwapComplete(uint256 amountOut); - constructor(ISwapRouter02 _swapRouter, address _superNativeToken) { - swapRouter = _swapRouter; - superNativeToken = _superNativeToken; - } + constructor(ISwapRouter02 _swapRouter, address _superNativeToken) { + swapRouter = _swapRouter; + superNativeToken = _superNativeToken; + } - // Having unlimited approvals rather then dealing with decimal conversions. + // Having unlimited approvals rather then dealing with decimal conversions. // Not a problem as contract is not storing any tokens. function approve(IERC20 _token, address _spender) internal { if (_token.allowance(_spender, msg.sender) == 0) { - TransferHelper.safeApprove(address(_token), address(_spender), ((2 ** 256) - 1)); + TransferHelper.safeApprove( + address(_token), + address(_spender), + ((2 ** 256) - 1) + ); } } function withdrawToken(IWMATIC _tokenContract, uint256 _amount) private { - // Withdraw matic to this address - _tokenContract.withdraw(_amount); - } - - /** - * @dev Swaps `amountIn` of `_from` SuperToken for at least `amountOutMin` - * of `_to` SuperToken through `path` with `poolFees` fees for each pair. - * - * Returns the amount of `_to` SuperToken received. - */ - function swap( - ISuperToken _from, - ISuperToken _to, - uint256 amountIn, - uint256 amountOutMin, - address[] memory path, - uint24[] memory poolFees, // Example: 0.3% * 10000 = 3000 - bool _hasUnderlyingFrom, - bool _hasUnderlyingTo - ) external payable returns (uint256 amountOut) { - require(amountIn > 0, "Amount cannot be 0"); - require(path.length > 1, "Incorrect path"); - require(poolFees.length == path.length - 1, "Incorrect poolFees length"); - - // Step 1: Get underlying tokens and verify path - address fromBase = address(_from); - address toBase = address(_to); - if (_hasUnderlyingFrom) { - fromBase = _from.getUnderlyingToken(); - } - if(_hasUnderlyingTo){ - toBase = _to.getUnderlyingToken(); + // Withdraw matic to this address + _tokenContract.withdraw(_amount); } - require(path[0] == fromBase, "Invalid 'from' base token"); - require(path[path.length - 1] == toBase, "Invalid 'to' base token"); - - // Step 2: Transfer SuperTokens from sender - TransferHelper.safeTransferFrom( - address(_from), - msg.sender, - address(this), - amountIn - ); - - console.log("starting balance of from token - ", _from.balanceOf(address(this))); + /** + * @dev Swaps `amountIn` of `_from` SuperToken for at least `amountOutMin` + * of `_to` SuperToken through `path` with `poolFees` fees for each pair. + * + * Returns the amount of `_to` SuperToken received. + */ + function swap( + ISuperToken _from, + ISuperToken _to, + uint256 amountIn, + uint256 amountOutMin, + address[] memory path, + uint24[] memory poolFees, // Example: 0.3% * 10000 = 3000 + bool _hasUnderlyingFrom, + bool _hasUnderlyingTo + ) external payable returns (uint256 amountOut) { + require(amountIn > 0, "Amount cannot be 0"); + require(path.length > 1, "Incorrect path"); + require( + poolFees.length == path.length - 1, + "Incorrect poolFees length" + ); + + // Step 1: Get underlying tokens and verify path + address fromBase = address(_from); + address toBase = address(_to); + if (_hasUnderlyingFrom) { + fromBase = _from.getUnderlyingToken(); + } + if (_hasUnderlyingTo) { + toBase = _to.getUnderlyingToken(); + } - // Step 3: Downgrade if it's not a native token - if(_hasUnderlyingFrom){ - _from.downgrade(amountIn); - } + require(path[0] == fromBase, "Invalid 'from' base token"); + require(path[path.length - 1] == toBase, "Invalid 'to' base token"); + + // Step 2: Transfer SuperTokens from sender + TransferHelper.safeTransferFrom( + address(_from), + msg.sender, + address(this), + amountIn + ); + + console.log( + "starting balance of from token - ", + _from.balanceOf(address(this)) + ); + + // Step 3: Downgrade if it's not a native token + if (_hasUnderlyingFrom) { + _from.downgrade(amountIn); + } - // Encode the path for swap - bytes memory encodedPath; - for (uint256 i = 0; i < path.length; i++) { - if (i == path.length - 1) { - encodedPath = abi.encodePacked(encodedPath, path[i]); - } else { - encodedPath = abi.encodePacked(encodedPath, path[i], poolFees[i]); - } - } + // Encode the path for swap + bytes memory encodedPath; + for (uint256 i = 0; i < path.length; i++) { + if (i == path.length - 1) { + encodedPath = abi.encodePacked(encodedPath, path[i]); + } else { + encodedPath = abi.encodePacked( + encodedPath, + path[i], + poolFees[i] + ); + } + } - // Approve the router to spend token supplied (fromBase). - approve(IERC20(fromBase), address(swapRouter)); - - console.log("balance of from token before swap - ", ERC20(fromBase).balanceOf(address(this))); - - IV3SwapRouter.ExactInputParams memory params = IV3SwapRouter - .ExactInputParams({ - path: encodedPath, - recipient: address(this), - amountIn: ERC20(fromBase).balanceOf(address(this)), - amountOutMinimum: amountOutMin - }); - - // Execute the swap - amountOut = swapRouter.exactInput(params); - - console.log("balance of to token after swap - ", ERC20(toBase).balanceOf(address(this))); - - // Step 5: Upgrade and send tokens back - approve(IERC20(toBase), address(_to)); - - // Upgrade if it has underlying token - if (_hasUnderlyingTo) { - if (address(_to) == superNativeToken) { - // withdraw from WMATIC to MATIC and then upgrade. - withdrawToken(IWMATIC(toBase), ERC20(toBase).balanceOf(address(this))); - ISETHCustom(address(_to)).upgradeByETH{value: address(this).balance}(); - } else { - _to.upgrade(amountOut * (10**(18 - ERC20(toBase).decimals()))); - } + // Approve the router to spend token supplied (fromBase). + approve(IERC20(fromBase), address(swapRouter)); + + console.log( + "balance of from token before swap - ", + ERC20(fromBase).balanceOf(address(this)) + ); + + IV3SwapRouter.ExactInputParams memory params = IV3SwapRouter + .ExactInputParams({ + path: encodedPath, + recipient: address(this), + amountIn: ERC20(fromBase).balanceOf(address(this)), + amountOutMinimum: amountOutMin + }); + + // Execute the swap + amountOut = swapRouter.exactInput(params); + + console.log( + "balance of to token after swap - ", + ERC20(toBase).balanceOf(address(this)) + ); + + // Step 5: Upgrade and send tokens back + approve(IERC20(toBase), address(_to)); + + // Upgrade if it has underlying token + if (_hasUnderlyingTo) { + if (address(_to) == superNativeToken) { + // withdraw from WMATIC to MATIC and then upgrade. + withdrawToken( + IWMATIC(toBase), + ERC20(toBase).balanceOf(address(this)) + ); + ISETHCustom(address(_to)).upgradeByETH{ + value: address(this).balance + }(); + } else { + _to.upgrade( + amountOut * (10 ** (18 - ERC20(toBase).decimals())) + ); + } + } + approve(IERC20(address(_to)), msg.sender); + + console.log( + "balance of downgraded token after upgrade should be 0 - ", + ERC20(toBase).balanceOf(address(this)) + ); + console.log( + "balance of swapped super token - ", + _to.balanceOf(address(this)) + ); + // transfer swapped token back to user + _to.transfer(msg.sender, _to.balanceOf(address(this))); + emit SuperSwapComplete(amountOut); } - approve(IERC20(address(_to)), msg.sender); - - console.log("balance of downgraded token after upgrade should be 0 - ", ERC20(toBase).balanceOf(address(this))); - console.log("balance of swapped super token - ", _to.balanceOf(address(this))); - // transfer swapped token back to user - _to.transfer(msg.sender, _to.balanceOf(address(this))); - emit SuperSwapComplete(amountOut); - } - - receive() external payable { - } + receive() external payable {} - fallback() external payable { - } + fallback() external payable {} } interface IWMATIC is IERC20 { function deposit() external payable; + function withdraw(uint wad) external; } diff --git a/contracts/superswap/TransferHelper.sol b/contracts/superswap/TransferHelper.sol index 1bf6fc1..ab5911e 100644 --- a/contracts/superswap/TransferHelper.sol +++ b/contracts/superswap/TransferHelper.sol @@ -16,9 +16,18 @@ library TransferHelper { address to, uint256 value ) internal { - (bool success, bytes memory data) = - token.call(abi.encodeWithSelector(IERC20.transferFrom.selector, from, to, value)); - require(success && (data.length == 0 || abi.decode(data, (bool))), "STF"); + (bool success, bytes memory data) = token.call( + abi.encodeWithSelector( + IERC20.transferFrom.selector, + from, + to, + value + ) + ); + require( + success && (data.length == 0 || abi.decode(data, (bool))), + "STF" + ); } /// @notice Transfers tokens from msg.sender to a recipient @@ -26,13 +35,14 @@ library TransferHelper { /// @param token The contract address of the token which will be transferred /// @param to The recipient of the transfer /// @param value The value of the transfer - function safeTransfer( - address token, - address to, - uint256 value - ) internal { - (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector, to, value)); - require(success && (data.length == 0 || abi.decode(data, (bool))), "ST"); + function safeTransfer(address token, address to, uint256 value) internal { + (bool success, bytes memory data) = token.call( + abi.encodeWithSelector(IERC20.transfer.selector, to, value) + ); + require( + success && (data.length == 0 || abi.decode(data, (bool))), + "ST" + ); } /// @notice Approves the stipulated contract to spend the given allowance in the given token @@ -40,13 +50,14 @@ library TransferHelper { /// @param token The contract address of the token to be approved /// @param to The target of the approval /// @param value The amount of the given token the target will be allowed to spend - function safeApprove( - address token, - address to, - uint256 value - ) internal { - (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.approve.selector, to, value)); - require(success && (data.length == 0 || abi.decode(data, (bool))), "SA"); + function safeApprove(address token, address to, uint256 value) internal { + (bool success, bytes memory data) = token.call( + abi.encodeWithSelector(IERC20.approve.selector, to, value) + ); + require( + success && (data.length == 0 || abi.decode(data, (bool))), + "SA" + ); } /// @notice Transfers ETH to the recipient address @@ -57,4 +68,4 @@ library TransferHelper { (bool success, ) = to.call{value: value}(new bytes(0)); require(success, "STE"); } -} \ No newline at end of file +} diff --git a/contracts/superswap/interfaces/IApproveAndCall.sol b/contracts/superswap/interfaces/IApproveAndCall.sol index 1011256..02b80f7 100644 --- a/contracts/superswap/interfaces/IApproveAndCall.sol +++ b/contracts/superswap/interfaces/IApproveAndCall.sol @@ -3,13 +3,22 @@ pragma solidity ^0.8.0; pragma abicoder v2; interface IApproveAndCall { - enum ApprovalType {NOT_REQUIRED, MAX, MAX_MINUS_ONE, ZERO_THEN_MAX, ZERO_THEN_MAX_MINUS_ONE} + enum ApprovalType { + NOT_REQUIRED, + MAX, + MAX_MINUS_ONE, + ZERO_THEN_MAX, + ZERO_THEN_MAX_MINUS_ONE + } /// @dev Lens to be called off-chain to determine which (if any) of the relevant approval functions should be called /// @param token The token to approve /// @param amount The amount to approve /// @return The required approval type - function getApprovalType(address token, uint256 amount) external returns (ApprovalType); + function getApprovalType( + address token, + uint256 amount + ) external returns (ApprovalType); /// @notice Approves a token for the maximum possible amount /// @param token The token to approve @@ -30,7 +39,9 @@ interface IApproveAndCall { /// @notice Calls the position manager with arbitrary calldata /// @param data Calldata to pass along to the position manager /// @return result The result from the call - function callPositionManager(bytes memory data) external payable returns (bytes memory result); + function callPositionManager( + bytes memory data + ) external payable returns (bytes memory result); struct MintParams { address token0; @@ -46,7 +57,9 @@ interface IApproveAndCall { /// @notice Calls the position manager's mint function /// @param params Calldata to pass along to the position manager /// @return result The result from the call - function mint(MintParams calldata params) external payable returns (bytes memory result); + function mint( + MintParams calldata params + ) external payable returns (bytes memory result); struct IncreaseLiquidityParams { address token0; @@ -59,5 +72,7 @@ interface IApproveAndCall { /// @notice Calls the position manager's increaseLiquidity function /// @param params Calldata to pass along to the position manager /// @return result The result from the call - function increaseLiquidity(IncreaseLiquidityParams calldata params) external payable returns (bytes memory result); -} \ No newline at end of file + function increaseLiquidity( + IncreaseLiquidityParams calldata params + ) external payable returns (bytes memory result); +} diff --git a/contracts/superswap/interfaces/IMulticall.sol b/contracts/superswap/interfaces/IMulticall.sol index 71b10a6..ded270e 100644 --- a/contracts/superswap/interfaces/IMulticall.sol +++ b/contracts/superswap/interfaces/IMulticall.sol @@ -9,5 +9,7 @@ interface IMulticall { /// @dev The `msg.value` should not be trusted for any method callable from multicall. /// @param data The encoded function data for each of the calls to make to this contract /// @return results The results from each of the calls passed in via data - function multicall(bytes[] calldata data) external payable returns (bytes[] memory results); -} \ No newline at end of file + function multicall( + bytes[] calldata data + ) external payable returns (bytes[] memory results); +} diff --git a/contracts/superswap/interfaces/IMulticallExtended.sol b/contracts/superswap/interfaces/IMulticallExtended.sol index 6f46e5c..1d4e147 100644 --- a/contracts/superswap/interfaces/IMulticallExtended.sol +++ b/contracts/superswap/interfaces/IMulticallExtended.sol @@ -12,15 +12,18 @@ interface IMulticallExtended is IMulticall { /// @param deadline The time by which this function must be called before failing /// @param data The encoded function data for each of the calls to make to this contract /// @return results The results from each of the calls passed in via data - function multicall(uint256 deadline, bytes[] calldata data) external payable returns (bytes[] memory results); + function multicall( + uint256 deadline, + bytes[] calldata data + ) external payable returns (bytes[] memory results); /// @notice Call multiple functions in the current contract and return the data from all of them if they all succeed /// @dev The `msg.value` should not be trusted for any method callable from multicall. /// @param previousBlockhash The expected parent blockHash /// @param data The encoded function data for each of the calls to make to this contract /// @return results The results from each of the calls passed in via data - function multicall(bytes32 previousBlockhash, bytes[] calldata data) - external - payable - returns (bytes[] memory results); -} \ No newline at end of file + function multicall( + bytes32 previousBlockhash, + bytes[] calldata data + ) external payable returns (bytes[] memory results); +} diff --git a/contracts/superswap/interfaces/ISelfPermit.sol b/contracts/superswap/interfaces/ISelfPermit.sol index 2abaf48..65b9c76 100644 --- a/contracts/superswap/interfaces/ISelfPermit.sol +++ b/contracts/superswap/interfaces/ISelfPermit.sol @@ -73,4 +73,4 @@ interface ISelfPermit { bytes32 r, bytes32 s ) external payable; -} \ No newline at end of file +} diff --git a/contracts/superswap/interfaces/ISwapRouter02.sol b/contracts/superswap/interfaces/ISwapRouter02.sol index 4f762ea..dae1775 100644 --- a/contracts/superswap/interfaces/ISwapRouter02.sol +++ b/contracts/superswap/interfaces/ISwapRouter02.sol @@ -10,6 +10,12 @@ import "./IApproveAndCall.sol"; import "./IMulticallExtended.sol"; /// @title Router token swapping functionality -interface ISwapRouter02 is IV2SwapRouter, IV3SwapRouter, IApproveAndCall, IMulticallExtended, ISelfPermit { +interface ISwapRouter02 is + IV2SwapRouter, + IV3SwapRouter, + IApproveAndCall, + IMulticallExtended, + ISelfPermit +{ -} \ No newline at end of file +} diff --git a/contracts/superswap/interfaces/IV2SwapRouter.sol b/contracts/superswap/interfaces/IV2SwapRouter.sol index 19721da..a176747 100644 --- a/contracts/superswap/interfaces/IV2SwapRouter.sol +++ b/contracts/superswap/interfaces/IV2SwapRouter.sol @@ -32,4 +32,4 @@ interface IV2SwapRouter { address[] calldata path, address to ) external payable returns (uint256 amountIn); -} \ No newline at end of file +} diff --git a/contracts/superswap/interfaces/IV3SwapCallback.sol b/contracts/superswap/interfaces/IV3SwapCallback.sol index dbc3010..376d9c9 100644 --- a/contracts/superswap/interfaces/IV3SwapCallback.sol +++ b/contracts/superswap/interfaces/IV3SwapCallback.sol @@ -18,4 +18,4 @@ interface IV3SwapCallback { int256 amount1Delta, bytes calldata data ) external; -} \ No newline at end of file +} diff --git a/contracts/superswap/interfaces/IV3SwapRouter.sol b/contracts/superswap/interfaces/IV3SwapRouter.sol index be5a37a..0897490 100644 --- a/contracts/superswap/interfaces/IV3SwapRouter.sol +++ b/contracts/superswap/interfaces/IV3SwapRouter.sol @@ -22,7 +22,9 @@ interface IV3SwapRouter is IV3SwapCallback { /// and swap the entire amount, enabling contracts to send tokens before calling this function. /// @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata /// @return amountOut The amount of the received token - function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut); + function exactInputSingle( + ExactInputSingleParams calldata params + ) external payable returns (uint256 amountOut); struct ExactInputParams { bytes path; @@ -36,7 +38,9 @@ interface IV3SwapRouter is IV3SwapCallback { /// and swap the entire amount, enabling contracts to send tokens before calling this function. /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata /// @return amountOut The amount of the received token - function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut); + function exactInput( + ExactInputParams calldata params + ) external payable returns (uint256 amountOut); struct ExactOutputSingleParams { address tokenIn; @@ -53,7 +57,9 @@ interface IV3SwapRouter is IV3SwapCallback { /// that may remain in the router after the swap. /// @param params The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata /// @return amountIn The amount of the input token - function exactOutputSingle(ExactOutputSingleParams calldata params) external payable returns (uint256 amountIn); + function exactOutputSingle( + ExactOutputSingleParams calldata params + ) external payable returns (uint256 amountIn); struct ExactOutputParams { bytes path; @@ -66,5 +72,7 @@ interface IV3SwapRouter is IV3SwapCallback { /// that may remain in the router after the swap. /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata /// @return amountIn The amount of the input token - function exactOutput(ExactOutputParams calldata params) external payable returns (uint256 amountIn); -} \ No newline at end of file + function exactOutput( + ExactOutputParams calldata params + ) external payable returns (uint256 amountIn); +} diff --git a/contracts/sushiswap/IMiniChefV2.sol b/contracts/sushiswap/IMiniChefV2.sol index c23a6ff..ca54d7d 100644 --- a/contracts/sushiswap/IMiniChefV2.sol +++ b/contracts/sushiswap/IMiniChefV2.sol @@ -15,12 +15,32 @@ interface IMiniChefV2 { } function poolLength() external view returns (uint256); - function updatePool(uint256 pid) external returns (IMiniChefV2.PoolInfo memory); - function userInfo(uint256 _pid, address _user) external view returns (uint256, uint256); + + function updatePool( + uint256 pid + ) external returns (IMiniChefV2.PoolInfo memory); + + function userInfo( + uint256 _pid, + address _user + ) external view returns (uint256, uint256); + function deposit(uint256 pid, uint256 amount, address to) external; + function withdraw(uint256 pid, uint256 amount, address to) external; + function harvest(uint256 pid, address to) external; - function withdrawAndHarvest(uint256 pid, uint256 amount, address to) external; + + function withdrawAndHarvest( + uint256 pid, + uint256 amount, + address to + ) external; + function emergencyWithdraw(uint256 pid, address to) external; - function pendingSushi(uint256 _pid, address _user) external view returns (uint256 pending); + + function pendingSushi( + uint256 _pid, + address _user + ) external view returns (uint256 pending); } diff --git a/contracts/uniswap/IUniswapV3Pool.sol b/contracts/uniswap/IUniswapV3Pool.sol index 56df050..a2239bd 100644 --- a/contracts/uniswap/IUniswapV3Pool.sol +++ b/contracts/uniswap/IUniswapV3Pool.sol @@ -1,12 +1,12 @@ // SPDX-License-Identifier: GPL-2.0-or-later pragma solidity >=0.5.0; -import './pool/IUniswapV3PoolImmutables.sol'; -import './pool/IUniswapV3PoolState.sol'; -import './pool/IUniswapV3PoolDerivedState.sol'; -import './pool/IUniswapV3PoolActions.sol'; -import './pool/IUniswapV3PoolOwnerActions.sol'; -import './pool/IUniswapV3PoolEvents.sol'; +import "./pool/IUniswapV3PoolImmutables.sol"; +import "./pool/IUniswapV3PoolState.sol"; +import "./pool/IUniswapV3PoolDerivedState.sol"; +import "./pool/IUniswapV3PoolActions.sol"; +import "./pool/IUniswapV3PoolOwnerActions.sol"; +import "./pool/IUniswapV3PoolEvents.sol"; /// @title The interface for a Uniswap V3 Pool /// @notice A Uniswap pool facilitates swapping and automated market making between any two assets that strictly conform diff --git a/contracts/uniswap/pool/IUniswapV3PoolActions.sol b/contracts/uniswap/pool/IUniswapV3PoolActions.sol index 44fb61c..3c10a21 100644 --- a/contracts/uniswap/pool/IUniswapV3PoolActions.sol +++ b/contracts/uniswap/pool/IUniswapV3PoolActions.sol @@ -99,5 +99,7 @@ interface IUniswapV3PoolActions { /// @dev This method is no-op if the pool already has an observationCardinalityNext greater than or equal to /// the input observationCardinalityNext. /// @param observationCardinalityNext The desired minimum number of observations for the pool to store - function increaseObservationCardinalityNext(uint16 observationCardinalityNext) external; + function increaseObservationCardinalityNext( + uint16 observationCardinalityNext + ) external; } diff --git a/contracts/uniswap/pool/IUniswapV3PoolDerivedState.sol b/contracts/uniswap/pool/IUniswapV3PoolDerivedState.sol index eda3a00..6df48ca 100644 --- a/contracts/uniswap/pool/IUniswapV3PoolDerivedState.sol +++ b/contracts/uniswap/pool/IUniswapV3PoolDerivedState.sol @@ -15,10 +15,15 @@ interface IUniswapV3PoolDerivedState { /// @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp /// @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block /// timestamp - function observe(uint32[] calldata secondsAgos) + function observe( + uint32[] calldata secondsAgos + ) external view - returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s); + returns ( + int56[] memory tickCumulatives, + uint160[] memory secondsPerLiquidityCumulativeX128s + ); /// @notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range /// @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed. @@ -29,7 +34,10 @@ interface IUniswapV3PoolDerivedState { /// @return tickCumulativeInside The snapshot of the tick accumulator for the range /// @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range /// @return secondsInside The snapshot of seconds per liquidity for the range - function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) + function snapshotCumulativesInside( + int24 tickLower, + int24 tickUpper + ) external view returns ( diff --git a/contracts/uniswap/pool/IUniswapV3PoolEvents.sol b/contracts/uniswap/pool/IUniswapV3PoolEvents.sol index 9d915dd..97b26fb 100644 --- a/contracts/uniswap/pool/IUniswapV3PoolEvents.sol +++ b/contracts/uniswap/pool/IUniswapV3PoolEvents.sol @@ -110,12 +110,22 @@ interface IUniswapV3PoolEvents { /// @param feeProtocol1Old The previous value of the token1 protocol fee /// @param feeProtocol0New The updated value of the token0 protocol fee /// @param feeProtocol1New The updated value of the token1 protocol fee - event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New); + event SetFeeProtocol( + uint8 feeProtocol0Old, + uint8 feeProtocol1Old, + uint8 feeProtocol0New, + uint8 feeProtocol1New + ); /// @notice Emitted when the collected protocol fees are withdrawn by the factory owner /// @param sender The address that collects the protocol fees /// @param recipient The address that receives the collected protocol fees /// @param amount0 The amount of token0 protocol fees that is withdrawn /// @param amount0 The amount of token1 protocol fees that is withdrawn - event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1); + event CollectProtocol( + address indexed sender, + address indexed recipient, + uint128 amount0, + uint128 amount1 + ); } diff --git a/contracts/uniswap/pool/IUniswapV3PoolState.sol b/contracts/uniswap/pool/IUniswapV3PoolState.sol index 620256c..26208ee 100644 --- a/contracts/uniswap/pool/IUniswapV3PoolState.sol +++ b/contracts/uniswap/pool/IUniswapV3PoolState.sol @@ -41,7 +41,10 @@ interface IUniswapV3PoolState { /// @notice The amounts of token0 and token1 that are owed to the protocol /// @dev Protocol fees will never exceed uint128 max in either token - function protocolFees() external view returns (uint128 token0, uint128 token1); + function protocolFees() + external + view + returns (uint128 token0, uint128 token1); /// @notice The currently in range liquidity available to the pool /// @dev This value has no relationship to the total liquidity across all ticks @@ -61,7 +64,9 @@ interface IUniswapV3PoolState { /// Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0. /// In addition, these values are only relative and must be used only in comparison to previous snapshots for /// a specific position. - function ticks(int24 tick) + function ticks( + int24 tick + ) external view returns ( @@ -85,7 +90,9 @@ interface IUniswapV3PoolState { /// Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke, /// Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke, /// Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke - function positions(bytes32 key) + function positions( + bytes32 key + ) external view returns ( @@ -104,7 +111,9 @@ interface IUniswapV3PoolState { /// Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp, /// Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp, /// Returns initialized whether the observation has been initialized and the values are safe to use - function observations(uint256 index) + function observations( + uint256 index + ) external view returns ( diff --git a/hardhat.config.ts b/hardhat.config.ts index 0080c4f..0f17ae1 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -8,10 +8,10 @@ import "@nomiclabs/hardhat-etherscan"; import "@nomiclabs/hardhat-waffle"; import "@nomiclabs/hardhat-web3"; import "@nomiclabs/hardhat-ethers"; +import "@nomiclabs/hardhat-solhint"; // import "@openzeppelin/hardhat-upgrades"; import "hardhat-contract-sizer"; import "hardhat-gas-reporter"; -import "@nomiclabs/hardhat-etherscan"; import "@typechain/hardhat"; import "solidity-coverage"; require("hardhat-tracer"); diff --git a/package-lock.json b/package-lock.json index 840e80f..d840659 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,8 +23,9 @@ "ricochet-exchange-sfcontracts-used": "^1.0.2" }, "devDependencies": { - "@nomiclabs/hardhat-ethers": "npm:hardhat-deploy-ethers@^0.3.0-beta.13", + "@nomiclabs/hardhat-ethers": "^2.2.3", "@nomiclabs/hardhat-etherscan": "^2.1.8", + "@nomiclabs/hardhat-solhint": "^3.0.1", "@nomiclabs/hardhat-waffle": "^2.0.1", "@nomiclabs/hardhat-web3": "^2.0.0", "@openzeppelin/contracts": "^4.0.0", @@ -47,7 +48,6 @@ "dotenv": "^10.0.0", "eslint": "^7.32.0", "eslint-config-airbnb": "^18.2.1", - "eslint-config-prettier": "^8.3.0", "eslint-config-standard": "^16.0.3", "eslint-plugin-import": "^2.25.3", "eslint-plugin-node": "^11.1.0", @@ -59,9 +59,11 @@ "hardhat": "^2.8.0", "hardhat-deploy": "^0.11.23", "hardhat-gas-reporter": "^1.0.6", - "prettier": "^2.5.1", - "prettier-plugin-solidity": "^1.0.0-beta.13", + "husky": "^8.0.3", + "prettier": "^2.8.8", + "prettier-plugin-solidity": "^1.1.3", "solhint": "^3.3.6", + "solhint-plugin-prettier": "^0.0.5", "solidity-coverage": "^0.7.22", "ts-node": "^10.5.0", "typechain": "^7.0.0", @@ -1927,10 +1929,9 @@ } }, "node_modules/@nomiclabs/hardhat-ethers": { - "name": "hardhat-deploy-ethers", - "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==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz", + "integrity": "sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==", "dev": true, "peerDependencies": { "ethers": "^5.0.0", @@ -1955,6 +1956,18 @@ "hardhat": "^2.0.4" } }, + "node_modules/@nomiclabs/hardhat-solhint": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-solhint/-/hardhat-solhint-3.0.1.tgz", + "integrity": "sha512-GqDoStxL1aA9hZul9HRdk+3eEZ/XLBwvIlz3/EJUusUsoadNYEnio9aYOsBeNeZWo+B/Fd3EgMXgbf9wWQLyRA==", + "dev": true, + "dependencies": { + "solhint": "^3.4.0" + }, + "peerDependencies": { + "hardhat": "^2.0.0" + } + }, "node_modules/@nomiclabs/hardhat-waffle": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.1.tgz", @@ -2945,16 +2958,6 @@ "tenderly": "^0.3.0" } }, - "node_modules/@tenderly/hardhat-tenderly/node_modules/@nomiclabs/hardhat-ethers": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.2.tgz", - "integrity": "sha512-NLDlDFL2us07C0jB/9wzvR0kuLivChJWCXTKcj3yqjZqMoYp7g7wwS157F70VHx/+9gHIBGzak5pKDwG8gEefA==", - "dev": true, - "peerDependencies": { - "ethers": "^5.0.0", - "hardhat": "^2.0.0" - } - }, "node_modules/@tenderly/hardhat-tenderly/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -4883,10 +4886,13 @@ } }, "node_modules/antlr4": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.7.1.tgz", - "integrity": "sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ==", - "dev": true + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.12.0.tgz", + "integrity": "sha512-23iB5IzXJZRZeK9TigzUyrNc9pSmNqAerJRBcNq1ETrmttMWRgaYZzC561IgEO3ygKsDJTYDTozABXa4b/fTQQ==", + "dev": true, + "engines": { + "node": ">=16" + } }, "node_modules/antlr4ts": { "version": "0.5.0-alpha.4", @@ -5865,39 +5871,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "dependencies": { - "callsites": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/caller-callsite/node_modules/callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "dependencies": { - "caller-callsite": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -6053,12 +6026,6 @@ "upper-case-first": "^1.1.0" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, "node_modules/charenc": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", @@ -6213,18 +6180,6 @@ "node": ">=6" } }, - "node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/cli-table3": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", @@ -6284,12 +6239,6 @@ "node": ">=8" } }, - "node_modules/cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true - }, "node_modules/cliui": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", @@ -6659,53 +6608,57 @@ } }, "node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", + "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", "dev": true, "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" } }, - "node_modules/cosmiconfig/node_modules/import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=4" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/cosmiconfig/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "dependencies": { + "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": ">=4" - } - }, - "node_modules/cosmiconfig/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true, - "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/crc-32": { @@ -7760,18 +7713,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-config-prettier": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", - "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, "node_modules/eslint-config-standard": { "version": "16.0.3", "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz", @@ -8882,20 +8823,6 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/extract-files": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", @@ -8987,18 +8914,6 @@ "reusify": "^1.0.4" } }, - "node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -21274,6 +21189,21 @@ "node": ">= 6" } }, + "node_modules/husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "dev": true, + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, "node_modules/hyperlinker": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz", @@ -21416,86 +21346,6 @@ "node": ">=0.10.0" } }, - "node_modules/inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", - "dev": true, - "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" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/inquirer/node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/inquirer/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/insert-module-globals": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", @@ -21695,15 +21545,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -22042,10 +21883,10 @@ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" }, - "node_modules/json-parse-better-errors": { - "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==", + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, "node_modules/json-schema": { @@ -22334,6 +22175,12 @@ "node": ">= 0.8.0" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, "node_modules/load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -22644,15 +22491,6 @@ "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", @@ -23077,12 +22915,6 @@ "imul": "^1.0.0" } }, - "node_modules/mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, "node_modules/nan": { "version": "2.15.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", @@ -23467,18 +23299,6 @@ "wrappy": "1" } }, - "node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/open": { "version": "7.4.2", "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", @@ -23860,12 +23680,6 @@ "node": ">=0.10.0" } }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -23981,6 +23795,15 @@ "node": ">=4" } }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/postinstall-postinstall": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz", @@ -24006,15 +23829,18 @@ } }, "node_modules/prettier": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", - "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, "bin": { "prettier": "bin-prettier.js" }, "engines": { "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/prettier-linter-helpers": { @@ -24030,59 +23856,29 @@ } }, "node_modules/prettier-plugin-solidity": { - "version": "1.0.0-beta.19", - "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-beta.19.tgz", - "integrity": "sha512-xxRQ5ZiiZyUoMFLE9h7HnUDXI/daf1tnmL1msEdcKmyh7ZGQ4YklkYLC71bfBpYU2WruTb5/SFLUaEb3RApg5g==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.1.3.tgz", + "integrity": "sha512-fQ9yucPi2sBbA2U2Xjh6m4isUTJ7S7QLc/XDDsktqqxYfTwdYKJ0EnnywXHwCGAaYbQNK+HIYPL1OemxuMsgeg==", "dev": true, "dependencies": { - "@solidity-parser/parser": "^0.14.0", - "emoji-regex": "^10.0.0", - "escape-string-regexp": "^4.0.0", - "semver": "^7.3.5", - "solidity-comments-extractor": "^0.0.7", - "string-width": "^4.2.3" + "@solidity-parser/parser": "^0.16.0", + "semver": "^7.3.8", + "solidity-comments-extractor": "^0.0.7" }, "engines": { "node": ">=12" }, "peerDependencies": { - "prettier": "^2.3.0" + "prettier": ">=2.3.0 || >=3.0.0-alpha.0" } }, - "node_modules/prettier-plugin-solidity/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/prettier-plugin-solidity/node_modules/emoji-regex": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.0.0.tgz", - "integrity": "sha512-KmJa8l6uHi1HrBI34udwlzZY1jOEuID/ft4d8BSSEdRyap7PwBEt910453PJa5MuGvxkLqlt4Uvhu7tttFHViw==", - "dev": true - }, - "node_modules/prettier-plugin-solidity/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/prettier-plugin-solidity/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/prettier-plugin-solidity/node_modules/@solidity-parser/parser": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.0.tgz", + "integrity": "sha512-ESipEcHyRHg4Np4SqBCfcXwyxxna1DgFVz69bgpLV8vzl/NP1DtcKsJ4dJZXWQhY/Z4J2LeKBiOkOVZn9ct33Q==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "antlr4ts": "^0.5.0-alpha.4" } }, "node_modules/prettier-plugin-solidity/node_modules/lru-cache": { @@ -24098,9 +23894,9 @@ } }, "node_modules/prettier-plugin-solidity/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -24112,38 +23908,6 @@ "node": ">=10" } }, - "node_modules/prettier-plugin-solidity/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/prettier-plugin-solidity/node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/prettier-plugin-solidity/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/prettier-plugin-solidity/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -24777,19 +24541,6 @@ "lowercase-keys": "^1.0.0" } }, - "node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -24858,15 +24609,6 @@ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -24917,18 +24659,6 @@ "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==" }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -25457,454 +25187,153 @@ } }, "node_modules/solhint": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/solhint/-/solhint-3.3.6.tgz", - "integrity": "sha512-HWUxTAv2h7hx3s3hAab3ifnlwb02ZWhwFU/wSudUHqteMS3ll9c+m1FlGn9V8ztE2rf3Z82fQZA005Wv7KpcFA==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/solhint/-/solhint-3.4.1.tgz", + "integrity": "sha512-pzZn2RlZhws1XwvLPVSsxfHrwsteFf5eySOhpAytzXwKQYbTCJV6z8EevYDiSVKMpWrvbKpEtJ055CuEmzp4Xg==", "dev": true, "dependencies": { - "@solidity-parser/parser": "^0.13.2", - "ajv": "^6.6.1", - "antlr4": "4.7.1", - "ast-parents": "0.0.1", - "chalk": "^2.4.2", - "commander": "2.18.0", - "cosmiconfig": "^5.0.7", - "eslint": "^5.6.0", - "fast-diff": "^1.1.2", - "glob": "^7.1.3", - "ignore": "^4.0.6", - "js-yaml": "^3.12.0", - "lodash": "^4.17.11", - "semver": "^6.3.0" + "@solidity-parser/parser": "^0.16.0", + "ajv": "^6.12.6", + "antlr4": "^4.11.0", + "ast-parents": "^0.0.1", + "chalk": "^4.1.2", + "commander": "^10.0.0", + "cosmiconfig": "^8.0.0", + "fast-diff": "^1.2.0", + "glob": "^8.0.3", + "ignore": "^5.2.4", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "pluralize": "^8.0.0", + "semver": "^6.3.0", + "strip-ansi": "^6.0.1", + "table": "^6.8.1", + "text-table": "^0.2.0" }, "bin": { "solhint": "solhint.js" }, "optionalDependencies": { - "prettier": "^1.14.3" - } - }, - "node_modules/solhint/node_modules/@solidity-parser/parser": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.13.2.tgz", - "integrity": "sha512-RwHnpRnfrnD2MSPveYoPh8nhofEvX7fgjHk1Oq+NNvCcLx4r1js91CO9o+F/F3fBzOCyvm8kKRTriFICX/odWw==", - "dev": true, - "dependencies": { - "antlr4ts": "^0.5.0-alpha.4" - } - }, - "node_modules/solhint/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" + "prettier": "^2.8.3" } }, - "node_modules/solhint/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/solhint/node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/solhint/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/solhint/node_modules/commander": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz", - "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==", - "dev": true - }, - "node_modules/solhint/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/solhint/node_modules/cross-spawn/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/solhint/node_modules/eslint": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", - "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", - "dev": true, - "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" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^6.14.0 || ^8.10.0 || >=9.10.0" - } - }, - "node_modules/solhint/node_modules/eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/solhint/node_modules/eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "node_modules/solhint-plugin-prettier": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/solhint-plugin-prettier/-/solhint-plugin-prettier-0.0.5.tgz", + "integrity": "sha512-7jmWcnVshIrO2FFinIvDQmhQpfpS2rRRn3RejiYgnjIE68xO2bvrYvjqVNfrio4xH9ghOqn83tKuTzLjEbmGIA==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "prettier-linter-helpers": "^1.0.0" }, - "engines": { - "node": ">=6" - } - }, - "node_modules/solhint/node_modules/eslint-visitor-keys": { - "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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/solhint/node_modules/eslint/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" + "peerDependencies": { + "prettier": "^1.15.0 || ^2.0.0", + "prettier-plugin-solidity": "^1.0.0-alpha.14" } }, - "node_modules/solhint/node_modules/espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "node_modules/solhint/node_modules/@solidity-parser/parser": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.0.tgz", + "integrity": "sha512-ESipEcHyRHg4Np4SqBCfcXwyxxna1DgFVz69bgpLV8vzl/NP1DtcKsJ4dJZXWQhY/Z4J2LeKBiOkOVZn9ct33Q==", "dev": true, "dependencies": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/solhint/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" + "antlr4ts": "^0.5.0-alpha.4" } }, - "node_modules/solhint/node_modules/file-entry-cache": { + "node_modules/solhint/node_modules/ansi-regex": { "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==", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "dependencies": { - "flat-cache": "^2.0.1" - }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/solhint/node_modules/flat-cache": { + "node_modules/solhint/node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "dependencies": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/solhint/node_modules/flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/solhint/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/solhint/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/solhint/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/solhint/node_modules/path-key": { + "node_modules/solhint/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/solhint/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/solhint/node_modules/prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", - "dev": true, - "optional": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/solhint/node_modules/regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true, - "engines": { - "node": ">=6.5.0" - } - }, - "node_modules/solhint/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/solhint/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "balanced-match": "^1.0.0" } }, - "node_modules/solhint/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "node_modules/solhint/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=14" } }, - "node_modules/solhint/node_modules/slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "node_modules/solhint/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/solhint/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "node": ">=12" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/solhint/node_modules/string-width/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/solhint/node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, "engines": { - "node": ">=6" + "node": ">= 4" } }, - "node_modules/solhint/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/solhint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=4" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/solhint/node_modules/table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "node_modules/solhint/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" } }, - "node_modules/solhint/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "node_modules/solhint/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, "node_modules/solidity-ast": { @@ -26507,9 +25936,9 @@ } }, "node_modules/table": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.5.tgz", - "integrity": "sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw==", + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", "dev": true, "dependencies": { "ajv": "^8.0.1", @@ -28673,18 +28102,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "node_modules/write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "dependencies": { - "mkdirp": "^0.5.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/ws": { "version": "7.5.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", @@ -30246,9 +29663,9 @@ "optional": true }, "@nomiclabs/hardhat-ethers": { - "version": "npm:hardhat-deploy-ethers@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==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz", + "integrity": "sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==", "dev": true, "requires": {} }, @@ -30267,6 +29684,15 @@ "semver": "^6.3.0" } }, + "@nomiclabs/hardhat-solhint": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-solhint/-/hardhat-solhint-3.0.1.tgz", + "integrity": "sha512-GqDoStxL1aA9hZul9HRdk+3eEZ/XLBwvIlz3/EJUusUsoadNYEnio9aYOsBeNeZWo+B/Fd3EgMXgbf9wWQLyRA==", + "dev": true, + "requires": { + "solhint": "^3.4.0" + } + }, "@nomiclabs/hardhat-waffle": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.1.tgz", @@ -31099,13 +30525,6 @@ "tslog": "^4.3.1" }, "dependencies": { - "@nomiclabs/hardhat-ethers": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.2.tgz", - "integrity": "sha512-NLDlDFL2us07C0jB/9wzvR0kuLivChJWCXTKcj3yqjZqMoYp7g7wwS157F70VHx/+9gHIBGzak5pKDwG8gEefA==", - "dev": true, - "requires": {} - }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -32671,9 +32090,9 @@ } }, "antlr4": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.7.1.tgz", - "integrity": "sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.12.0.tgz", + "integrity": "sha512-23iB5IzXJZRZeK9TigzUyrNc9pSmNqAerJRBcNq1ETrmttMWRgaYZzC561IgEO3ygKsDJTYDTozABXa4b/fTQQ==", "dev": true }, "antlr4ts": { @@ -33510,32 +32929,6 @@ "get-intrinsic": "^1.0.2" } }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - } - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -33659,12 +33052,6 @@ "upper-case-first": "^1.1.0" } }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, "charenc": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", @@ -33782,15 +33169,6 @@ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, "cli-table3": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", @@ -33835,12 +33213,6 @@ } } }, - "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true - }, "cliui": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", @@ -34161,42 +33533,43 @@ } }, "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", + "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", "dev": true, "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" }, "dependencies": { - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "argparse": "^2.0.1" } }, "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "requires": { + "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true } } }, @@ -35079,13 +34452,6 @@ } } }, - "eslint-config-prettier": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", - "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", - "dev": true, - "requires": {} - }, "eslint-config-standard": { "version": "16.0.3", "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz", @@ -35945,17 +35311,6 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, "extract-files": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", @@ -36028,15 +35383,6 @@ "reusify": "^1.0.4" } }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -45800,6 +45146,12 @@ "debug": "4" } }, + "husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "dev": true + }, "hyperlinker": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz", @@ -45900,70 +45252,6 @@ } } }, - "inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", - "dev": true, - "requires": { - "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" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "insert-module-globals": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", @@ -46097,12 +45385,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, "is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -46341,10 +45623,10 @@ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" }, - "json-parse-better-errors": { - "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==", + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, "json-schema": { @@ -46567,6 +45849,12 @@ "type-check": "~0.4.0" } }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -46818,12 +46106,6 @@ "mime-db": "1.51.0" } }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, "mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", @@ -47174,12 +46456,6 @@ "imul": "^1.0.0" } }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, "nan": { "version": "2.15.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", @@ -47475,15 +46751,6 @@ "wrappy": "1" } }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, "open": { "version": "7.4.2", "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", @@ -47777,12 +47044,6 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -47865,6 +47126,12 @@ "find-up": "^2.1.0" } }, + "pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true + }, "postinstall-postinstall": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz", @@ -47883,9 +47150,9 @@ "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" }, "prettier": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", - "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true }, "prettier-linter-helpers": { @@ -47898,42 +47165,24 @@ } }, "prettier-plugin-solidity": { - "version": "1.0.0-beta.19", - "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-beta.19.tgz", - "integrity": "sha512-xxRQ5ZiiZyUoMFLE9h7HnUDXI/daf1tnmL1msEdcKmyh7ZGQ4YklkYLC71bfBpYU2WruTb5/SFLUaEb3RApg5g==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.1.3.tgz", + "integrity": "sha512-fQ9yucPi2sBbA2U2Xjh6m4isUTJ7S7QLc/XDDsktqqxYfTwdYKJ0EnnywXHwCGAaYbQNK+HIYPL1OemxuMsgeg==", "dev": true, "requires": { - "@solidity-parser/parser": "^0.14.0", - "emoji-regex": "^10.0.0", - "escape-string-regexp": "^4.0.0", - "semver": "^7.3.5", - "solidity-comments-extractor": "^0.0.7", - "string-width": "^4.2.3" + "@solidity-parser/parser": "^0.16.0", + "semver": "^7.3.8", + "solidity-comments-extractor": "^0.0.7" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "emoji-regex": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.0.0.tgz", - "integrity": "sha512-KmJa8l6uHi1HrBI34udwlzZY1jOEuID/ft4d8BSSEdRyap7PwBEt910453PJa5MuGvxkLqlt4Uvhu7tttFHViw==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "@solidity-parser/parser": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.0.tgz", + "integrity": "sha512-ESipEcHyRHg4Np4SqBCfcXwyxxna1DgFVz69bgpLV8vzl/NP1DtcKsJ4dJZXWQhY/Z4J2LeKBiOkOVZn9ct33Q==", + "dev": true, + "requires": { + "antlr4ts": "^0.5.0-alpha.4" + } }, "lru-cache": { "version": "6.0.0", @@ -47945,42 +47194,14 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", "dev": true, "requires": { "lru-cache": "^6.0.0" } }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - } - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -48466,16 +47687,6 @@ "lowercase-keys": "^1.0.0" } }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, "retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -48530,12 +47741,6 @@ } } }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -48558,15 +47763,6 @@ "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==" }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -48979,357 +48175,124 @@ } }, "solhint": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/solhint/-/solhint-3.3.6.tgz", - "integrity": "sha512-HWUxTAv2h7hx3s3hAab3ifnlwb02ZWhwFU/wSudUHqteMS3ll9c+m1FlGn9V8ztE2rf3Z82fQZA005Wv7KpcFA==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/solhint/-/solhint-3.4.1.tgz", + "integrity": "sha512-pzZn2RlZhws1XwvLPVSsxfHrwsteFf5eySOhpAytzXwKQYbTCJV6z8EevYDiSVKMpWrvbKpEtJ055CuEmzp4Xg==", "dev": true, "requires": { - "@solidity-parser/parser": "^0.13.2", - "ajv": "^6.6.1", - "antlr4": "4.7.1", - "ast-parents": "0.0.1", - "chalk": "^2.4.2", - "commander": "2.18.0", - "cosmiconfig": "^5.0.7", - "eslint": "^5.6.0", - "fast-diff": "^1.1.2", - "glob": "^7.1.3", - "ignore": "^4.0.6", - "js-yaml": "^3.12.0", - "lodash": "^4.17.11", - "prettier": "^1.14.3", - "semver": "^6.3.0" + "@solidity-parser/parser": "^0.16.0", + "ajv": "^6.12.6", + "antlr4": "^4.11.0", + "ast-parents": "^0.0.1", + "chalk": "^4.1.2", + "commander": "^10.0.0", + "cosmiconfig": "^8.0.0", + "fast-diff": "^1.2.0", + "glob": "^8.0.3", + "ignore": "^5.2.4", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "pluralize": "^8.0.0", + "prettier": "^2.8.3", + "semver": "^6.3.0", + "strip-ansi": "^6.0.1", + "table": "^6.8.1", + "text-table": "^0.2.0" }, "dependencies": { "@solidity-parser/parser": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.13.2.tgz", - "integrity": "sha512-RwHnpRnfrnD2MSPveYoPh8nhofEvX7fgjHk1Oq+NNvCcLx4r1js91CO9o+F/F3fBzOCyvm8kKRTriFICX/odWw==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.0.tgz", + "integrity": "sha512-ESipEcHyRHg4Np4SqBCfcXwyxxna1DgFVz69bgpLV8vzl/NP1DtcKsJ4dJZXWQhY/Z4J2LeKBiOkOVZn9ct33Q==", "dev": true, "requires": { "antlr4ts": "^0.5.0-alpha.4" } }, - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true - }, "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "commander": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz", - "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==", - "dev": true - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "eslint": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", - "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", - "dev": true, - "requires": { - "@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" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "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==", - "dev": true - }, - "espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", - "dev": true, - "requires": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "file-entry-cache": { "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==", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - } - }, - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "path-key": { + "argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", - "dev": true, - "optional": true - }, - "regexpp": { + "brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "balanced-match": "^1.0.0" } }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" } }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "dependencies": { - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "argparse": "^2.0.1" } }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "brace-expansion": "^2.0.1" } }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "prelude-ls": "~1.1.2" + "ansi-regex": "^5.0.1" } } } }, + "solhint-plugin-prettier": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/solhint-plugin-prettier/-/solhint-plugin-prettier-0.0.5.tgz", + "integrity": "sha512-7jmWcnVshIrO2FFinIvDQmhQpfpS2rRRn3RejiYgnjIE68xO2bvrYvjqVNfrio4xH9ghOqn83tKuTzLjEbmGIA==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, "solidity-ast": { "version": "0.4.28", "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.28.tgz", @@ -49839,9 +48802,9 @@ } }, "table": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.5.tgz", - "integrity": "sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw==", + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", "dev": true, "requires": { "ajv": "^8.0.1", @@ -51613,15 +50576,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, "ws": { "version": "7.5.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", diff --git a/package.json b/package.json index 41c0cb2..aa47375 100644 --- a/package.json +++ b/package.json @@ -5,14 +5,25 @@ "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "debug-tests": "node --inspect ./node_modules/.bin/hardhat test" + "debug-tests": "node --inspect ./node_modules/.bin/hardhat test", + "solhint": "solhint -f table contracts/**/*.sol", + "prettier:solidity-fix": "prettier --write contracts/**/*.sol", + "prettier:ts-fix": "prettier --write test/**/*.ts", + "prettier:solidity": "prettier --check contracts/**/*.sol", + "prettier:ts": "prettier --check test/**/*.ts" }, "keywords": [], "author": "Ricochet team", "license": "ISC", + "husky": { + "hooks": { + "pre-push": "npm run prettier:solidity-fix && npm run prettier:ts-fix" + } + }, "devDependencies": { - "@nomiclabs/hardhat-ethers": "npm:hardhat-deploy-ethers@^0.3.0-beta.13", + "@nomiclabs/hardhat-ethers": "^2.2.3", "@nomiclabs/hardhat-etherscan": "^2.1.8", + "@nomiclabs/hardhat-solhint": "^3.0.1", "@nomiclabs/hardhat-waffle": "^2.0.1", "@nomiclabs/hardhat-web3": "^2.0.0", "@openzeppelin/contracts": "^4.0.0", @@ -35,7 +46,6 @@ "dotenv": "^10.0.0", "eslint": "^7.32.0", "eslint-config-airbnb": "^18.2.1", - "eslint-config-prettier": "^8.3.0", "eslint-config-standard": "^16.0.3", "eslint-plugin-import": "^2.25.3", "eslint-plugin-node": "^11.1.0", @@ -47,9 +57,11 @@ "hardhat": "^2.8.0", "hardhat-deploy": "^0.11.23", "hardhat-gas-reporter": "^1.0.6", - "prettier": "^2.5.1", - "prettier-plugin-solidity": "^1.0.0-beta.13", + "husky": "^8.0.3", + "prettier": "^2.8.8", + "prettier-plugin-solidity": "^1.1.3", "solhint": "^3.3.6", + "solhint-plugin-prettier": "^0.0.5", "solidity-coverage": "^0.7.22", "ts-node": "^10.5.0", "typechain": "^7.0.0", @@ -71,4 +83,4 @@ "hardhat-tracer": "^1.1.0-rc.6", "ricochet-exchange-sfcontracts-used": "^1.0.2" } -} +} \ No newline at end of file diff --git a/scripts/setTenderlyBalance.ts b/scripts/setTenderlyBalance.ts index bfa4d81..a491b57 100644 --- a/scripts/setTenderlyBalance.ts +++ b/scripts/setTenderlyBalance.ts @@ -1,26 +1,21 @@ async function main() { + const WALLETS = ['0x3226C9EaC0379F04Ba2b1E1e1fcD52ac26309aeA'] + const result = await ethers.provider.send('tenderly_setBalance', [ + WALLETS, + // amount in wei will be set for all wallets + ethers.utils.hexValue(ethers.utils.parseUnits('10000', 'ether').toHexString()), + ]) - const WALLETS = [ - "0x3226C9EaC0379F04Ba2b1E1e1fcD52ac26309aeA", - ]; - - const result = await ethers.provider.send("tenderly_setBalance", [ - WALLETS, - //amount in wei will be set for all wallets - ethers.utils.hexValue(ethers.utils.parseUnits("10000", "ether").toHexString()), - ]); - - // Check the balance of the first wallet - const balance = await ethers.provider.getBalance(WALLETS[0]); - console.log("Balance:", ethers.utils.formatEther(balance)); - console.log("Result:", result); - + // Check the balance of the first wallet + const balance = await ethers.provider.getBalance(WALLETS[0]) + console.log('Balance:', ethers.utils.formatEther(balance)) + console.log('Result:', result) } main() -.then(() => process.exit(0)) -.catch(error => { - console.error(error); - process.exit(1); -}); + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) diff --git a/test/REXLaunchpad.test.ts b/test/REXLaunchpad.test.ts index 1d19db8..8df7aed 100644 --- a/test/REXLaunchpad.test.ts +++ b/test/REXLaunchpad.test.ts @@ -1,555 +1,601 @@ -import { waffle, ethers } from "hardhat"; -import { setup, IUser, ISuperToken } from "../misc/setup"; -import { common } from "../misc/common"; -import { expect } from "chai"; -import { HttpService } from "./../misc/HttpService"; -import { Framework, SuperToken } from "@superfluid-finance/sdk-core"; -import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; -import { REXTwoWayMarket, REXReferral, ERC20, REXReferral__factory, IConstantFlowAgreementV1, RicochetLaunchpad } from "../typechain"; -import { increaseTime, impersonateAndSetBalance } from "./../misc/helpers"; -import { Constants } from "../misc/Constants"; -import { AbiCoder, parseUnits } from "ethers/lib/utils"; - -const { provider, loadFixture } = waffle; -const TEST_TRAVEL_TIME = 3600 * 2; // 2 hours +import { waffle, ethers } from 'hardhat' +import { setup, IUser, ISuperToken } from '../misc/setup' +import { common } from '../misc/common' +import { expect } from 'chai' +import { HttpService } from './../misc/HttpService' +import { Framework, SuperToken } from '@superfluid-finance/sdk-core' +import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' +import { + REXTwoWayMarket, + REXReferral, + ERC20, + REXReferral__factory, + IConstantFlowAgreementV1, + RicochetLaunchpad, +} from '../typechain' +import { increaseTime, impersonateAndSetBalance } from './../misc/helpers' +import { Constants } from '../misc/Constants' +import { AbiCoder, parseUnits } from 'ethers/lib/utils' + +const { provider, loadFixture } = waffle +const TEST_TRAVEL_TIME = 3600 * 2 // 2 hours // Index 1 is for Ether and 0 for USDCx -const USDCX_SUBSCRIPTION_INDEX = 0; -const ETHX_SUBSCRIPTION_INDEX = 1; -const RIC_SUBSCRIPTION_INDEX = 2; - +const USDCX_SUBSCRIPTION_INDEX = 0 +const ETHX_SUBSCRIPTION_INDEX = 1 +const RIC_SUBSCRIPTION_INDEX = 2 export interface superTokenAndItsIDAIndex { - token: SuperToken; - IDAIndex: number; + token: SuperToken + IDAIndex: number } describe('REXLaunchpad', () => { - const errorHandler = (err: any) => { - if (err) throw err; - }; - - const inflowRateUsdc = "1000000000000"; - const inflowRateUsdcDeposit = "4000000000000000" - const inflowRateUsdc10x = "10000000000000000"; - const inflowRateEth = "10000000000000"; - const subsidyRate = "10000000000000"; - - let rexReferral: REXReferral__factory; - let RicochetLaunchpad: any; - let referral: any; - let snapshot: any; - - let adminSigner: SignerWithAddress; - let aliceSigner: SignerWithAddress; - let bobSigner: SignerWithAddress; - let carlSigner: SignerWithAddress; - let usdcxWhaleSigner: SignerWithAddress; - let ethxWhaleSigner: SignerWithAddress; - let maticxWhaleSigner: SignerWithAddress; - let karenSigner: SignerWithAddress; - - let oraclePrice: number; - let ricOraclePrice: number; - let maticOraclePrice: number; - - // interface SuperTokensBalances { - // outputx: string[]; - // ethx: string[]; - // wbtcx: string[]; - // daix: string[]; - // usdcx: string[]; - // ric: string[]; - // }; - - let appBalances = { ethx: [], usdcx: [], ric: [], maticx: [] }; - let ownerBalances = { ethx: [], usdcx: [], ric: [], maticx: [] }; - let aliceBalances = { ethx: [], usdcx: [], ric: [], maticx: [] }; - let bobBalances = { ethx: [], usdcx: [], ric: [], maticx: [] }; - let carlBalances = { ethx: [], usdcx: [], ric: [], maticx: [] }; - let karenBalances = { ethx: [], usdcx: [], ric: [], maticx: [] }; - - let sf: Framework, - superT: ISuperToken, - u: { [key: string]: IUser }, - twoWayMarket: REXTwoWayMarket, - launchpad: RicochetLaunchpad, - tokenss: { [key: string]: any }, - sfRegistrationKey: any, - accountss: SignerWithAddress[], - constant: { [key: string]: string }, - ERC20: any; - - // ************** All the supertokens used in Ricochet are declared ********************** - let ricochetMATICx: SuperToken; - let ricochetUSDCx: SuperToken; - let ricochetETHx: SuperToken; - let ricochetWBTCx: SuperToken; - let ricochetRIC: SuperToken; - - let usdcxAndItsIDAIndex: superTokenAndItsIDAIndex; - let ethxAndItsIDAIndex: superTokenAndItsIDAIndex; - let ricAndItsIDAIndex: superTokenAndItsIDAIndex; - let wbtcxAndItsIDAIndex: superTokenAndItsIDAIndex; - let maticxAndItsIDAIndex: superTokenAndItsIDAIndex; - - // *************************************************************************************** - - async function takeMeasurements(balances: SuperTokensBalances, signer: SignerWithAddress): Promise { - appBalances.ethx.push((await superT.ethx.balanceOf({ account: launchpad.address, providerOrSigner: provider })).toString()); - ownerBalances.ethx.push((await superT.ethx.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString()); - aliceBalances.ethx.push((await superT.ethx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - carlBalances.ethx.push((await superT.ethx.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString()); - // karenBalances.ethx.push((await superT.ethx.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); - bobBalances.ethx.push((await superT.ethx.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString()); - - appBalances.usdcx.push((await superT.usdcx.balanceOf({ account: launchpad.address, providerOrSigner: provider })).toString()); - ownerBalances.usdcx.push((await superT.usdcx.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString()); - aliceBalances.usdcx.push((await superT.usdcx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - carlBalances.usdcx.push((await superT.usdcx.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString()); - // karenBalances.usdcx.push((await superT.usdcx.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); - bobBalances.usdcx.push((await superT.usdcx.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString()); - - appBalances.ric.push((await superT.ric.balanceOf({ account: launchpad.address, providerOrSigner: provider })).toString()); - ownerBalances.ric.push((await superT.ric.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString()); - aliceBalances.ric.push((await superT.ric.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - carlBalances.ric.push((await superT.ric.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString()); - // karenBalances.ric.push((await superT.ric.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); - bobBalances.ric.push((await superT.ric.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString()); - - appBalances.maticx.push((await superT.maticx.balanceOf({ account: launchpad.address, providerOrSigner: provider })).toString()); - ownerBalances.maticx.push((await superT.maticx.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString()); - aliceBalances.maticx.push((await superT.maticx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - carlBalances.maticx.push((await superT.maticx.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString()); - // karenBalances.ric.push((await superT.ric.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); - bobBalances.maticx.push((await superT.maticx.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString()); + const errorHandler = (err: any) => { + if (err) throw err + } + + const inflowRateUsdc = '1000000000000' + const inflowRateUsdcDeposit = '4000000000000000' + const inflowRateUsdc10x = '10000000000000000' + const inflowRateEth = '10000000000000' + const subsidyRate = '10000000000000' + + let rexReferral: REXReferral__factory + let RicochetLaunchpad: any + let referral: any + let snapshot: any + + let adminSigner: SignerWithAddress + let aliceSigner: SignerWithAddress + let bobSigner: SignerWithAddress + let carlSigner: SignerWithAddress + let usdcxWhaleSigner: SignerWithAddress + let ethxWhaleSigner: SignerWithAddress + let maticxWhaleSigner: SignerWithAddress + let karenSigner: SignerWithAddress + + let oraclePrice: number + let ricOraclePrice: number + let maticOraclePrice: number + + // interface SuperTokensBalances { + // outputx: string[]; + // ethx: string[]; + // wbtcx: string[]; + // daix: string[]; + // usdcx: string[]; + // ric: string[]; + // }; + + let appBalances = { ethx: [], usdcx: [], ric: [], maticx: [] } + let ownerBalances = { ethx: [], usdcx: [], ric: [], maticx: [] } + let aliceBalances = { ethx: [], usdcx: [], ric: [], maticx: [] } + let bobBalances = { ethx: [], usdcx: [], ric: [], maticx: [] } + let carlBalances = { ethx: [], usdcx: [], ric: [], maticx: [] } + let karenBalances = { ethx: [], usdcx: [], ric: [], maticx: [] } + + let sf: Framework, + superT: ISuperToken, + u: { [key: string]: IUser }, + twoWayMarket: REXTwoWayMarket, + launchpad: RicochetLaunchpad, + tokenss: { [key: string]: any }, + sfRegistrationKey: any, + accountss: SignerWithAddress[], + constant: { [key: string]: string }, + ERC20: any + + // ************** All the supertokens used in Ricochet are declared ********************** + let ricochetMATICx: SuperToken + let ricochetUSDCx: SuperToken + let ricochetETHx: SuperToken + let ricochetWBTCx: SuperToken + let ricochetRIC: SuperToken + + let usdcxAndItsIDAIndex: superTokenAndItsIDAIndex + let ethxAndItsIDAIndex: superTokenAndItsIDAIndex + let ricAndItsIDAIndex: superTokenAndItsIDAIndex + let wbtcxAndItsIDAIndex: superTokenAndItsIDAIndex + let maticxAndItsIDAIndex: superTokenAndItsIDAIndex + + // *************************************************************************************** + + async function takeMeasurements(balances: SuperTokensBalances, signer: SignerWithAddress): Promise { + appBalances.ethx.push( + (await superT.ethx.balanceOf({ account: launchpad.address, providerOrSigner: provider })).toString() + ) + ownerBalances.ethx.push( + (await superT.ethx.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString() + ) + aliceBalances.ethx.push( + (await superT.ethx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + carlBalances.ethx.push( + (await superT.ethx.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString() + ) + // karenBalances.ethx.push((await superT.ethx.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); + bobBalances.ethx.push( + (await superT.ethx.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString() + ) + + appBalances.usdcx.push( + (await superT.usdcx.balanceOf({ account: launchpad.address, providerOrSigner: provider })).toString() + ) + ownerBalances.usdcx.push( + (await superT.usdcx.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString() + ) + aliceBalances.usdcx.push( + (await superT.usdcx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + carlBalances.usdcx.push( + (await superT.usdcx.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString() + ) + // karenBalances.usdcx.push((await superT.usdcx.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); + bobBalances.usdcx.push( + (await superT.usdcx.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString() + ) + + appBalances.ric.push( + (await superT.ric.balanceOf({ account: launchpad.address, providerOrSigner: provider })).toString() + ) + ownerBalances.ric.push( + (await superT.ric.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString() + ) + aliceBalances.ric.push( + (await superT.ric.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + carlBalances.ric.push( + (await superT.ric.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString() + ) + // karenBalances.ric.push((await superT.ric.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); + bobBalances.ric.push( + (await superT.ric.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString() + ) + + appBalances.maticx.push( + (await superT.maticx.balanceOf({ account: launchpad.address, providerOrSigner: provider })).toString() + ) + ownerBalances.maticx.push( + (await superT.maticx.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString() + ) + aliceBalances.maticx.push( + (await superT.maticx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + carlBalances.maticx.push( + (await superT.maticx.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString() + ) + // karenBalances.ric.push((await superT.ric.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); + bobBalances.maticx.push( + (await superT.maticx.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString() + ) + } + + async function resetMeasurements(): Promise { + appBalances = { ethx: [], usdcx: [], ric: [], maticx: [] } + ownerBalances = { ethx: [], usdcx: [], ric: [], maticx: [] } + aliceBalances = { ethx: [], usdcx: [], ric: [], maticx: [] } + bobBalances = { ethx: [], usdcx: [], ric: [], maticx: [] } + carlBalances = { ethx: [], usdcx: [], ric: [], maticx: [] } + karenBalances = { ethx: [], usdcx: [], ric: [], maticx: [] } + } + + async function approveSubscriptions(tokensAndIDAIndexes: superTokenAndItsIDAIndex[], signers: SignerWithAddress[]) { + console.log(' ======== Inside approveSubscriptions ===========') + let tokenIndex: number + for (let i = 0; i < signers.length; i++) { + for (let j = 0; j < tokensAndIDAIndexes.length; j++) { + tokenIndex = tokensAndIDAIndexes[j].IDAIndex + await sf.idaV1 + .approveSubscription({ + indexId: tokenIndex.toString(), + superToken: tokensAndIDAIndexes[j].token.address, + publisher: launchpad.address, + userData: '0x', + }) + .exec(signers[i]) + console.log('====== ', i, ' subscription to token ', j, ' approved =======') + } } - - async function resetMeasurements(): Promise { - appBalances = { ethx: [], usdcx: [], ric: [], maticx: [] }; - ownerBalances = { ethx: [], usdcx: [], ric: [], maticx: [] }; - aliceBalances = { ethx: [], usdcx: [], ric: [], maticx: [] }; - bobBalances = { ethx: [], usdcx: [], ric: [], maticx: [] }; - carlBalances = { ethx: [], usdcx: [], ric: [], maticx: [] }; - karenBalances = { ethx: [], usdcx: [], ric: [], maticx: [] }; + } + + async function checkBalance(user: SignerWithAddress, name: string) { + console.log(' checkBalance START ======== Balance of ', name, ' with address: ', user.address, ' ============= ') + let balanceEthx = await ricochetETHx.balanceOf({ + account: user.address, + providerOrSigner: provider, + }) + let balanceUsdcx = await ricochetUSDCx.balanceOf({ + account: user.address, + providerOrSigner: provider, + }) + let balanceRic = await ricochetRIC.balanceOf({ + account: user.address, + providerOrSigner: provider, + }) + let balanceMatic = await ricochetMATICx.balanceOf({ + account: user.address, + providerOrSigner: provider, + }) + console.log('Balance in ETHX: ', balanceEthx) + console.log('Balance in USDCX: ', balanceUsdcx) + console.log('Balance in RIC: ', balanceRic) + console.log('Balance in MATICx: ', balanceMatic) + console.log(' checkBalance END ====================================================== ') + } + + async function delta(account: SignerWithAddress, balances: any) { + const len = balances.ethx.length + return { + ethx: balances.ethx[len - 1] - balances.ethx[len - 2], + usdcx: balances.usdcx[len - 1] - balances.usdcx[len - 2], + ric: balances.ric[len - 1] - balances.ric[len - 2], + maticx: balances.maticx[len - 1] - balances.maticx[len - 2], } - - async function approveSubscriptions(tokensAndIDAIndexes: superTokenAndItsIDAIndex[], signers: SignerWithAddress[]) { - console.log(" ======== Inside approveSubscriptions ==========="); - let tokenIndex: number; - for (let i = 0; i < signers.length; i++) { - for (let j = 0; j < tokensAndIDAIndexes.length; j++) { - tokenIndex = tokensAndIDAIndexes[j].IDAIndex; - await sf.idaV1 - .approveSubscription({ - indexId: tokenIndex.toString(), - superToken: tokensAndIDAIndexes[j].token.address, - publisher: launchpad.address, - userData: "0x", - }) - .exec(signers[i]) - console.log("====== ", i, " subscription to token ", j, " approved ======="); - } - } + } + + before(async () => { + const { superfluid, users, accounts, tokens, superTokens, contracts, constants } = await setup() + console.log('============ Right after initSuperfluid() ==================') + + const { createSFRegistrationKey } = await common() + + u = users + sf = superfluid + superT = superTokens + tokenss = tokens + accountss = accounts + sfRegistrationKey = createSFRegistrationKey + constant = constants + + // This order is established in misc/setup.ts + adminSigner = accountss[0] + aliceSigner = accountss[1] + bobSigner = accountss[2] + carlSigner = accountss[3] + karenSigner = accountss[4] + usdcxWhaleSigner = accountss[5] + ethxWhaleSigner = accountss[6] + maticxWhaleSigner = accountss[7] + + ricochetMATICx = superT.maticx + ricochetUSDCx = superT.usdcx + ricochetETHx = superT.ethx + ricochetWBTCx = superT.wbtcx + ricochetRIC = superT.ric + + usdcxAndItsIDAIndex = { + token: ricochetUSDCx, + IDAIndex: USDCX_SUBSCRIPTION_INDEX, } - - async function checkBalance(user: SignerWithAddress, name: string) { - console.log(" checkBalance START ======== Balance of ", name, " with address: ", user.address, " ============= "); - let balanceEthx = await ricochetETHx.balanceOf({ - account: user.address, providerOrSigner: provider - }); - let balanceUsdcx = await ricochetUSDCx.balanceOf({ - account: user.address, providerOrSigner: provider - }); - let balanceRic = await ricochetRIC.balanceOf({ - account: user.address, providerOrSigner: provider - }); - let balanceMatic = await ricochetMATICx.balanceOf({ - account: user.address, providerOrSigner: provider - }); - console.log("Balance in ETHX: ", balanceEthx); - console.log("Balance in USDCX: ", balanceUsdcx); - console.log("Balance in RIC: ", balanceRic); - console.log("Balance in MATICx: ", balanceMatic); - console.log(" checkBalance END ====================================================== "); + ethxAndItsIDAIndex = { + token: ricochetETHx, + IDAIndex: ETHX_SUBSCRIPTION_INDEX, } - - async function delta(account: SignerWithAddress, balances: any) { - const len = balances.ethx.length; - return { - ethx: balances.ethx[len - 1] - balances.ethx[len - 2], - usdcx: balances.usdcx[len - 1] - balances.usdcx[len - 2], - ric: balances.ric[len - 1] - balances.ric[len - 2], - maticx: balances.maticx[len - 1] - balances.maticx[len - 2] - } + ricAndItsIDAIndex = { + token: ricochetRIC, + IDAIndex: RIC_SUBSCRIPTION_INDEX, } - before(async () => { - const { - superfluid, - users, - accounts, - tokens, - superTokens, - contracts, - constants, - } = await setup(); - console.log("============ Right after initSuperfluid() =================="); - - const { createSFRegistrationKey } = await common(); - - u = users; - sf = superfluid; - superT = superTokens; - tokenss = tokens; - accountss = accounts; - sfRegistrationKey = createSFRegistrationKey; - constant = constants; - - // This order is established in misc/setup.ts - adminSigner = accountss[0]; - aliceSigner = accountss[1]; - bobSigner = accountss[2]; - carlSigner = accountss[3]; - karenSigner = accountss[4]; - usdcxWhaleSigner = accountss[5]; - ethxWhaleSigner = accountss[6]; - maticxWhaleSigner = accountss[7]; - - ricochetMATICx = superT.maticx; - ricochetUSDCx = superT.usdcx; - ricochetETHx = superT.ethx; - ricochetWBTCx = superT.wbtcx; - ricochetRIC = superT.ric; - - usdcxAndItsIDAIndex = { - token: ricochetUSDCx, - IDAIndex: USDCX_SUBSCRIPTION_INDEX, - } - ethxAndItsIDAIndex = { - token: ricochetETHx, - IDAIndex: ETHX_SUBSCRIPTION_INDEX, - } - ricAndItsIDAIndex = { - token: ricochetRIC, - IDAIndex: RIC_SUBSCRIPTION_INDEX, - } - - // ============================================================================== - const registrationKey = await sfRegistrationKey(sf, adminSigner.address); - console.log("============ Right after sfRegistrationKey() =================="); - - console.log("======******** List of addresses ======="); - for (let i = 0; i < accountss.length; i++) { - console.log("Address number ", i, ": ", accountss[i].address); - } - console.log("++++++++++++++ alice address number: ", aliceSigner.address); - console.log("++++++++++++++ bob address number: ", bobSigner.address); - console.log("++++++++++++++ carl address number: ", carlSigner.address); - - console.log("======******** List of TOKENS addresses ======="); - console.log("======** usdc's address: ", ricochetUSDCx.address); - // ============================================================================== - let whaleEthxBalance = await ricochetETHx.balanceOf({ - account: constants.ETHX_SOURCE_ADDRESS, providerOrSigner: provider - }); - console.log("WHALE's Balance in ETHX: ", whaleEthxBalance); - - // ============================================================================== - - // Deploy REXReferral - rexReferral = await ethers.getContractFactory("REXReferral", { - signer: adminSigner, - }); - referral = await rexReferral.deploy(); - await referral.deployed(); - console.log("=========== Deployed REXReferral ============"); - - // ============== - // Deploy REX Launchpad - console.log("Deploying RicochetLaunchpadHelper") - const RicochetLaunchpadHelper = await ethers.getContractFactory("RicochetLaunchpadHelper"); - let ricochetLaunchpadHelper = await RicochetLaunchpadHelper.deploy(); - - console.log("Deploying RicochetLaunchpad..."); - RicochetLaunchpad = await ethers.getContractFactory("RicochetLaunchpad", { - signer: adminSigner, - libraries: { - RicochetLaunchpadHelper: ricochetLaunchpadHelper.address, - }, - }); - - launchpad = await RicochetLaunchpad.deploy( - sf.host.contract.address, - constants.CFA_SUPERFLUID_ADDRESS, - constants.IDA_SUPERFLUID_ADDRESS, - registrationKey, - referral.address - ); - console.log("=========== Deployed RicochetLaunchpad ============"); - - await launchpad.initialize( - ricochetUSDCx.address, - ricochetRIC.address, - adminSigner.address, // originator - adminSigner.address, // beneficiary - 1000, //output rate - 12 // fee rate - ) - console.log("=========== Initialized Launchpad ============"); - - // Send the contract some RIC - try { - await ricochetRIC.transfer({ - receiver: launchpad.address, - amount: "1000000000000000000" - }).exec(adminSigner); - } catch (err: any) { - console.log("Ricochet - ERROR transferring RICs to the contract: ", err); - } - await checkBalance(adminSigner, "the contract"); - - // Register the market with REXReferral - await referral.registerApp(launchpad.address); - referral = await referral.connect(bobSigner); - await referral.applyForAffiliate("bob", "bob"); - - // Do all the approvals - // TODO: Redo how indexes are setup - // await approveSubscriptions([usdcxAndItsIDAIndex, ethxAndItsIDAIndex, ricAndItsIDAIndex], - // [adminSigner, aliceSigner, bobSigner, karenSigner, carlSigner]); - - // Log the balance of maticxWhaleSigner - await checkBalance(adminSigner, "maticxWhaleSigner"); - - // Give Alice, Bob, Karen some tokens - const initialAmount = ethers.utils.parseUnits("1000", 18).toString(); - await ricochetUSDCx - .transfer({ - receiver: aliceSigner.address, - amount: initialAmount, - }).exec(usdcxWhaleSigner); - console.log("====== Transferred to alice ======="); - await ricochetETHx - .transfer({ - receiver: bobSigner.address, - amount: ethers.utils.parseUnits("0.5", 18).toString(), - }).exec(ethxWhaleSigner); - console.log("ETH") - await ricochetRIC - .transfer({ - receiver: bobSigner.address, - amount: '100000000000000000000', - }).exec(adminSigner); - console.log("RIC") - await ricochetMATICx - .transfer({ - receiver: bobSigner.address, - amount: '1754897259852523432', - }).exec(maticxWhaleSigner); - console.log("MATIC") - console.log("====== Transferred to bob ======="); - await ricochetUSDCx - .transfer({ - receiver: karenSigner.address, - amount: initialAmount, - }).exec(usdcxWhaleSigner); - console.log("====== Transferred to karen ======="); - - // Take a snapshot to avoid redoing the setup - snapshot = await provider.send('evm_snapshot', []); - - }); - - context("#1 - rex launchpad check referral", async () => { - - beforeEach(async () => { - // Revert to the point REXMarket was just deployed - const success = await provider.send('evm_revert', [ - snapshot - ]); - // Take another snapshot to be able to revert again next time - snapshot = await provider.send('evm_snapshot', []); - expect(success).to.equal(true); - }); - - afterEach(async () => { - // Check the app isn't jailed - expect(await launchpad.isAppJailed()).to.equal(false); - await resetMeasurements(); - }); - - - it("#1.1 Check referral shares are correct", async () => { - - // Alice opens a USDC stream to launchoad - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: launchpad.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc, - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["bob"]), - shouldUseCallAgreement: true, - }).exec(aliceSigner); - - // Alice gets 98% because of referral fee - expect( - (await launchpad.getIDAShares(ETHX_SUBSCRIPTION_INDEX, aliceSigner.address)).toString() - ).to.equal(`true,false,980,0`); - // Admin and Bob split 2% of the shares bc of the 50% referral fee - expect( - (await launchpad.getIDAShares(ETHX_SUBSCRIPTION_INDEX, adminSigner.address)).toString() - ).to.equal(`true,false,10,0`); - expect( - (await launchpad.getIDAShares(ETHX_SUBSCRIPTION_INDEX, bobSigner.address)).toString() - ).to.equal(`true,false,10,0`); - - await sf.cfaV1.deleteFlow({ - receiver: launchpad.address, - sender: aliceSigner.address, - superToken: ricochetUSDCx.address, - shouldUseCallAgreement: true, - }).exec(aliceSigner); - - expect( - (await launchpad.getIDAShares(ETHX_SUBSCRIPTION_INDEX, bobSigner.address)).toString() - ).to.equal(`true,false,0,0`); - - }); - - it("#1.2 DAO gets all shares if there is no affiliate", async () => { - // Alice opens a USDC stream to launchoad - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: launchpad.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc, - shouldUseCallAgreement: true, - }).exec(aliceSigner); - - // Alice gets 100% as there are no affiliates - expect( - (await launchpad.getIDAShares(ETHX_SUBSCRIPTION_INDEX, aliceSigner.address)).toString() - ).to.equal(`true,false,1000,0`); - - }); - - }); - - context("#2 - test getters and setters", async () => { - - beforeEach(async () => { - // Revert to the point REXMarket was just deployed - const success = await provider.send('evm_revert', [ - snapshot - ]); - // Take another snapshot to be able to revert again next time - snapshot = await provider.send('evm_snapshot', []); - expect(success).to.equal(true); - }); - - afterEach(async () => { - // Check the app isn't jailed - expect(await launchpad.isAppJailed()).to.equal(false); - await resetMeasurements(); - }); - - it("#2.1 getters/setters", async () => { - // Alice opens a USDC stream to launchoad - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: launchpad.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc, - shouldUseCallAgreement: true, - }).exec(aliceSigner); - - const feeRate = 1000; - await launchpad.setFeeRate(feeRate); - expect(await launchpad.getFeeRate()).to.equal(feeRate); - - const sharePrice = await launchpad.getSharePrice(); - console.log('get share price - ', sharePrice); - // at 0 what should it be? - expect(sharePrice).to.equal(0); - - const inputToken = await launchpad.getInputToken(); - expect(inputToken).to.equal("0xCAa7349CEA390F89641fe306D93591f87595dc1F"); - - const outputToken = await launchpad.getOutputToken(); - expect(outputToken).to.equal("0x263026E7e53DBFDce5ae55Ade22493f828922965"); - - const outputIndexId = await launchpad.getOutputIndexId(); - console.log('output index id - ', outputIndexId); - // at 0 what should it be? - expect(outputIndexId).to.equal(0); - - const outputRate = await launchpad.getOutputRate(); - expect(outputRate).to.equal(1000); - - const getInflow = await launchpad.getTotalInflow(); - expect(getInflow).to.equal(1000000000000); - - const getLastDistributionAt = await launchpad.getLastDistributionAt(); - expect((getLastDistributionAt.toNumber())).to.be.above(0); - - const getOwner = await launchpad.getOwner(); - expect(getOwner).to.equal("0x3226C9EaC0379F04Ba2b1E1e1fcD52ac26309aeA"); - - const getStreamRate = await launchpad.getStreamRate(aliceSigner.address); - expect(getStreamRate).to.equal(1000000000000); - - }); - - it("#2.2 transfers ownership", async () => { - // transfer ownership and check owner - await launchpad.transferOwnership(aliceSigner.address); - const getOwner = await launchpad.getOwner(); - expect(getOwner).to.equal(aliceSigner.address); - }); - }); - - context("#3 - rex launchpad open / close stream", async () => { - beforeEach(async () => { - // Revert to the point REXMarket was just deployed - const success = await provider.send('evm_revert', [ - snapshot - ]); - // Take another snapshot to be able to revert again next time - snapshot = await provider.send('evm_snapshot', []); - expect(success).to.equal(true); - }); - - afterEach(async () => { - // Check the app isn't jailed - expect(await launchpad.isAppJailed()).to.equal(false); - await resetMeasurements(); - }); - - it("#3.1 open and close stream", async () => { - // open and close stream and check share amount is correct - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: launchpad.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc, - shouldUseCallAgreement: true, - }).exec(aliceSigner); - - expect( - (await launchpad.getIDAShares(ETHX_SUBSCRIPTION_INDEX, aliceSigner.address)).toString() - ).to.equal(`true,false,1000,0`); - - await sf.cfaV1.deleteFlow({ - receiver: launchpad.address, - sender: aliceSigner.address, - superToken: ricochetUSDCx.address, - shouldUseCallAgreement: true, - }).exec(aliceSigner); - - expect( - (await launchpad.getIDAShares(ETHX_SUBSCRIPTION_INDEX, aliceSigner.address)).toString() - ).to.equal(`true,false,0,0`); - }); - }); - -}); + // ============================================================================== + const registrationKey = await sfRegistrationKey(sf, adminSigner.address) + console.log('============ Right after sfRegistrationKey() ==================') + + console.log('======******** List of addresses =======') + for (let i = 0; i < accountss.length; i++) { + console.log('Address number ', i, ': ', accountss[i].address) + } + console.log('++++++++++++++ alice address number: ', aliceSigner.address) + console.log('++++++++++++++ bob address number: ', bobSigner.address) + console.log('++++++++++++++ carl address number: ', carlSigner.address) + + console.log('======******** List of TOKENS addresses =======') + console.log("======** usdc's address: ", ricochetUSDCx.address) + // ============================================================================== + let whaleEthxBalance = await ricochetETHx.balanceOf({ + account: constants.ETHX_SOURCE_ADDRESS, + providerOrSigner: provider, + }) + console.log("WHALE's Balance in ETHX: ", whaleEthxBalance) + + // ============================================================================== + + // Deploy REXReferral + rexReferral = await ethers.getContractFactory('REXReferral', { + signer: adminSigner, + }) + referral = await rexReferral.deploy() + await referral.deployed() + console.log('=========== Deployed REXReferral ============') + + // ============== + // Deploy REX Launchpad + console.log('Deploying RicochetLaunchpadHelper') + const RicochetLaunchpadHelper = await ethers.getContractFactory('RicochetLaunchpadHelper') + let ricochetLaunchpadHelper = await RicochetLaunchpadHelper.deploy() + + console.log('Deploying RicochetLaunchpad...') + RicochetLaunchpad = await ethers.getContractFactory('RicochetLaunchpad', { + signer: adminSigner, + libraries: { + RicochetLaunchpadHelper: ricochetLaunchpadHelper.address, + }, + }) + + launchpad = await RicochetLaunchpad.deploy( + sf.host.contract.address, + constants.CFA_SUPERFLUID_ADDRESS, + constants.IDA_SUPERFLUID_ADDRESS, + registrationKey, + referral.address + ) + console.log('=========== Deployed RicochetLaunchpad ============') + + await launchpad.initialize( + ricochetUSDCx.address, + ricochetRIC.address, + adminSigner.address, // originator + adminSigner.address, // beneficiary + 1000, //output rate + 12 // fee rate + ) + console.log('=========== Initialized Launchpad ============') + + // Send the contract some RIC + try { + await ricochetRIC + .transfer({ + receiver: launchpad.address, + amount: '1000000000000000000', + }) + .exec(adminSigner) + } catch (err: any) { + console.log('Ricochet - ERROR transferring RICs to the contract: ', err) + } + await checkBalance(adminSigner, 'the contract') + + // Register the market with REXReferral + await referral.registerApp(launchpad.address) + referral = await referral.connect(bobSigner) + await referral.applyForAffiliate('bob', 'bob') + + // Do all the approvals + // TODO: Redo how indexes are setup + // await approveSubscriptions([usdcxAndItsIDAIndex, ethxAndItsIDAIndex, ricAndItsIDAIndex], + // [adminSigner, aliceSigner, bobSigner, karenSigner, carlSigner]); + + // Log the balance of maticxWhaleSigner + await checkBalance(adminSigner, 'maticxWhaleSigner') + + // Give Alice, Bob, Karen some tokens + const initialAmount = ethers.utils.parseUnits('1000', 18).toString() + await ricochetUSDCx + .transfer({ + receiver: aliceSigner.address, + amount: initialAmount, + }) + .exec(usdcxWhaleSigner) + console.log('====== Transferred to alice =======') + await ricochetETHx + .transfer({ + receiver: bobSigner.address, + amount: ethers.utils.parseUnits('0.5', 18).toString(), + }) + .exec(ethxWhaleSigner) + console.log('ETH') + await ricochetRIC + .transfer({ + receiver: bobSigner.address, + amount: '100000000000000000000', + }) + .exec(adminSigner) + console.log('RIC') + await ricochetMATICx + .transfer({ + receiver: bobSigner.address, + amount: '1754897259852523432', + }) + .exec(maticxWhaleSigner) + console.log('MATIC') + console.log('====== Transferred to bob =======') + await ricochetUSDCx + .transfer({ + receiver: karenSigner.address, + amount: initialAmount, + }) + .exec(usdcxWhaleSigner) + console.log('====== Transferred to karen =======') + + // Take a snapshot to avoid redoing the setup + snapshot = await provider.send('evm_snapshot', []) + }) + + context('#1 - rex launchpad check referral', async () => { + beforeEach(async () => { + // Revert to the point REXMarket was just deployed + const success = await provider.send('evm_revert', [snapshot]) + // Take another snapshot to be able to revert again next time + snapshot = await provider.send('evm_snapshot', []) + expect(success).to.equal(true) + }) + + afterEach(async () => { + // Check the app isn't jailed + expect(await launchpad.isAppJailed()).to.equal(false) + await resetMeasurements() + }) + + it('#1.1 Check referral shares are correct', async () => { + // Alice opens a USDC stream to launchoad + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: launchpad.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc, + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['bob']), + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + + // Alice gets 98% because of referral fee + expect((await launchpad.getIDAShares(ETHX_SUBSCRIPTION_INDEX, aliceSigner.address)).toString()).to.equal( + `true,false,980,0` + ) + // Admin and Bob split 2% of the shares bc of the 50% referral fee + expect((await launchpad.getIDAShares(ETHX_SUBSCRIPTION_INDEX, adminSigner.address)).toString()).to.equal( + `true,false,10,0` + ) + expect((await launchpad.getIDAShares(ETHX_SUBSCRIPTION_INDEX, bobSigner.address)).toString()).to.equal( + `true,false,10,0` + ) + + await sf.cfaV1 + .deleteFlow({ + receiver: launchpad.address, + sender: aliceSigner.address, + superToken: ricochetUSDCx.address, + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + + expect((await launchpad.getIDAShares(ETHX_SUBSCRIPTION_INDEX, bobSigner.address)).toString()).to.equal( + `true,false,0,0` + ) + }) + + it('#1.2 DAO gets all shares if there is no affiliate', async () => { + // Alice opens a USDC stream to launchoad + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: launchpad.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc, + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + + // Alice gets 100% as there are no affiliates + expect((await launchpad.getIDAShares(ETHX_SUBSCRIPTION_INDEX, aliceSigner.address)).toString()).to.equal( + `true,false,1000,0` + ) + }) + }) + + context('#2 - test getters and setters', async () => { + beforeEach(async () => { + // Revert to the point REXMarket was just deployed + const success = await provider.send('evm_revert', [snapshot]) + // Take another snapshot to be able to revert again next time + snapshot = await provider.send('evm_snapshot', []) + expect(success).to.equal(true) + }) + + afterEach(async () => { + // Check the app isn't jailed + expect(await launchpad.isAppJailed()).to.equal(false) + await resetMeasurements() + }) + + it('#2.1 getters/setters', async () => { + // Alice opens a USDC stream to launchoad + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: launchpad.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc, + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + + const feeRate = 1000 + await launchpad.setFeeRate(feeRate) + expect(await launchpad.getFeeRate()).to.equal(feeRate) + + const sharePrice = await launchpad.getSharePrice() + console.log('get share price - ', sharePrice) + // at 0 what should it be? + expect(sharePrice).to.equal(0) + + const inputToken = await launchpad.getInputToken() + expect(inputToken).to.equal('0xCAa7349CEA390F89641fe306D93591f87595dc1F') + + const outputToken = await launchpad.getOutputToken() + expect(outputToken).to.equal('0x263026E7e53DBFDce5ae55Ade22493f828922965') + + const outputIndexId = await launchpad.getOutputIndexId() + console.log('output index id - ', outputIndexId) + // at 0 what should it be? + expect(outputIndexId).to.equal(0) + + const outputRate = await launchpad.getOutputRate() + expect(outputRate).to.equal(1000) + + const getInflow = await launchpad.getTotalInflow() + expect(getInflow).to.equal(1000000000000) + + const getLastDistributionAt = await launchpad.getLastDistributionAt() + expect(getLastDistributionAt.toNumber()).to.be.above(0) + + const getOwner = await launchpad.getOwner() + expect(getOwner).to.equal('0x3226C9EaC0379F04Ba2b1E1e1fcD52ac26309aeA') + + const getStreamRate = await launchpad.getStreamRate(aliceSigner.address) + expect(getStreamRate).to.equal(1000000000000) + }) + + it('#2.2 transfers ownership', async () => { + // transfer ownership and check owner + await launchpad.transferOwnership(aliceSigner.address) + const getOwner = await launchpad.getOwner() + expect(getOwner).to.equal(aliceSigner.address) + }) + }) + + context('#3 - rex launchpad open / close stream', async () => { + beforeEach(async () => { + // Revert to the point REXMarket was just deployed + const success = await provider.send('evm_revert', [snapshot]) + // Take another snapshot to be able to revert again next time + snapshot = await provider.send('evm_snapshot', []) + expect(success).to.equal(true) + }) + + afterEach(async () => { + // Check the app isn't jailed + expect(await launchpad.isAppJailed()).to.equal(false) + await resetMeasurements() + }) + + it('#3.1 open and close stream', async () => { + // open and close stream and check share amount is correct + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: launchpad.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc, + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + + expect((await launchpad.getIDAShares(ETHX_SUBSCRIPTION_INDEX, aliceSigner.address)).toString()).to.equal( + `true,false,1000,0` + ) + + await sf.cfaV1 + .deleteFlow({ + receiver: launchpad.address, + sender: aliceSigner.address, + superToken: ricochetUSDCx.address, + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + + expect((await launchpad.getIDAShares(ETHX_SUBSCRIPTION_INDEX, aliceSigner.address)).toString()).to.equal( + `true,false,0,0` + ) + }) + }) +}) diff --git a/test/REXRecurringDeposits.test.ts b/test/REXRecurringDeposits.test.ts index 88b3aa6..854b0ca 100644 --- a/test/REXRecurringDeposits.test.ts +++ b/test/REXRecurringDeposits.test.ts @@ -1,303 +1,301 @@ -import { network, ethers } from "hardhat"; -import { expect } from "chai"; -import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; -import { BigNumber } from "ethers"; -import { isEthersProvider } from "@superfluid-finance/sdk-core"; -import { impersonateAndSetBalance } from "./../misc/helpers"; - -describe("RecurringDeposits", () => { - let deployer: SignerWithAddress; - let alice: SignerWithAddress; - let bob: SignerWithAddress; - let mockSuperToken: any; - let recurringDeposits: any; - - // TODO: Move to constants file - const GELATO_OPS = "0x527a819db1eb0e34426297b03bae11F2f8B3A19E"; // Mainnet Gelato Ops Address - const GELATO_NETWORK = "0x7598e84B2E114AB62CAB288CE5f7d5f6bad35BbA"; // Mainnet Gelato Executor Address - const USDC_TOKEN = "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"; // Mainnet USDC Token Address - const WETH_TOKEN = "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619"; // Mainnet WETH Token Address - const RIC_TOKEN = "0x263026E7e53DBFDce5ae55Ade22493f828922965"; // Mainnet RIC Token Address - const USDC_HOLDER = "0x1a13F4Ca1d028320A707D99520AbFefca3998b7F"; // Ricochet holder - const UNISWAP_ROUTER = "0xE592427A0AEce92De3Edee1F18E0157C05861564"; // Mainnet Uniswap Router Address - const ONE_USDC = BigNumber.from("1000000"); - const GELATO_FEE = BigNumber.from("100000"); // 100k wei - - - const deploy = async (period: number) => { - // Get RIC token at contract address - const ricToken = await ethers.getContractAt("MockERC20", RIC_TOKEN); - const usdcToken = await ethers.getContractAt("MockERC20", USDC_TOKEN); - const wethToken = await ethers.getContractAt("MockERC20", WETH_TOKEN); - const gasToken = ricToken; - - // Make a mock token for scheduled deposits - const MockERC20 = await ethers.getContractFactory("MockERC20"); - const mockERC20 = await MockERC20.deploy("MockERC20", "MERC20"); - - // Mint alice and bob some tokens - await mockERC20.mint(alice.getAddress(), ONE_USDC); - await mockERC20.mint(bob.getAddress(), ONE_USDC); - - - - // Make a corresponding mock super token for mockERC20 - const MockSuperToken = await ethers.getContractFactory("MockSuperToken"); - const mockSuperToken = await MockSuperToken.deploy(mockERC20.address); - - const RecurringDeposits = await ethers.getContractFactory("RecurringDeposits"); - const recurringDeposits = await RecurringDeposits.deploy( - mockSuperToken.address, // depositToken - gasToken.address, // gasToken - wethToken.address, // feeToken - UNISWAP_ROUTER, - period, - 0, - GELATO_OPS, - deployer.address, - { gasLimit: 10000000 } - ); - await recurringDeposits.deployed(); - await recurringDeposits.createTask(); - - // Get the current block timestamp - const block = await ethers.provider.getBlock("latest"); - - // Approve the contract to spend alice and bob's tokens - await gasToken.connect(alice).approve(recurringDeposits.address, ONE_USDC); - await gasToken.connect(bob).approve(recurringDeposits.address, ONE_USDC); - await mockERC20.connect(alice).approve(recurringDeposits.address, ONE_USDC); - await mockERC20.connect(bob).approve(recurringDeposits.address, ONE_USDC); - - - return { recurringDeposits, mockSuperToken, mockERC20, gasToken, block }; - }; - - const getTokens = async (account: SignerWithAddress, tokenAddress: string, amount: BigNumber) => { - // Get token at contract address - const token = await ethers.getContractAt("MockERC20", tokenAddress); - - // Impersonate a large RIC token holder and transfer RIC to alice and bob - await impersonateAndSetBalance(USDC_HOLDER); - const ricHolder = await ethers.getSigner(USDC_HOLDER); - - // Transfer amount to account - await token.connect(ricHolder).transfer(account.getAddress(), amount); - }; - - before(async () => { - [deployer, alice, bob] = await ethers.getSigners(); - - }); - - context("1 Contract constructor", () => { - it("1.1 Initializes the contract correctly", async () => { - const { recurringDeposits, mockSuperToken } = await deploy(3600); +import { network, ethers } from 'hardhat' +import { expect } from 'chai' +import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' +import { BigNumber } from 'ethers' +import { isEthersProvider } from '@superfluid-finance/sdk-core' +import { impersonateAndSetBalance } from './../misc/helpers' + +describe('RecurringDeposits', () => { + let deployer: SignerWithAddress + let alice: SignerWithAddress + let bob: SignerWithAddress + let mockSuperToken: any + let recurringDeposits: any + + // TODO: Move to constants file + const GELATO_OPS = '0x527a819db1eb0e34426297b03bae11F2f8B3A19E' // Mainnet Gelato Ops Address + const GELATO_NETWORK = '0x7598e84B2E114AB62CAB288CE5f7d5f6bad35BbA' // Mainnet Gelato Executor Address + const USDC_TOKEN = '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' // Mainnet USDC Token Address + const WETH_TOKEN = '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619' // Mainnet WETH Token Address + const RIC_TOKEN = '0x263026E7e53DBFDce5ae55Ade22493f828922965' // Mainnet RIC Token Address + const USDC_HOLDER = '0x1a13F4Ca1d028320A707D99520AbFefca3998b7F' // Ricochet holder + const UNISWAP_ROUTER = '0xE592427A0AEce92De3Edee1F18E0157C05861564' // Mainnet Uniswap Router Address + const ONE_USDC = BigNumber.from('1000000') + const GELATO_FEE = BigNumber.from('100000') // 100k wei + + const deploy = async (period: number) => { + // Get RIC token at contract address + const ricToken = await ethers.getContractAt('MockERC20', RIC_TOKEN) + const usdcToken = await ethers.getContractAt('MockERC20', USDC_TOKEN) + const wethToken = await ethers.getContractAt('MockERC20', WETH_TOKEN) + const gasToken = ricToken + + // Make a mock token for scheduled deposits + const MockERC20 = await ethers.getContractFactory('MockERC20') + const mockERC20 = await MockERC20.deploy('MockERC20', 'MERC20') + + // Mint alice and bob some tokens + await mockERC20.mint(alice.getAddress(), ONE_USDC) + await mockERC20.mint(bob.getAddress(), ONE_USDC) + + // Make a corresponding mock super token for mockERC20 + const MockSuperToken = await ethers.getContractFactory('MockSuperToken') + const mockSuperToken = await MockSuperToken.deploy(mockERC20.address) + + const RecurringDeposits = await ethers.getContractFactory('RecurringDeposits') + const recurringDeposits = await RecurringDeposits.deploy( + mockSuperToken.address, // depositToken + gasToken.address, // gasToken + wethToken.address, // feeToken + UNISWAP_ROUTER, + period, + 0, + GELATO_OPS, + deployer.address, + { gasLimit: 10000000 } + ) + await recurringDeposits.deployed() + await recurringDeposits.createTask() + + // Get the current block timestamp + const block = await ethers.provider.getBlock('latest') + + // Approve the contract to spend alice and bob's tokens + await gasToken.connect(alice).approve(recurringDeposits.address, ONE_USDC) + await gasToken.connect(bob).approve(recurringDeposits.address, ONE_USDC) + await mockERC20.connect(alice).approve(recurringDeposits.address, ONE_USDC) + await mockERC20.connect(bob).approve(recurringDeposits.address, ONE_USDC) + + return { recurringDeposits, mockSuperToken, mockERC20, gasToken, block } + } + + const getTokens = async (account: SignerWithAddress, tokenAddress: string, amount: BigNumber) => { + // Get token at contract address + const token = await ethers.getContractAt('MockERC20', tokenAddress) + + // Impersonate a large RIC token holder and transfer RIC to alice and bob + await impersonateAndSetBalance(USDC_HOLDER) + const ricHolder = await ethers.getSigner(USDC_HOLDER) + + // Transfer amount to account + await token.connect(ricHolder).transfer(account.getAddress(), amount) + } + + before(async () => { + ;[deployer, alice, bob] = await ethers.getSigners() + }) + + context('1 Contract constructor', () => { + it('1.1 Initializes the contract correctly', async () => { + const { recurringDeposits, mockSuperToken } = await deploy(3600) // Check that the contract variables have the expected values - const depositTokenAddress = await recurringDeposits.depositToken(); - const period = await recurringDeposits.period(); - expect(depositTokenAddress).to.equal(mockSuperToken.address, "Incorrect deposit token address"); - expect(period.toString()).to.equal("3600", "Incorrect period"); + const depositTokenAddress = await recurringDeposits.depositToken() + const period = await recurringDeposits.period() + expect(depositTokenAddress).to.equal(mockSuperToken.address, 'Incorrect deposit token address') + expect(period.toString()).to.equal('3600', 'Incorrect period') + }) - }); - - it("1.2 Creates the gelato task", async () => { - - }); - - }); + it('1.2 Creates the gelato task', async () => {}) + }) // Create a new context and test case for the depositGas and withdrawGas functions in REXRecurringDeposits.sol - context("2 Gas Tank", () => { - - it("2.1 Deposit and withdraw gas works", async () => { - const { recurringDeposits, gasToken } = await deploy(3600); + context('2 Gas Tank', () => { + it('2.1 Deposit and withdraw gas works', async () => { + const { recurringDeposits, gasToken } = await deploy(3600) // Send alice some RIC tokens for a gas deposit - await getTokens(alice, gasToken.address, ONE_USDC); + await getTokens(alice, gasToken.address, ONE_USDC) // Create a new scheduled deposit - let createDeposit = await recurringDeposits.connect(alice).scheduleDeposit(ONE_USDC, 1); + let createDeposit = await recurringDeposits.connect(alice).scheduleDeposit(ONE_USDC, 1) // Deposit gas for alice - let depositGas = await recurringDeposits.connect(alice).depositGas(ONE_USDC); - expect(await recurringDeposits.gasTank(alice.address)).to.equal(ONE_USDC , "Incorrect deposit gas"); - expect(await gasToken.balanceOf(alice.address)).to.equal(0, "Incorrect ric balance after deposit"); + let depositGas = await recurringDeposits.connect(alice).depositGas(ONE_USDC) + expect(await recurringDeposits.gasTank(alice.address)).to.equal(ONE_USDC, 'Incorrect deposit gas') + expect(await gasToken.balanceOf(alice.address)).to.equal(0, 'Incorrect ric balance after deposit') // Withdraw gas for alice - let withdrawGas = await recurringDeposits.connect(alice).withdrawGas(ONE_USDC); - expect(await recurringDeposits.gasTank(alice.address)).to.equal(0, "Incorrect withdraw gas"); - expect(await gasToken.balanceOf(alice.address)).to.equal(ONE_USDC, "Incorrect ric balance after withdraw"); - - }); + let withdrawGas = await recurringDeposits.connect(alice).withdrawGas(ONE_USDC) + expect(await recurringDeposits.gasTank(alice.address)).to.equal(0, 'Incorrect withdraw gas') + expect(await gasToken.balanceOf(alice.address)).to.equal(ONE_USDC, 'Incorrect ric balance after withdraw') + }) + }) - }); + context('3 Scheduling a recurring deposit', () => { + console.log('Inside context 3') - - context("3 Scheduling a recurring deposit", () => { - - console.log("Inside context 3"); - - it("3.1 User can schedule a recurring deposit", async () => { + it('3.1 User can schedule a recurring deposit', async () => { // Deploy the Supertoken and RecurringDeposits contracts - const { recurringDeposits, mockSuperToken } = await deploy(3600); + const { recurringDeposits, mockSuperToken } = await deploy(3600) // Schedule a recurring deposit - const times = await ethers.BigNumber.from("10"); - await recurringDeposits.connect(alice).scheduleDeposit(ONE_USDC, times); + const times = await ethers.BigNumber.from('10') + await recurringDeposits.connect(alice).scheduleDeposit(ONE_USDC, times) // Check that the deposit was scheduled correctly - const index = (await recurringDeposits.depositIndices(alice.getAddress())).toString(); - const deposit = await recurringDeposits.scheduledDeposits(index); - expect(deposit.amount.toString()).to.equal(ONE_USDC.toString(), "Incorrect deposit amount"); - expect(deposit.times.toString()).to.equal(times.toString(), "Incorrect number of times"); - }); + const index = (await recurringDeposits.depositIndices(alice.getAddress())).toString() + const deposit = await recurringDeposits.scheduledDeposits(index) + expect(deposit.amount.toString()).to.equal(ONE_USDC.toString(), 'Incorrect deposit amount') + expect(deposit.times.toString()).to.equal(times.toString(), 'Incorrect number of times') + }) - it("3.2 Anyone can perform the next scheduled deposit", async () => { - const { recurringDeposits, mockSuperToken, mockERC20, gasToken } = await deploy(3600); + it('3.2 Anyone can perform the next scheduled deposit', async () => { + const { recurringDeposits, mockSuperToken, mockERC20, gasToken } = await deploy(3600) // Send alice some RIC tokens for a gas deposit - await getTokens(alice, gasToken.address, ONE_USDC.mul(2)); + await getTokens(alice, gasToken.address, ONE_USDC.mul(2)) // Schedule a recurring deposit - const times = 1; - const feeRateScaler = 10000; - const feeRate = await recurringDeposits.feeRate(); - await recurringDeposits.connect(alice).scheduleDeposit(ONE_USDC, times); + const times = 1 + const feeRateScaler = 10000 + const feeRate = await recurringDeposits.feeRate() + await recurringDeposits.connect(alice).scheduleDeposit(ONE_USDC, times) // Deposit gas for alice - await gasToken.connect(alice).approve(recurringDeposits.address, ONE_USDC.mul(2)); - let depositGas = await recurringDeposits.connect(alice).depositGas(ONE_USDC.mul(2)); - + await gasToken.connect(alice).approve(recurringDeposits.address, ONE_USDC.mul(2)) + let depositGas = await recurringDeposits.connect(alice).depositGas(ONE_USDC.mul(2)) // Get the token balances for alice - const initialERC20Balance = await mockERC20.balanceOf(alice.getAddress()); - const initialSuperTokenBalance = await mockSuperToken.balanceOf(alice.getAddress()); + const initialERC20Balance = await mockERC20.balanceOf(alice.getAddress()) + const initialSuperTokenBalance = await mockSuperToken.balanceOf(alice.getAddress()) // Advance the block timestamp to trigger the deposit - await ethers.provider.send("evm_increaseTime", [3700]); - await ethers.provider.send("evm_mine", []); + await ethers.provider.send('evm_increaseTime', [3700]) + await ethers.provider.send('evm_mine', []) // Approve the contract to spend the depositor's tokens - await mockERC20.connect(alice).approve(recurringDeposits.address, ONE_USDC); + await mockERC20.connect(alice).approve(recurringDeposits.address, ONE_USDC) // Perform the next deposit - await recurringDeposits.performNextDeposit({ gasLimit: 1000000}); + await recurringDeposits.performNextDeposit({ gasLimit: 1000000 }) // Get the balance of the depositor after the deposit - const finalERC20Balance = await mockERC20.balanceOf(alice.getAddress()); - const finalSuperTokenBalance = await mockSuperToken.balanceOf(alice.getAddress()); + const finalERC20Balance = await mockERC20.balanceOf(alice.getAddress()) + const finalSuperTokenBalance = await mockSuperToken.balanceOf(alice.getAddress()) // Get the depolyer's balance of the deposit token - const deployerERC20Balance = await mockERC20.balanceOf(deployer.getAddress()); + const deployerERC20Balance = await mockERC20.balanceOf(deployer.getAddress()) // Check that the deposit has been performed - expect(finalERC20Balance.sub(initialERC20Balance).toString()).to.equal(ONE_USDC.mul(-1).toString(), "Incorrect amount deposited"); - expect(deployerERC20Balance.toString()).to.equal((ONE_USDC.mul(feeRate).div(feeRateScaler)).toString(), "Incorrect fee taken"); - expect(finalSuperTokenBalance.sub(initialSuperTokenBalance).toString()).to.equal((ONE_USDC.mul(feeRateScaler-feeRate).div(feeRateScaler)).toString(), "Incorrect amount received"); - const scheduledDeposit = await recurringDeposits.scheduledDeposits(0); - expect(scheduledDeposit.times.toString()).to.equal("0", "Incorrect number of times"); - }); - - it("3.2 Gelato can perform the next scheduled deposit", async () => { - const { recurringDeposits, mockSuperToken, mockERC20, gasToken, block } = await deploy(3600); + expect(finalERC20Balance.sub(initialERC20Balance).toString()).to.equal( + ONE_USDC.mul(-1).toString(), + 'Incorrect amount deposited' + ) + expect(deployerERC20Balance.toString()).to.equal( + ONE_USDC.mul(feeRate).div(feeRateScaler).toString(), + 'Incorrect fee taken' + ) + expect(finalSuperTokenBalance.sub(initialSuperTokenBalance).toString()).to.equal( + ONE_USDC.mul(feeRateScaler - feeRate) + .div(feeRateScaler) + .toString(), + 'Incorrect amount received' + ) + const scheduledDeposit = await recurringDeposits.scheduledDeposits(0) + expect(scheduledDeposit.times.toString()).to.equal('0', 'Incorrect number of times') + }) + + it('3.2 Gelato can perform the next scheduled deposit', async () => { + const { recurringDeposits, mockSuperToken, mockERC20, gasToken, block } = await deploy(3600) // Send alice some RIC tokens for a gas deposit - await getTokens(alice, gasToken.address, ONE_USDC.mul(2)); + await getTokens(alice, gasToken.address, ONE_USDC.mul(2)) // Impersonate gelato network and set balance - await impersonateAndSetBalance(GELATO_NETWORK); - const gelatoNetwork = await ethers.provider.getSigner(GELATO_NETWORK); - - const ops = await ethers.getContractAt("Ops", GELATO_OPS); - - + await impersonateAndSetBalance(GELATO_NETWORK) + const gelatoNetwork = await ethers.provider.getSigner(GELATO_NETWORK) + const ops = await ethers.getContractAt('Ops', GELATO_OPS) // Schedule a recurring deposit - const times = 1; - const feeRateScaler = 10000; - const feeRate = await recurringDeposits.feeRate(); - await recurringDeposits.connect(alice).scheduleDeposit(ONE_USDC, times); + const times = 1 + const feeRateScaler = 10000 + const feeRate = await recurringDeposits.feeRate() + await recurringDeposits.connect(alice).scheduleDeposit(ONE_USDC, times) // Deposit gas for alice - await gasToken.connect(alice).approve(recurringDeposits.address, ONE_USDC.mul(2)); - let depositGas = await recurringDeposits.connect(alice).depositGas(ONE_USDC.mul(2)); - + await gasToken.connect(alice).approve(recurringDeposits.address, ONE_USDC.mul(2)) + let depositGas = await recurringDeposits.connect(alice).depositGas(ONE_USDC.mul(2)) + // Get the token balances for alice - const initialERC20Balance = await mockERC20.balanceOf(alice.getAddress()); - const initialSuperTokenBalance = await mockSuperToken.balanceOf(alice.getAddress()); + const initialERC20Balance = await mockERC20.balanceOf(alice.getAddress()) + const initialSuperTokenBalance = await mockSuperToken.balanceOf(alice.getAddress()) // Advance the block timestamp to trigger the deposit - await ethers.provider.send("evm_increaseTime", [3700]); - await ethers.provider.send("evm_mine", []); + await ethers.provider.send('evm_increaseTime', [3700]) + await ethers.provider.send('evm_mine', []) // Approve the contract to spend the depositor's tokens - await mockERC20.connect(alice).approve(recurringDeposits.address, ONE_USDC); + await mockERC20.connect(alice).approve(recurringDeposits.address, ONE_USDC) // Perform the next deposit - // Abi encode a uint128 and int128 - let encodedArgs = ethers.utils.defaultAbiCoder.encode( - ["uint128", "uint128"], - [block.timestamp, 60] - ); + // Abi encode a uint128 and int128 + let encodedArgs = ethers.utils.defaultAbiCoder.encode(['uint128', 'uint128'], [block.timestamp, 60]) - let execData = recurringDeposits.interface.encodeFunctionData("performNextDeposit", []); + let execData = recurringDeposits.interface.encodeFunctionData('performNextDeposit', []) let moduleData = { modules: [1], args: [encodedArgs], - }; + } //executor is the impersonated address - await ops - .connect(gelatoNetwork) - .exec( - recurringDeposits.address, - recurringDeposits.address, - execData, - moduleData, - GELATO_FEE, - "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - false, // true if payed with treasury - true - ); + await ops.connect(gelatoNetwork).exec( + recurringDeposits.address, + recurringDeposits.address, + execData, + moduleData, + GELATO_FEE, + '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', + false, // true if payed with treasury + true + ) // await recurringDeposits.performNextDeposit({ gasLimit: 1000000}); // Get the balance of the depositor after the deposit - const finalERC20Balance = await mockERC20.balanceOf(alice.getAddress()); - const finalSuperTokenBalance = await mockSuperToken.balanceOf(alice.getAddress()); + const finalERC20Balance = await mockERC20.balanceOf(alice.getAddress()) + const finalSuperTokenBalance = await mockSuperToken.balanceOf(alice.getAddress()) // Get the depolyer's balance of the deposit token - const deployerERC20Balance = await mockERC20.balanceOf(deployer.getAddress()); + const deployerERC20Balance = await mockERC20.balanceOf(deployer.getAddress()) // Check that the deposit has been performed - expect(finalERC20Balance.sub(initialERC20Balance).toString()).to.equal(ONE_USDC.mul(-1).toString(), "Incorrect amount deposited"); - expect(deployerERC20Balance.toString()).to.equal((ONE_USDC.mul(feeRate).div(feeRateScaler)).toString(), "Incorrect fee taken"); - expect(finalSuperTokenBalance.sub(initialSuperTokenBalance).toString()).to.equal((ONE_USDC.mul(feeRateScaler-feeRate).div(feeRateScaler)).toString(), "Incorrect amount received"); - const scheduledDeposit = await recurringDeposits.scheduledDeposits(0); - expect(scheduledDeposit.times.toString()).to.equal("0", "Incorrect number of times"); - }); - - it("3.3 User can cancel their scheduled deposit", async () => { - const { recurringDeposits, mockSuperToken, mockERC20 } = await deploy(3600); + expect(finalERC20Balance.sub(initialERC20Balance).toString()).to.equal( + ONE_USDC.mul(-1).toString(), + 'Incorrect amount deposited' + ) + expect(deployerERC20Balance.toString()).to.equal( + ONE_USDC.mul(feeRate).div(feeRateScaler).toString(), + 'Incorrect fee taken' + ) + expect(finalSuperTokenBalance.sub(initialSuperTokenBalance).toString()).to.equal( + ONE_USDC.mul(feeRateScaler - feeRate) + .div(feeRateScaler) + .toString(), + 'Incorrect amount received' + ) + const scheduledDeposit = await recurringDeposits.scheduledDeposits(0) + expect(scheduledDeposit.times.toString()).to.equal('0', 'Incorrect number of times') + }) + + it('3.3 User can cancel their scheduled deposit', async () => { + const { recurringDeposits, mockSuperToken, mockERC20 } = await deploy(3600) // Schedule a recurring deposit - const times = 1; - await recurringDeposits.connect(alice).scheduleDeposit(ONE_USDC, times); + const times = 1 + await recurringDeposits.connect(alice).scheduleDeposit(ONE_USDC, times) // Approve the contract to spend the depositor's tokens - await mockERC20.connect(alice).approve(recurringDeposits.address, ONE_USDC); + await mockERC20.connect(alice).approve(recurringDeposits.address, ONE_USDC) // Cancel the deposit - await recurringDeposits.connect(alice).cancelScheduledDeposit(); + await recurringDeposits.connect(alice).cancelScheduledDeposit() // Check that the deposit has been cancelled - const scheduledDeposit = await recurringDeposits.scheduledDeposits(0); - expect(scheduledDeposit.times.toString()).to.equal("0", "Incorrect number of times"); - }); - - }); -}); + const scheduledDeposit = await recurringDeposits.scheduledDeposits(0) + expect(scheduledDeposit.times.toString()).to.equal('0', 'Incorrect number of times') + }) + }) +}) diff --git a/test/REXSuperSwap.test.ts b/test/REXSuperSwap.test.ts index 845820a..679780c 100644 --- a/test/REXSuperSwap.test.ts +++ b/test/REXSuperSwap.test.ts @@ -1,764 +1,732 @@ -import { waffle, ethers } from "hardhat"; -import { setup, IUser, ISuperToken } from "../misc/setup"; -import { common } from "../misc/common"; -import { expect } from "chai"; -import axios from "axios"; -import { Framework, SuperToken } from "@superfluid-finance/sdk-core"; -import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; -import { Constants } from "../misc/Constants"; - - -const { provider, loadFixture } = waffle; -const TEST_TRAVEL_TIME = 3600 * 2; // 2 hours +import { waffle, ethers } from 'hardhat' +import { setup, IUser, ISuperToken } from '../misc/setup' +import { common } from '../misc/common' +import { expect } from 'chai' +import axios from 'axios' +import { Framework, SuperToken } from '@superfluid-finance/sdk-core' +import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' +import { Constants } from '../misc/Constants' + +const { provider, loadFixture } = waffle +const TEST_TRAVEL_TIME = 3600 * 2 // 2 hours // Index 1 is for Ether and 0 for USDCx -const USDCX_SUBSCRIPTION_INDEX = 0; -const ETHX_SUBSCRIPTION_INDEX = 1; -const RIC_SUBSCRIPTION_INDEX = 2; -const COINGECKO_KEY = 'matic-network'; +const USDCX_SUBSCRIPTION_INDEX = 0 +const ETHX_SUBSCRIPTION_INDEX = 1 +const RIC_SUBSCRIPTION_INDEX = 2 +const COINGECKO_KEY = 'matic-network' export interface superTokenAndItsIDAIndex { - token: SuperToken; - IDAIndex: number; + token: SuperToken + IDAIndex: number } describe('REXSuperSwap', () => { - - const errorHandler = (err: any) => { - if (err) throw err; - }; - - const subsidyRate = "10000000000000"; - - let rexSuperSwap: any; - let superSwap: any; - let snapshot: any; - - let adminSigner: SignerWithAddress; - let aliceSigner: SignerWithAddress; - let bobSigner: SignerWithAddress; - let carlSigner: SignerWithAddress; - let usdcxWhaleSigner: SignerWithAddress; - let ethxWhaleSigner: SignerWithAddress; - let maticxWhaleSigner: SignerWithAddress; - - let sf: Framework, - superT: ISuperToken, - u: { [key: string]: IUser }, - tokenss: { [key: string]: any }, - sfRegistrationKey: any, - accountss: SignerWithAddress[], - constant: { [key: string]: string }, - ERC20: any; - - // ************** All the supertokens used in Ricochet are declared ********************** - let ricochetMATICx: SuperToken; - let ricochetUSDCx: SuperToken; - let ricochetETHx: SuperToken; - let ricochetWBTCx: SuperToken; - let ricochetRIC: SuperToken; - let ricochetDAIX: SuperToken; - - let usdcxAndItsIDAIndex: superTokenAndItsIDAIndex; - let ethxAndItsIDAIndex: superTokenAndItsIDAIndex; - let ricAndItsIDAIndex: superTokenAndItsIDAIndex; - let wbtcxAndItsIDAIndex: superTokenAndItsIDAIndex; - let maticxAndItsIDAIndex: superTokenAndItsIDAIndex; - - let appBalances = { ethx: [], usdcx: [], ric: [], maticx: [] }; - let ownerBalances = { ethx: [], usdcx: [], ric: [], maticx: [] }; - let aliceBalances = { ethx: [], usdcx: [], ric: [], maticx: [], daix: [], wbtcx: [] }; - let bobBalances = { ethx: [], usdcx: [], ric: [], maticx: [] }; - let carlBalances = { ethx: [], usdcx: [], ric: [], maticx: [] }; - let karenBalances = { ethx: [], usdcx: [], ric: [], maticx: [] }; - - async function takeMeasurements(balances: SuperTokensBalances, signer: SignerWithAddress): Promise { - appBalances.ethx.push((await superT.ethx.balanceOf({ account: superSwap.address, providerOrSigner: provider })).toString()); - ownerBalances.ethx.push((await superT.ethx.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString()); - aliceBalances.ethx.push((await superT.ethx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - carlBalances.ethx.push((await superT.ethx.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString()); - // karenBalances.ethx.push((await superT.ethx.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); - bobBalances.ethx.push((await superT.ethx.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString()); - - appBalances.usdcx.push((await superT.usdcx.balanceOf({ account: superSwap.address, providerOrSigner: provider })).toString()); - ownerBalances.usdcx.push((await superT.usdcx.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString()); - aliceBalances.usdcx.push((await superT.usdcx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - carlBalances.usdcx.push((await superT.usdcx.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString()); - // karenBalances.usdcx.push((await superT.usdcx.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); - bobBalances.usdcx.push((await superT.usdcx.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString()); - - appBalances.ric.push((await superT.ric.balanceOf({ account: superSwap.address, providerOrSigner: provider })).toString()); - ownerBalances.ric.push((await superT.ric.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString()); - aliceBalances.ric.push((await superT.ric.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - carlBalances.ric.push((await superT.ric.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString()); - // karenBalances.ric.push((await superT.ric.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); - bobBalances.ric.push((await superT.ric.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString()); - - appBalances.maticx.push((await superT.maticx.balanceOf({ account: superSwap.address, providerOrSigner: provider })).toString()); - ownerBalances.maticx.push((await superT.maticx.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString()); - aliceBalances.maticx.push((await superT.maticx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - carlBalances.maticx.push((await superT.maticx.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString()); - // karenBalances.ric.push((await superT.ric.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); - bobBalances.maticx.push((await superT.maticx.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString()); - - aliceBalances.daix.push((await superT.daix.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - aliceBalances.wbtcx.push((await superT.wbtcx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - } - - async function delta(account: SignerWithAddress, balances: any) { - const len = balances.ethx.length; - return { - ethx: balances.ethx[len - 1] - balances.ethx[len - 2], - usdcx: balances.usdcx[len - 1] - balances.usdcx[len - 2], - ric: balances.ric[len - 1] - balances.ric[len - 2], - maticx: balances.maticx[len - 1] - balances.maticx[len - 2] - } + const errorHandler = (err: any) => { + if (err) throw err + } + + const subsidyRate = '10000000000000' + + let rexSuperSwap: any + let superSwap: any + let snapshot: any + + let adminSigner: SignerWithAddress + let aliceSigner: SignerWithAddress + let bobSigner: SignerWithAddress + let carlSigner: SignerWithAddress + let usdcxWhaleSigner: SignerWithAddress + let ethxWhaleSigner: SignerWithAddress + let maticxWhaleSigner: SignerWithAddress + + let sf: Framework, + superT: ISuperToken, + u: { [key: string]: IUser }, + tokenss: { [key: string]: any }, + sfRegistrationKey: any, + accountss: SignerWithAddress[], + constant: { [key: string]: string }, + ERC20: any + + // ************** All the supertokens used in Ricochet are declared ********************** + let ricochetMATICx: SuperToken + let ricochetUSDCx: SuperToken + let ricochetETHx: SuperToken + let ricochetWBTCx: SuperToken + let ricochetRIC: SuperToken + let ricochetDAIX: SuperToken + + let usdcxAndItsIDAIndex: superTokenAndItsIDAIndex + let ethxAndItsIDAIndex: superTokenAndItsIDAIndex + let ricAndItsIDAIndex: superTokenAndItsIDAIndex + let wbtcxAndItsIDAIndex: superTokenAndItsIDAIndex + let maticxAndItsIDAIndex: superTokenAndItsIDAIndex + + let appBalances = { ethx: [], usdcx: [], ric: [], maticx: [] } + let ownerBalances = { ethx: [], usdcx: [], ric: [], maticx: [] } + let aliceBalances = { ethx: [], usdcx: [], ric: [], maticx: [], daix: [], wbtcx: [] } + let bobBalances = { ethx: [], usdcx: [], ric: [], maticx: [] } + let carlBalances = { ethx: [], usdcx: [], ric: [], maticx: [] } + let karenBalances = { ethx: [], usdcx: [], ric: [], maticx: [] } + + async function takeMeasurements(balances: SuperTokensBalances, signer: SignerWithAddress): Promise { + appBalances.ethx.push( + (await superT.ethx.balanceOf({ account: superSwap.address, providerOrSigner: provider })).toString() + ) + ownerBalances.ethx.push( + (await superT.ethx.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString() + ) + aliceBalances.ethx.push( + (await superT.ethx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + carlBalances.ethx.push( + (await superT.ethx.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString() + ) + // karenBalances.ethx.push((await superT.ethx.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); + bobBalances.ethx.push( + (await superT.ethx.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString() + ) + + appBalances.usdcx.push( + (await superT.usdcx.balanceOf({ account: superSwap.address, providerOrSigner: provider })).toString() + ) + ownerBalances.usdcx.push( + (await superT.usdcx.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString() + ) + aliceBalances.usdcx.push( + (await superT.usdcx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + carlBalances.usdcx.push( + (await superT.usdcx.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString() + ) + // karenBalances.usdcx.push((await superT.usdcx.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); + bobBalances.usdcx.push( + (await superT.usdcx.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString() + ) + + appBalances.ric.push( + (await superT.ric.balanceOf({ account: superSwap.address, providerOrSigner: provider })).toString() + ) + ownerBalances.ric.push( + (await superT.ric.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString() + ) + aliceBalances.ric.push( + (await superT.ric.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + carlBalances.ric.push( + (await superT.ric.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString() + ) + // karenBalances.ric.push((await superT.ric.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); + bobBalances.ric.push( + (await superT.ric.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString() + ) + + appBalances.maticx.push( + (await superT.maticx.balanceOf({ account: superSwap.address, providerOrSigner: provider })).toString() + ) + ownerBalances.maticx.push( + (await superT.maticx.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString() + ) + aliceBalances.maticx.push( + (await superT.maticx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + carlBalances.maticx.push( + (await superT.maticx.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString() + ) + // karenBalances.ric.push((await superT.ric.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); + bobBalances.maticx.push( + (await superT.maticx.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString() + ) + + aliceBalances.daix.push( + (await superT.daix.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + aliceBalances.wbtcx.push( + (await superT.wbtcx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + } + + async function delta(account: SignerWithAddress, balances: any) { + const len = balances.ethx.length + return { + ethx: balances.ethx[len - 1] - balances.ethx[len - 2], + usdcx: balances.usdcx[len - 1] - balances.usdcx[len - 2], + ric: balances.ric[len - 1] - balances.ric[len - 2], + maticx: balances.maticx[len - 1] - balances.maticx[len - 2], } + } before(async () => { - const { - superfluid, - users, - accounts, - tokens, - superTokens, - contracts, - constants, - } = await setup(); - console.log("============ Right after initSuperfluid() =================="); - - const { createSFRegistrationKey } = await common(); - - u = users; - sf = superfluid; - superT = superTokens; - tokenss = tokens; - accountss = accounts; - sfRegistrationKey = createSFRegistrationKey; - constant = constants; + const { superfluid, users, accounts, tokens, superTokens, contracts, constants } = await setup() + console.log('============ Right after initSuperfluid() ==================') + + const { createSFRegistrationKey } = await common() + + u = users + sf = superfluid + superT = superTokens + tokenss = tokens + accountss = accounts + sfRegistrationKey = createSFRegistrationKey + constant = constants // This order is established in misc/setup.ts - adminSigner = accountss[0]; - aliceSigner = accountss[1]; - bobSigner = accountss[2]; - carlSigner = accountss[3]; + adminSigner = accountss[0] + aliceSigner = accountss[1] + bobSigner = accountss[2] + carlSigner = accountss[3] // karenSigner = accountss[4]; - usdcxWhaleSigner = accountss[5]; - ethxWhaleSigner = accountss[6]; - maticxWhaleSigner = accountss[7]; + usdcxWhaleSigner = accountss[5] + ethxWhaleSigner = accountss[6] + maticxWhaleSigner = accountss[7] - ricochetMATICx = superT.maticx; - ricochetUSDCx = superT.usdcx; - ricochetETHx = superT.ethx; - ricochetWBTCx = superT.wbtcx; - ricochetRIC = superT.ric; - ricochetDAIX = superT.daix; + ricochetMATICx = superT.maticx + ricochetUSDCx = superT.usdcx + ricochetETHx = superT.ethx + ricochetWBTCx = superT.wbtcx + ricochetRIC = superT.ric + ricochetDAIX = superT.daix usdcxAndItsIDAIndex = { - token: ricochetUSDCx, - IDAIndex: USDCX_SUBSCRIPTION_INDEX, + token: ricochetUSDCx, + IDAIndex: USDCX_SUBSCRIPTION_INDEX, } ethxAndItsIDAIndex = { - token: ricochetETHx, - IDAIndex: ETHX_SUBSCRIPTION_INDEX, + token: ricochetETHx, + IDAIndex: ETHX_SUBSCRIPTION_INDEX, } ricAndItsIDAIndex = { - token: ricochetRIC, - IDAIndex: RIC_SUBSCRIPTION_INDEX, + token: ricochetRIC, + IDAIndex: RIC_SUBSCRIPTION_INDEX, } // ============================================================================== - const registrationKey = await sfRegistrationKey(sf, adminSigner.address); - console.log("============ Right after sfRegistrationKey() =================="); + const registrationKey = await sfRegistrationKey(sf, adminSigner.address) + console.log('============ Right after sfRegistrationKey() ==================') - console.log("======******** List of addresses ======="); + console.log('======******** List of addresses =======') for (let i = 0; i < accountss.length; i++) { - console.log("Address number ", i, ": ", accountss[i].address); + console.log('Address number ', i, ': ', accountss[i].address) } - console.log("++++++++++++++ alice address number: ", aliceSigner.address); - console.log("++++++++++++++ bob address number: ", bobSigner.address); - console.log("++++++++++++++ carl address number: ", carlSigner.address); + console.log('++++++++++++++ alice address number: ', aliceSigner.address) + console.log('++++++++++++++ bob address number: ', bobSigner.address) + console.log('++++++++++++++ carl address number: ', carlSigner.address) - console.log("======******** List of TOKENS addresses ======="); - console.log("======** usdc's address: ", ricochetUSDCx.address); + console.log('======******** List of TOKENS addresses =======') + console.log("======** usdc's address: ", ricochetUSDCx.address) // ============================================================================== let whaleEthxBalance = await ricochetETHx.balanceOf({ - account: Constants.ETHX_SOURCE_ADDRESS, providerOrSigner: provider - }); - console.log("WHALE's Balance in ETHX: ", whaleEthxBalance); + account: Constants.ETHX_SOURCE_ADDRESS, + providerOrSigner: provider, + }) + console.log("WHALE's Balance in ETHX: ", whaleEthxBalance) // ============================================================================== // Deploy REXSuperSwap - console.log("Deploying REXSuperSwap..."); - rexSuperSwap = await ethers.getContractFactory("RexSuperSwap", { - signer: adminSigner, - }); - - const swapRouterAddress = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"; - const maticAddress = "0x3aD736904E9e65189c3000c7DD2c8AC8bB7cD4e3"; - - superSwap = await rexSuperSwap.deploy(swapRouterAddress, maticAddress); - await superSwap.deployed(); - console.log("=========== Deployed REXSuperSwap ============"); - console.log("RexSuperSwap deployed to:", superSwap.address); - - console.log("======================================================================="); - console.log("================ End of \"before\" block =============================="); - console.log("======================================================================="); + console.log('Deploying REXSuperSwap...') + rexSuperSwap = await ethers.getContractFactory('RexSuperSwap', { + signer: adminSigner, + }) + + const swapRouterAddress = '0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45' + const maticAddress = '0x3aD736904E9e65189c3000c7DD2c8AC8bB7cD4e3' + + superSwap = await rexSuperSwap.deploy(swapRouterAddress, maticAddress) + await superSwap.deployed() + console.log('=========== Deployed REXSuperSwap ============') + console.log('RexSuperSwap deployed to:', superSwap.address) + + console.log('=======================================================================') + console.log('================ End of "before" block ==============================') + console.log('=======================================================================') // Give Alice, Bob, Karen some tokens - const initialAmount = ethers.utils.parseUnits("1000", 18).toString(); + const initialAmount = ethers.utils.parseUnits('1000', 18).toString() await ricochetUSDCx - .transfer({ - receiver: aliceSigner.address, - amount: initialAmount, - }).exec(usdcxWhaleSigner); - console.log("====== Transferred to alice ======="); + .transfer({ + receiver: aliceSigner.address, + amount: initialAmount, + }) + .exec(usdcxWhaleSigner) + console.log('====== Transferred to alice =======') await ricochetETHx - .transfer({ - receiver: aliceSigner.address, - amount: ethers.utils.parseUnits("0.046", 18).toString(), - }).exec(ethxWhaleSigner); - console.log("ETH") + .transfer({ + receiver: aliceSigner.address, + amount: ethers.utils.parseUnits('0.046', 18).toString(), + }) + .exec(ethxWhaleSigner) + console.log('ETH') await ricochetRIC - .transfer({ - receiver: aliceSigner.address, - amount: '1000000000000000000000', - }).exec(adminSigner); - console.log("RIC") + .transfer({ + receiver: aliceSigner.address, + amount: '1000000000000000000000', + }) + .exec(adminSigner) + console.log('RIC') await ricochetMATICx - .transfer({ - receiver: aliceSigner.address, - amount: '1754897259852523432', - }).exec(maticxWhaleSigner); - console.log("MATIC") - console.log("====== Transferred to bob ======="); + .transfer({ + receiver: aliceSigner.address, + amount: '1754897259852523432', + }) + .exec(maticxWhaleSigner) + console.log('MATIC') + console.log('====== Transferred to bob =======') await ricochetUSDCx - .transfer({ - receiver: aliceSigner.address, - amount: initialAmount, - }).exec(usdcxWhaleSigner); - console.log("====== Transferred to karen ======="); + .transfer({ + receiver: aliceSigner.address, + amount: initialAmount, + }) + .exec(usdcxWhaleSigner) + console.log('====== Transferred to karen =======') // Take a snapshot to avoid redoing the setup - snapshot = await provider.send('evm_snapshot', []); - -}); - - - context("#1 Test swap functionality", async () => { - - it("#1.1 User can swap token maticx -> usdcx", async () => { - const from = ricochetMATICx.address - const to = ricochetUSDCx.address - const amountIn = ethers.utils.parseUnits("35", 18) - - // we should use coingecko to check the minimum amount - // const response = await axios.get('https://api.coingecko.com/api/v3/simple/price?ids='+COINGECKO_KEY+'&vs_currencies=usd'); - // const exchangeRate = response.data[COINGECKO_KEY].usd; - - const amountToSwap = 35 * 0.79; - const percentage = amountToSwap / 100 * 3; - const amount = amountToSwap - percentage; - const amountOutMin = Math.round(amount) - - const maticxAddress = superT.maticx.underlyingToken.address; - const usdcx = superT.usdcx.underlyingToken.address - const path = [maticxAddress, usdcx] - const poolFees = [500] // There is a uniswap USDC/WETH pool with 0.05% fees - - // approve token to be transferred to superSwap - await ricochetMATICx + snapshot = await provider.send('evm_snapshot', []) + }) + + context('#1 Test swap functionality', async () => { + it('#1.1 User can swap token maticx -> usdcx', async () => { + const from = ricochetMATICx.address + const to = ricochetUSDCx.address + const amountIn = ethers.utils.parseUnits('35', 18) + + // we should use coingecko to check the minimum amount + // const response = await axios.get('https://api.coingecko.com/api/v3/simple/price?ids='+COINGECKO_KEY+'&vs_currencies=usd'); + // const exchangeRate = response.data[COINGECKO_KEY].usd; + + const amountToSwap = 35 * 0.79 + const percentage = (amountToSwap / 100) * 3 + const amount = amountToSwap - percentage + const amountOutMin = Math.round(amount) + + const maticxAddress = superT.maticx.underlyingToken.address + const usdcx = superT.usdcx.underlyingToken.address + const path = [maticxAddress, usdcx] + const poolFees = [500] // There is a uniswap USDC/WETH pool with 0.05% fees + + // approve token to be transferred to superSwap + await ricochetMATICx .approve({ - receiver: superSwap.address, - amount: '35000000000000000000' - }).exec(aliceSigner); - - // call swap function - const swapTx = await superSwap.connect(aliceSigner).swap( - from, - to, - amountIn, - amountOutMin, - path, - poolFees, - true, - true - ) - - const receipt = await swapTx.wait() - let swapComplete; - - for (const event of receipt.events) { - if(event.event === "SuperSwapComplete"){ - swapComplete = event.args; - } + receiver: superSwap.address, + amount: '35000000000000000000', + }) + .exec(aliceSigner) + + // call swap function + const swapTx = await superSwap + .connect(aliceSigner) + .swap(from, to, amountIn, amountOutMin, path, poolFees, true, true) + + const receipt = await swapTx.wait() + let swapComplete + + for (const event of receipt.events) { + if (event.event === 'SuperSwapComplete') { + swapComplete = event.args } - - console.log("swap function returns amount swapped as - ", swapComplete); - - const amountSwapped = swapComplete[0] / 1e6; - expect(amountSwapped).to.be.greaterThan(amountOutMin); - - await takeMeasurements(); - console.log("aliceBalances after swap2 - ", aliceBalances); - - }); - - it("#1.2 User can swap token ethx -> usdcx", async () => { - const from = ricochetETHx.address - const to = ricochetUSDCx.address - const amountIn = ethers.utils.parseUnits("0.04", 18) - - // we should use coingecko to check the minimum amount - const response = await axios.get('https://api.coingecko.com/api/v3/simple/price?ids='+'ethereum'+'&vs_currencies=usd'); - const exchangeRate = response.data['ethereum'].usd; - - const amountToSwap = 0.04 * exchangeRate; - const percentage = amountToSwap / 100 * 3; - const amount = amountToSwap - percentage; - const amountOutMin = Math.round(amount) - - const ethxAddress = superT.ethx.underlyingToken.address; - const usdcx = superT.usdcx.underlyingToken.address - const path = [ethxAddress, usdcx] - const poolFees = [500] // There is a uniswap USDC/WETH pool with 0.05% fees - - // approve token to be transferred to superSwap - await ricochetETHx + } + + console.log('swap function returns amount swapped as - ', swapComplete) + + const amountSwapped = swapComplete[0] / 1e6 + expect(amountSwapped).to.be.greaterThan(amountOutMin) + + await takeMeasurements() + console.log('aliceBalances after swap2 - ', aliceBalances) + }) + + it('#1.2 User can swap token ethx -> usdcx', async () => { + const from = ricochetETHx.address + const to = ricochetUSDCx.address + const amountIn = ethers.utils.parseUnits('0.04', 18) + + // we should use coingecko to check the minimum amount + const response = await axios.get( + 'https://api.coingecko.com/api/v3/simple/price?ids=' + 'ethereum' + '&vs_currencies=usd' + ) + const exchangeRate = response.data['ethereum'].usd + + const amountToSwap = 0.04 * exchangeRate + const percentage = (amountToSwap / 100) * 3 + const amount = amountToSwap - percentage + const amountOutMin = Math.round(amount) + + const ethxAddress = superT.ethx.underlyingToken.address + const usdcx = superT.usdcx.underlyingToken.address + const path = [ethxAddress, usdcx] + const poolFees = [500] // There is a uniswap USDC/WETH pool with 0.05% fees + + // approve token to be transferred to superSwap + await ricochetETHx .approve({ - receiver: superSwap.address, - amount: '40000000000000000' - }).exec(aliceSigner); - - - await takeMeasurements(); - console.log("aliceBalances before swap ethx - usdcx - ", aliceBalances); - // call swap function - const swapTx = await superSwap.connect(aliceSigner).swap( - from, - to, - amountIn, - amountOutMin, - path, - poolFees, - true, - true - ) - - const receipt = await swapTx.wait() - let swapComplete; - - for (const event of receipt.events) { - if(event.event === "SuperSwapComplete"){ - swapComplete = event.args; - } + receiver: superSwap.address, + amount: '40000000000000000', + }) + .exec(aliceSigner) + + await takeMeasurements() + console.log('aliceBalances before swap ethx - usdcx - ', aliceBalances) + // call swap function + const swapTx = await superSwap + .connect(aliceSigner) + .swap(from, to, amountIn, amountOutMin, path, poolFees, true, true) + + const receipt = await swapTx.wait() + let swapComplete + + for (const event of receipt.events) { + if (event.event === 'SuperSwapComplete') { + swapComplete = event.args } - - console.log("swap function returns amount swapped as - ", swapComplete); - - const amountSwapped = swapComplete[0] / 1e6; - expect(amountSwapped).to.be.greaterThan(amountOutMin); - - await takeMeasurements(); - console.log("aliceBalances after swap ethx - usdcx- ", aliceBalances); - - }); - - it("#1.3 User can swap native token RIC -> daix", async () => { - const from = ricochetRIC.address - const to = ricochetDAIX.address - const amountIn = ethers.utils.parseUnits("170", 18) - - // hardcoding for now - const amountToSwap = 170 * 0.0000053; // how to get current exchange rate? - const percentage = amountToSwap / 100 * 3; - const amount = amountToSwap - percentage; - const amountOutMin = Math.round(amount) - - const ricAddress = superT.ric.address - const daix = superT.daix.underlyingToken.address - const path = [ricAddress, daix] - const poolFees = [500] // There is a uniswap USDC/WETH pool with 0.05% fees - - // approve token to be transferred to superSwap - await ricochetRIC + } + + console.log('swap function returns amount swapped as - ', swapComplete) + + const amountSwapped = swapComplete[0] / 1e6 + expect(amountSwapped).to.be.greaterThan(amountOutMin) + + await takeMeasurements() + console.log('aliceBalances after swap ethx - usdcx- ', aliceBalances) + }) + + it('#1.3 User can swap native token RIC -> daix', async () => { + const from = ricochetRIC.address + const to = ricochetDAIX.address + const amountIn = ethers.utils.parseUnits('170', 18) + + // hardcoding for now + const amountToSwap = 170 * 0.0000053 // how to get current exchange rate? + const percentage = (amountToSwap / 100) * 3 + const amount = amountToSwap - percentage + const amountOutMin = Math.round(amount) + + const ricAddress = superT.ric.address + const daix = superT.daix.underlyingToken.address + const path = [ricAddress, daix] + const poolFees = [500] // There is a uniswap USDC/WETH pool with 0.05% fees + + // approve token to be transferred to superSwap + await ricochetRIC .approve({ - receiver: superSwap.address, - amount: '170000000000000000000' - }).exec(aliceSigner); - - // call swap function - const swapTx = await superSwap.connect(aliceSigner).swap( - from, - to, - amountIn, - 0, - path, - poolFees, - false, - true - ) - - const receipt = await swapTx.wait() - let swapComplete; - - for (const event of receipt.events) { - if(event.event === "SuperSwapComplete"){ - swapComplete = event.args; - } + receiver: superSwap.address, + amount: '170000000000000000000', + }) + .exec(aliceSigner) + + // call swap function + const swapTx = await superSwap.connect(aliceSigner).swap(from, to, amountIn, 0, path, poolFees, false, true) + + const receipt = await swapTx.wait() + let swapComplete + + for (const event of receipt.events) { + if (event.event === 'SuperSwapComplete') { + swapComplete = event.args } - - console.log("swap function returns amount swapped as - ", swapComplete); - - const amountSwapped = swapComplete[0] / 1e18; - expect(amountSwapped).to.be.greaterThan(amountOutMin); - - await takeMeasurements(); - console.log("aliceBalances after swap2 ric - daix - ", aliceBalances); - - }); - - it("#1.4 User can swap token MATICX -> WBTCX checking decimal issue", async () => { - const from = ricochetMATICx.address - const to = ricochetWBTCx.address - const amountIn = ethers.utils.parseUnits("35", 18) - - // hardcoding for now - const amountToSwap = 35 * 0.0000382; - const percentage = amountToSwap / 100 * 3; - const amount = amountToSwap - percentage; - const amountOutMin = Math.round(amount) - - const maticxAddress = superT.maticx.underlyingToken.address; - const wbtcx = superT.wbtcx.underlyingToken.address; - - const path = [maticxAddress, wbtcx] - const poolFees = [500] // There is a uniswap USDC/WETH pool with 0.05% fees - - // approve token to be transferred to superSwap - await ricochetMATICx + } + + console.log('swap function returns amount swapped as - ', swapComplete) + + const amountSwapped = swapComplete[0] / 1e18 + expect(amountSwapped).to.be.greaterThan(amountOutMin) + + await takeMeasurements() + console.log('aliceBalances after swap2 ric - daix - ', aliceBalances) + }) + + it('#1.4 User can swap token MATICX -> WBTCX checking decimal issue', async () => { + const from = ricochetMATICx.address + const to = ricochetWBTCx.address + const amountIn = ethers.utils.parseUnits('35', 18) + + // hardcoding for now + const amountToSwap = 35 * 0.0000382 + const percentage = (amountToSwap / 100) * 3 + const amount = amountToSwap - percentage + const amountOutMin = Math.round(amount) + + const maticxAddress = superT.maticx.underlyingToken.address + const wbtcx = superT.wbtcx.underlyingToken.address + + const path = [maticxAddress, wbtcx] + const poolFees = [500] // There is a uniswap USDC/WETH pool with 0.05% fees + + // approve token to be transferred to superSwap + await ricochetMATICx .approve({ - receiver: superSwap.address, - amount: '35000000000000000000' - }).exec(aliceSigner); - - // call swap function - const swapTx = await superSwap.connect(aliceSigner).swap( - from, - to, - amountIn, - amountOutMin, - path, - poolFees, - true, - true - ) - - const receipt = await swapTx.wait() - let swapComplete; - - for (const event of receipt.events) { - if(event.event === "SuperSwapComplete"){ - swapComplete = event.args; - } + receiver: superSwap.address, + amount: '35000000000000000000', + }) + .exec(aliceSigner) + + // call swap function + const swapTx = await superSwap + .connect(aliceSigner) + .swap(from, to, amountIn, amountOutMin, path, poolFees, true, true) + + const receipt = await swapTx.wait() + let swapComplete + + for (const event of receipt.events) { + if (event.event === 'SuperSwapComplete') { + swapComplete = event.args } + } + + console.log('swap function returns amount swapped as - ', swapComplete) + + const amountSwapped = swapComplete[0] / 1e8 + console.log('amount btcx after maticx - btcx swap - ', amountSwapped) + expect(amountSwapped).to.be.greaterThan(amountOutMin) - - console.log("swap function returns amount swapped as - ", swapComplete); - - const amountSwapped = swapComplete[0] / 1e8; - console.log("amount btcx after maticx - btcx swap - ", amountSwapped); - expect(amountSwapped).to.be.greaterThan(amountOutMin); - - await takeMeasurements(); - console.log("aliceBalances after swap2 maticx - btcx - ", aliceBalances); - - }); - - it("#1.5 User can swap native token RIC -> maticx", async () => { - const from = ricochetRIC.address - const to = ricochetMATICx.address - const amountIn = ethers.utils.parseUnits("170", 18) - - // hardcoding for now - const amountToSwap = 170 * 0.0000053; // how to get current exchange rate? - const percentage = amountToSwap / 100 * 3; - const amount = amountToSwap - percentage; - const amountOutMin = Math.round(amount) - - const ricAddress = superT.ric.address - console.log("ric address check - ", ricAddress) - const maticxAddress = superT.maticx.underlyingToken.address; - const path = [ricAddress, maticxAddress] - const poolFees = [500] // There is a uniswap USDC/WETH pool with 0.05% fees - - await takeMeasurements(); - console.log("aliceBalances before swap2 ric - maticx - ", aliceBalances); - - // approve token to be transferred to superSwap - await ricochetRIC + await takeMeasurements() + console.log('aliceBalances after swap2 maticx - btcx - ', aliceBalances) + }) + + it('#1.5 User can swap native token RIC -> maticx', async () => { + const from = ricochetRIC.address + const to = ricochetMATICx.address + const amountIn = ethers.utils.parseUnits('170', 18) + + // hardcoding for now + const amountToSwap = 170 * 0.0000053 // how to get current exchange rate? + const percentage = (amountToSwap / 100) * 3 + const amount = amountToSwap - percentage + const amountOutMin = Math.round(amount) + + const ricAddress = superT.ric.address + console.log('ric address check - ', ricAddress) + const maticxAddress = superT.maticx.underlyingToken.address + const path = [ricAddress, maticxAddress] + const poolFees = [500] // There is a uniswap USDC/WETH pool with 0.05% fees + + await takeMeasurements() + console.log('aliceBalances before swap2 ric - maticx - ', aliceBalances) + + // approve token to be transferred to superSwap + await ricochetRIC .approve({ - receiver: superSwap.address, - amount: '170000000000000000000' - }).exec(aliceSigner); - - // call swap function - const swapTx = await superSwap.connect(aliceSigner).swap( - from, - to, - amountIn, - 0, - path, - poolFees, - false, - true - ) - - const receipt = await swapTx.wait() - let swapComplete; - - for (const event of receipt.events) { - if(event.event === "SuperSwapComplete"){ - swapComplete = event.args; - } + receiver: superSwap.address, + amount: '170000000000000000000', + }) + .exec(aliceSigner) + + // call swap function + const swapTx = await superSwap.connect(aliceSigner).swap(from, to, amountIn, 0, path, poolFees, false, true) + + const receipt = await swapTx.wait() + let swapComplete + + for (const event of receipt.events) { + if (event.event === 'SuperSwapComplete') { + swapComplete = event.args } - - console.log("swap function returns amount swapped as - ", swapComplete); - - const amountSwapped = swapComplete[0] / 1e18; - expect(amountSwapped).to.be.greaterThan(amountOutMin); - - await takeMeasurements(); - console.log("aliceBalances after swap2 ric - maticx - ", aliceBalances); - - }); - - it("#1.6 User can swap large amount of token USDCX -> WBTCX", async () => { - const from = ricochetUSDCx.address - const to = ricochetWBTCx.address - const amountIn = ethers.utils.parseUnits("200", 18) - console.log("Amount in for USDCX - ", amountIn) - // hardcoding for now - const amountToSwap = 200 * 0.000050; - const percentage = amountToSwap / 100 * 3; - const amount = amountToSwap - percentage; - const amountOutMin = Math.round(amount) - - const wbtcx = superT.wbtcx.underlyingToken.address; - const usdcx = superT.usdcx.underlyingToken.address - - const path = [usdcx, wbtcx] - const poolFees = [500] // There is a uniswap USDC/WETH pool with 0.05% fees - - // approve token to be transferred to superSwap - await ricochetUSDCx + } + + console.log('swap function returns amount swapped as - ', swapComplete) + + const amountSwapped = swapComplete[0] / 1e18 + expect(amountSwapped).to.be.greaterThan(amountOutMin) + + await takeMeasurements() + console.log('aliceBalances after swap2 ric - maticx - ', aliceBalances) + }) + + it('#1.6 User can swap large amount of token USDCX -> WBTCX', async () => { + const from = ricochetUSDCx.address + const to = ricochetWBTCx.address + const amountIn = ethers.utils.parseUnits('200', 18) + console.log('Amount in for USDCX - ', amountIn) + // hardcoding for now + const amountToSwap = 200 * 0.00005 + const percentage = (amountToSwap / 100) * 3 + const amount = amountToSwap - percentage + const amountOutMin = Math.round(amount) + + const wbtcx = superT.wbtcx.underlyingToken.address + const usdcx = superT.usdcx.underlyingToken.address + + const path = [usdcx, wbtcx] + const poolFees = [500] // There is a uniswap USDC/WETH pool with 0.05% fees + + // approve token to be transferred to superSwap + await ricochetUSDCx .approve({ - receiver: superSwap.address, - amount: '200000000000000000000' - }).exec(aliceSigner); - - // call swap function - const swapTx = await superSwap.connect(aliceSigner).swap( - from, - to, - amountIn, - amountOutMin, - path, - poolFees, - true, - true - ) - - const receipt = await swapTx.wait() - let swapComplete; - - for (const event of receipt.events) { - if(event.event === "SuperSwapComplete"){ - swapComplete = event.args; - } + receiver: superSwap.address, + amount: '200000000000000000000', + }) + .exec(aliceSigner) + + // call swap function + const swapTx = await superSwap + .connect(aliceSigner) + .swap(from, to, amountIn, amountOutMin, path, poolFees, true, true) + + const receipt = await swapTx.wait() + let swapComplete + + for (const event of receipt.events) { + if (event.event === 'SuperSwapComplete') { + swapComplete = event.args } - - console.log("swap function returns amount swapped as - ", swapComplete); - - const amountSwapped = swapComplete[0] / 1e8; - expect(amountSwapped).to.be.greaterThan(amountOutMin); - - await takeMeasurements(); - console.log("aliceBalances after swap2 usdcx - wbtcx - ", aliceBalances); - - }); - - it("#1.7 User can swap small amount of token WBTCX -> USDCX", async () => { - const from = ricochetWBTCx.address - const to = ricochetUSDCx.address - const amountIn = ethers.utils.parseUnits("0.01", 18) - console.log("Amount in for wbtcx - ", amountIn) - // hardcoding for now - const amountToSwap = 0.01 * 19939.61; - const percentage = amountToSwap / 100 * 3; - const amount = amountToSwap - percentage; - const amountOutMin = Math.round(amount) - - const wbtcx = superT.wbtcx.underlyingToken.address; - const usdcx = superT.usdcx.underlyingToken.address - - const path = [wbtcx, usdcx] - const poolFees = [500] // There is a uniswap USDC/WETH pool with 0.05% fees - - // approve token to be transferred to superSwap - await ricochetWBTCx + } + + console.log('swap function returns amount swapped as - ', swapComplete) + + const amountSwapped = swapComplete[0] / 1e8 + expect(amountSwapped).to.be.greaterThan(amountOutMin) + + await takeMeasurements() + console.log('aliceBalances after swap2 usdcx - wbtcx - ', aliceBalances) + }) + + it('#1.7 User can swap small amount of token WBTCX -> USDCX', async () => { + const from = ricochetWBTCx.address + const to = ricochetUSDCx.address + const amountIn = ethers.utils.parseUnits('0.01', 18) + console.log('Amount in for wbtcx - ', amountIn) + // hardcoding for now + const amountToSwap = 0.01 * 19939.61 + const percentage = (amountToSwap / 100) * 3 + const amount = amountToSwap - percentage + const amountOutMin = Math.round(amount) + + const wbtcx = superT.wbtcx.underlyingToken.address + const usdcx = superT.usdcx.underlyingToken.address + + const path = [wbtcx, usdcx] + const poolFees = [500] // There is a uniswap USDC/WETH pool with 0.05% fees + + // approve token to be transferred to superSwap + await ricochetWBTCx .approve({ - receiver: superSwap.address, - amount: '10000000000000000' - }).exec(aliceSigner); - - await takeMeasurements(); - console.log("aliceBalances before swap2 wbtcx - usdcx - ", aliceBalances); - - // call swap function - const swapTx = await superSwap.connect(aliceSigner).swap( - from, - to, - amountIn, - amountOutMin, - path, - poolFees, - true, - true - ) - - const receipt = await swapTx.wait() - let swapComplete; - - for (const event of receipt.events) { - if(event.event === "SuperSwapComplete"){ - swapComplete = event.args; - } + receiver: superSwap.address, + amount: '10000000000000000', + }) + .exec(aliceSigner) + + await takeMeasurements() + console.log('aliceBalances before swap2 wbtcx - usdcx - ', aliceBalances) + + // call swap function + const swapTx = await superSwap + .connect(aliceSigner) + .swap(from, to, amountIn, amountOutMin, path, poolFees, true, true) + + const receipt = await swapTx.wait() + let swapComplete + + for (const event of receipt.events) { + if (event.event === 'SuperSwapComplete') { + swapComplete = event.args } - - const amountSwapped = swapComplete[0] / 1e6; - expect(amountSwapped).to.be.greaterThan(amountOutMin); - - await takeMeasurements(); - console.log("aliceBalances after swap2 wbtcx - usdcx - ", aliceBalances); - - }); - - it("#1.8 User can swap USDCX -> MATICX", async () => { - const from = ricochetUSDCx.address - const to = ricochetMATICx.address - const amountIn = ethers.utils.parseUnits("1", 18) - console.log("Amount in for USDCX - ", amountIn) - // hardcoding for now - const amountToSwap = 1 * 1.19; - const percentage = amountToSwap / 100 * 3; - const amount = amountToSwap - percentage; - const amountOutMin = Math.round(amount) - - const usdcx = superT.usdcx.underlyingToken.address - const maticxAddress = superT.maticx.underlyingToken.address; - - const path = [usdcx, maticxAddress] - const poolFees = [500] // There is a uniswap USDC/WETH pool with 0.05% fees - - // approve token to be transferred to superSwap - await ricochetUSDCx + } + + const amountSwapped = swapComplete[0] / 1e6 + expect(amountSwapped).to.be.greaterThan(amountOutMin) + + await takeMeasurements() + console.log('aliceBalances after swap2 wbtcx - usdcx - ', aliceBalances) + }) + + it('#1.8 User can swap USDCX -> MATICX', async () => { + const from = ricochetUSDCx.address + const to = ricochetMATICx.address + const amountIn = ethers.utils.parseUnits('1', 18) + console.log('Amount in for USDCX - ', amountIn) + // hardcoding for now + const amountToSwap = 1 * 1.19 + const percentage = (amountToSwap / 100) * 3 + const amount = amountToSwap - percentage + const amountOutMin = Math.round(amount) + + const usdcx = superT.usdcx.underlyingToken.address + const maticxAddress = superT.maticx.underlyingToken.address + + const path = [usdcx, maticxAddress] + const poolFees = [500] // There is a uniswap USDC/WETH pool with 0.05% fees + + // approve token to be transferred to superSwap + await ricochetUSDCx .approve({ - receiver: superSwap.address, - amount: '1000000000000000000' - }).exec(aliceSigner); - - await takeMeasurements(); - console.log("Checking if RIC was refunded when swap fails - ", aliceBalances); - - // call swap function - const swapTx = await superSwap.connect(aliceSigner).swap( - from, - to, - amountIn, - amountOutMin, - path, - poolFees, - true, - true - ) - - const receipt = await swapTx.wait() - let swapComplete; - - for (const event of receipt.events) { - if(event.event === "SuperSwapComplete"){ - swapComplete = event.args; - } + receiver: superSwap.address, + amount: '1000000000000000000', + }) + .exec(aliceSigner) + + await takeMeasurements() + console.log('Checking if RIC was refunded when swap fails - ', aliceBalances) + + // call swap function + const swapTx = await superSwap + .connect(aliceSigner) + .swap(from, to, amountIn, amountOutMin, path, poolFees, true, true) + + const receipt = await swapTx.wait() + let swapComplete + + for (const event of receipt.events) { + if (event.event === 'SuperSwapComplete') { + swapComplete = event.args } + } + + console.log('swap function returns amount swapped as - ', swapComplete) + await takeMeasurements() + console.log('aliceBalances after swap usdcx - wbtcx - ', aliceBalances) + + const amountSwapped = swapComplete[0] / 1e8 + expect(amountSwapped).to.be.greaterThan(amountOutMin) + }) + + it('#1.1 User can swap token maticx -> usdcx (small amount)', async () => { + const from = ricochetMATICx.address + const to = ricochetUSDCx.address + const amountIn = ethers.utils.parseUnits('1.3', 18) + + // we should use coingecko to check the minimum amount + // const response = await axios.get('https://api.coingecko.com/api/v3/simple/price?ids='+COINGECKO_KEY+'&vs_currencies=usd'); + // const exchangeRate = response.data[COINGECKO_KEY].usd; + + const amountToSwap = 1.3 * 0.79 + const percentage = (amountToSwap / 100) * 3 + const amount = amountToSwap - percentage + const amountOutMin = Math.round(amount) + + const maticxAddress = superT.maticx.underlyingToken.address + const usdcx = superT.usdcx.underlyingToken.address + const path = [maticxAddress, usdcx] + const poolFees = [500] // There is a uniswap USDC/WETH pool with 0.05% fees - console.log("swap function returns amount swapped as - ", swapComplete); - await takeMeasurements(); - console.log("aliceBalances after swap usdcx - wbtcx - ", aliceBalances); - - const amountSwapped = swapComplete[0] / 1e8; - expect(amountSwapped).to.be.greaterThan(amountOutMin); - - }); - - it("#1.1 User can swap token maticx -> usdcx (small amount)", async () => { - const from = ricochetMATICx.address - const to = ricochetUSDCx.address - const amountIn = ethers.utils.parseUnits("1.3", 18) - - // we should use coingecko to check the minimum amount - // const response = await axios.get('https://api.coingecko.com/api/v3/simple/price?ids='+COINGECKO_KEY+'&vs_currencies=usd'); - // const exchangeRate = response.data[COINGECKO_KEY].usd; - - const amountToSwap = 1.3 * 0.79; - const percentage = amountToSwap / 100 * 3; - const amount = amountToSwap - percentage; - const amountOutMin = Math.round(amount) - - const maticxAddress = superT.maticx.underlyingToken.address; - const usdcx = superT.usdcx.underlyingToken.address - const path = [maticxAddress, usdcx] - const poolFees = [500] // There is a uniswap USDC/WETH pool with 0.05% fees - - // approve token to be transferred to superSwap - await ricochetMATICx + // approve token to be transferred to superSwap + await ricochetMATICx .approve({ - receiver: superSwap.address, - amount: '1300000000000000000' - }).exec(aliceSigner); - - // call swap function - const swapTx = await superSwap.connect(aliceSigner).swap( - from, - to, - amountIn, - amountOutMin, - path, - poolFees, - true, - true - ) - - const receipt = await swapTx.wait() - let swapComplete; - - for (const event of receipt.events) { - if(event.event === "SuperSwapComplete"){ - swapComplete = event.args; - } + receiver: superSwap.address, + amount: '1300000000000000000', + }) + .exec(aliceSigner) + + // call swap function + const swapTx = await superSwap + .connect(aliceSigner) + .swap(from, to, amountIn, amountOutMin, path, poolFees, true, true) + + const receipt = await swapTx.wait() + let swapComplete + + for (const event of receipt.events) { + if (event.event === 'SuperSwapComplete') { + swapComplete = event.args } - - console.log("swap function returns amount swapped as - ", swapComplete); - - const amountSwapped = swapComplete[0] / 1e6; - expect(amountSwapped).to.be.greaterThan(amountOutMin); + } - await takeMeasurements(); - console.log("aliceBalances after swap2 - ", aliceBalances); - - }); + console.log('swap function returns amount swapped as - ', swapComplete) - }); + const amountSwapped = swapComplete[0] / 1e6 + expect(amountSwapped).to.be.greaterThan(amountOutMin) -}) \ No newline at end of file + await takeMeasurements() + console.log('aliceBalances after swap2 - ', aliceBalances) + }) + }) +}) diff --git a/test/REXTwoWayAlluoMarket.test.ts b/test/REXTwoWayAlluoMarket.test.ts index 6fc1311..3db31ff 100644 --- a/test/REXTwoWayAlluoMarket.test.ts +++ b/test/REXTwoWayAlluoMarket.test.ts @@ -1,906 +1,948 @@ -import { waffle, ethers } from "hardhat"; -import { setup, IUser, ISuperToken } from "../misc/setup"; -import { common } from "../misc/common"; -import { expect } from "chai"; -import { HttpService } from "./../misc/HttpService"; -import { Framework, SuperToken } from "@superfluid-finance/sdk-core"; -import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; -import { REXTwoWayAlluoMarket, REXReferral, ERC20, REXReferral__factory, IConstantFlowAgreementV1 } from "../typechain"; -import { increaseTime, impersonateAndSetBalance } from "./../misc/helpers"; -import { Constants } from "../misc/Constants"; -import { AbiCoder, parseUnits } from "ethers/lib/utils"; - -const { provider, loadFixture } = waffle; -const TEST_TRAVEL_TIME = 3600 * 2; // 2 hours +import { waffle, ethers } from 'hardhat' +import { setup, IUser, ISuperToken } from '../misc/setup' +import { common } from '../misc/common' +import { expect } from 'chai' +import { HttpService } from './../misc/HttpService' +import { Framework, SuperToken } from '@superfluid-finance/sdk-core' +import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' +import { REXTwoWayAlluoMarket, REXReferral, ERC20, REXReferral__factory, IConstantFlowAgreementV1 } from '../typechain' +import { increaseTime, impersonateAndSetBalance } from './../misc/helpers' +import { Constants } from '../misc/Constants' +import { AbiCoder, parseUnits } from 'ethers/lib/utils' + +const { provider, loadFixture } = waffle +const TEST_TRAVEL_TIME = 3600 * 2 // 2 hours // Index 1 is for Ether and 0 for USDCx -const USDCX_SUBSCRIPTION_INDEX = 0; -const ETHX_SUBSCRIPTION_INDEX = 1; -const RIC_SUBSCRIPTION_INDEX = 2; +const USDCX_SUBSCRIPTION_INDEX = 0 +const ETHX_SUBSCRIPTION_INDEX = 1 +const RIC_SUBSCRIPTION_INDEX = 2 export interface superTokenAndItsIDAIndex { - token: SuperToken; - IDAIndex: number; + token: SuperToken + IDAIndex: number } describe('REXTwoWayAlluoMarket', () => { - const errorHandler = (err: any) => { - if (err) throw err; - }; - - const overrides = { gasLimit: '6000000' }; // Using this to manually limit gas to avoid giga-errors. - const inflowRateUsdc = "1000000000000000"; - const inflowRateUsdcDeposit = "4000000000000000" - const inflowRateUsdc10x = "10000000000000000"; - const inflowRateEth = "1000000000000"; - const inflowRateEthHalf = "500000000000"; - const subsidyRate = "10000000000000"; - - let rexReferral: REXReferral__factory; - let REXMarketFactory: any; - let referral: any; - let snapshot: any; - - let adminSigner: SignerWithAddress; - let aliceSigner: SignerWithAddress; - let bobSigner: SignerWithAddress; - let carlSigner: SignerWithAddress; - let usdcxWhaleSigner: SignerWithAddress; - let ethxWhaleSigner: SignerWithAddress; - let maticxWhaleSigner: SignerWithAddress; - let stIbAlluoUSDWhaleSigner: SignerWithAddress; - let stIbAlluoETHWhaleSigner: SignerWithAddress; - let karenSigner: SignerWithAddress; - - let oraclePrice: number; - - let appBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [], maticx: [] }; - let ownerBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [], maticx: [] }; - let aliceBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [], maticx: [] }; - let bobBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [], maticx: [] }; - let carlBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [], maticx: [] }; - let karenBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [], maticx: [] }; - - let sf: Framework, - superT: ISuperToken, - u: { [key: string]: IUser }, - twoWayMarket: REXTwoWayAlluoMarket, - tokenss: { [key: string]: any }, - sfRegistrationKey: any, - accountss: SignerWithAddress[], - constant: { [key: string]: string }, - ERC20: any; - - // ************** All the supertokens used in Ricochet are declared ********************** - let stIbAlluoUSD: SuperToken; - let stIbAlluoETH: SuperToken; - let ricochetRIC: SuperToken; - let ricochetETHx: SuperToken; - let ricochetETH: SuperToken; - let ibAlluoUSD: any; - let ibAlluoETH: any; - let weth: any; - - let usdcxAndItsIDAIndex: superTokenAndItsIDAIndex; - let ethxAndItsIDAIndex: superTokenAndItsIDAIndex; - let ricAndItsIDAIndex: superTokenAndItsIDAIndex; - let ricAndItsOtherIDAIndex: superTokenAndItsIDAIndex; - - // *************************************************************************************** - - async function takeMeasurements(balances: SuperTokensBalances, signer: SignerWithAddress): Promise { - - appBalances.stIbAlluoUSD.push((await superT.stIbAlluoUSD.balanceOf({ account: twoWayMarket.address, providerOrSigner: provider })).toString()); - ownerBalances.stIbAlluoUSD.push((await superT.stIbAlluoUSD.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString()); - aliceBalances.stIbAlluoUSD.push((await superT.stIbAlluoUSD.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - carlBalances.stIbAlluoUSD.push((await superT.stIbAlluoUSD.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString()); - karenBalances.stIbAlluoUSD.push((await superT.stIbAlluoUSD.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); - bobBalances.stIbAlluoUSD.push((await superT.stIbAlluoUSD.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString()); - - appBalances.stIbAlluoETH.push((await superT.stIbAlluoETH.balanceOf({ account: twoWayMarket.address, providerOrSigner: provider })).toString()); - ownerBalances.stIbAlluoETH.push((await superT.stIbAlluoETH.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString()); - aliceBalances.stIbAlluoETH.push((await superT.stIbAlluoETH.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - carlBalances.stIbAlluoETH.push((await superT.stIbAlluoETH.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString()); - karenBalances.stIbAlluoETH.push((await superT.stIbAlluoETH.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); - bobBalances.stIbAlluoETH.push((await superT.stIbAlluoETH.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString()); - - appBalances.ric.push((await superT.ric.balanceOf({ account: twoWayMarket.address, providerOrSigner: provider })).toString()); - ownerBalances.ric.push((await superT.ric.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString()); - aliceBalances.ric.push((await superT.ric.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - carlBalances.ric.push((await superT.ric.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString()); - karenBalances.ric.push((await superT.ric.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); - bobBalances.ric.push((await superT.ric.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString()); + const errorHandler = (err: any) => { + if (err) throw err + } + + const overrides = { gasLimit: '6000000' } // Using this to manually limit gas to avoid giga-errors. + const inflowRateUsdc = '1000000000000000' + const inflowRateUsdcDeposit = '4000000000000000' + const inflowRateUsdc10x = '10000000000000000' + const inflowRateEth = '1000000000000' + const inflowRateEthHalf = '500000000000' + const subsidyRate = '10000000000000' + + let rexReferral: REXReferral__factory + let REXMarketFactory: any + let referral: any + let snapshot: any + + let adminSigner: SignerWithAddress + let aliceSigner: SignerWithAddress + let bobSigner: SignerWithAddress + let carlSigner: SignerWithAddress + let usdcxWhaleSigner: SignerWithAddress + let ethxWhaleSigner: SignerWithAddress + let maticxWhaleSigner: SignerWithAddress + let stIbAlluoUSDWhaleSigner: SignerWithAddress + let stIbAlluoETHWhaleSigner: SignerWithAddress + let karenSigner: SignerWithAddress + + let oraclePrice: number + + let appBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [], maticx: [] } + let ownerBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [], maticx: [] } + let aliceBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [], maticx: [] } + let bobBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [], maticx: [] } + let carlBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [], maticx: [] } + let karenBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [], maticx: [] } + + let sf: Framework, + superT: ISuperToken, + u: { [key: string]: IUser }, + twoWayMarket: REXTwoWayAlluoMarket, + tokenss: { [key: string]: any }, + sfRegistrationKey: any, + accountss: SignerWithAddress[], + constant: { [key: string]: string }, + ERC20: any + + // ************** All the supertokens used in Ricochet are declared ********************** + let stIbAlluoUSD: SuperToken + let stIbAlluoETH: SuperToken + let ricochetRIC: SuperToken + let ricochetETHx: SuperToken + let ricochetETH: SuperToken + let ibAlluoUSD: any + let ibAlluoETH: any + let weth: any + + let usdcxAndItsIDAIndex: superTokenAndItsIDAIndex + let ethxAndItsIDAIndex: superTokenAndItsIDAIndex + let ricAndItsIDAIndex: superTokenAndItsIDAIndex + let ricAndItsOtherIDAIndex: superTokenAndItsIDAIndex + + // *************************************************************************************** + + async function takeMeasurements(balances: SuperTokensBalances, signer: SignerWithAddress): Promise { + appBalances.stIbAlluoUSD.push( + (await superT.stIbAlluoUSD.balanceOf({ account: twoWayMarket.address, providerOrSigner: provider })).toString() + ) + ownerBalances.stIbAlluoUSD.push( + (await superT.stIbAlluoUSD.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString() + ) + aliceBalances.stIbAlluoUSD.push( + (await superT.stIbAlluoUSD.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + carlBalances.stIbAlluoUSD.push( + (await superT.stIbAlluoUSD.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString() + ) + karenBalances.stIbAlluoUSD.push( + (await superT.stIbAlluoUSD.balanceOf({ account: u.karen.address, providerOrSigner: provider })).toString() + ) + bobBalances.stIbAlluoUSD.push( + (await superT.stIbAlluoUSD.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString() + ) + + appBalances.stIbAlluoETH.push( + (await superT.stIbAlluoETH.balanceOf({ account: twoWayMarket.address, providerOrSigner: provider })).toString() + ) + ownerBalances.stIbAlluoETH.push( + (await superT.stIbAlluoETH.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString() + ) + aliceBalances.stIbAlluoETH.push( + (await superT.stIbAlluoETH.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + carlBalances.stIbAlluoETH.push( + (await superT.stIbAlluoETH.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString() + ) + karenBalances.stIbAlluoETH.push( + (await superT.stIbAlluoETH.balanceOf({ account: u.karen.address, providerOrSigner: provider })).toString() + ) + bobBalances.stIbAlluoETH.push( + (await superT.stIbAlluoETH.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString() + ) + + appBalances.ric.push( + (await superT.ric.balanceOf({ account: twoWayMarket.address, providerOrSigner: provider })).toString() + ) + ownerBalances.ric.push( + (await superT.ric.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString() + ) + aliceBalances.ric.push( + (await superT.ric.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + carlBalances.ric.push( + (await superT.ric.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString() + ) + karenBalances.ric.push( + (await superT.ric.balanceOf({ account: u.karen.address, providerOrSigner: provider })).toString() + ) + bobBalances.ric.push( + (await superT.ric.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString() + ) + } + + async function resetMeasurements(): Promise { + appBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [] } + ownerBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [] } + aliceBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [] } + bobBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [] } + carlBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [] } + karenBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [] } + } + + async function approveSubscriptions(tokensAndIDAIndexes: superTokenAndItsIDAIndex[], signers: SignerWithAddress[]) { + console.log(' ======== Inside approveSubscriptions ===========') + let tokenIndex: number + for (let i = 0; i < signers.length; i++) { + for (let j = 0; j < tokensAndIDAIndexes.length; j++) { + tokenIndex = tokensAndIDAIndexes[j].IDAIndex + await sf.idaV1 + .approveSubscription({ + indexId: tokenIndex.toString(), + superToken: tokensAndIDAIndexes[j].token.address, + publisher: twoWayMarket.address, + userData: '0x', + }) + .exec(signers[i]) + console.log('====== ', i, ' subscription to token ', j, ' approved =======') + } } - - async function resetMeasurements(): Promise { - appBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [] }; - ownerBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [] }; - aliceBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [] }; - bobBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [] }; - carlBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [] }; - karenBalances = { stIbAlluoUSD: [], stIbAlluoETH: [], ric: [] }; + } + + async function checkBalance(user: SignerWithAddress, name: string) { + console.log(' checkBalance START ======== Balance of ', name, ' with address: ', user.address, ' ============= ') + let balanceEthx = await stIbAlluoETH.balanceOf({ + account: user.address, + providerOrSigner: provider, + }) + let balanceUsdcx = await stIbAlluoUSD.balanceOf({ + account: user.address, + providerOrSigner: provider, + }) + let balanceRic = await ricochetRIC.balanceOf({ + account: user.address, + providerOrSigner: provider, + }) + + console.log('Balance in stIbAlluoETH: ', balanceEthx) + console.log('Balance in stIbAlluoUSD: ', balanceUsdcx) + console.log('Balance in RIC: ', balanceRic) + console.log(' checkBalance END ====================================================== ') + } + + async function delta(account: SignerWithAddress, balances: any) { + const len = balances.stIbAlluoETH.length + return { + stIbAlluoETH: balances.stIbAlluoETH[len - 1] - balances.stIbAlluoETH[len - 2], + stIbAlluoUSD: balances.stIbAlluoUSD[len - 1] - balances.stIbAlluoUSD[len - 2], + ric: balances.ric[len - 1] - balances.ric[len - 2], } - - async function approveSubscriptions(tokensAndIDAIndexes: superTokenAndItsIDAIndex[], signers: SignerWithAddress[]) { - console.log(" ======== Inside approveSubscriptions ==========="); - let tokenIndex: number; - for (let i = 0; i < signers.length; i++) { - for (let j = 0; j < tokensAndIDAIndexes.length; j++) { - tokenIndex = tokensAndIDAIndexes[j].IDAIndex; - await sf.idaV1 - .approveSubscription({ - indexId: tokenIndex.toString(), - superToken: tokensAndIDAIndexes[j].token.address, - publisher: twoWayMarket.address, - userData: "0x", - }) - .exec(signers[i]); - console.log("====== ", i, " subscription to token ", j, " approved ======="); - } - } + } + + before(async () => { + hre.tracer.enable = false + const { superfluid, users, accounts, tokens, superTokens, contracts, constants } = await setup() + console.log('============ Right after initSuperfluid() ==================') + + const { createSFRegistrationKey } = await common() + + u = users + sf = superfluid + superT = superTokens + tokenss = tokens + accountss = accounts + sfRegistrationKey = createSFRegistrationKey + constant = constants + + // This order is established in misc/setup.ts + adminSigner = accountss[0] + aliceSigner = accountss[1] + bobSigner = accountss[2] + carlSigner = accountss[3] + karenSigner = accountss[4] + ethxWhaleSigner = accountss[6] + stIbAlluoUSDWhaleSigner = accountss[8] + stIbAlluoETHWhaleSigner = accountss[9] + + ricochetRIC = superT.ric + stIbAlluoUSD = superT.stIbAlluoUSD + stIbAlluoETH = superT.stIbAlluoETH + ricochetETHx = superT.ethx + + weth = tokenss.weth + ibAlluoUSD = tokenss.ibAlluoUSD + ibAlluoETH = tokenss.ibAlluoETH + + usdcxAndItsIDAIndex = { + token: stIbAlluoUSD, + IDAIndex: USDCX_SUBSCRIPTION_INDEX, } - - async function checkBalance(user: SignerWithAddress, name: string) { - console.log(" checkBalance START ======== Balance of ", name, " with address: ", user.address, " ============= "); - let balanceEthx = await stIbAlluoETH.balanceOf({ - account: user.address, providerOrSigner: provider - }); - let balanceUsdcx = await stIbAlluoUSD.balanceOf({ - account: user.address, providerOrSigner: provider - }); - let balanceRic = await ricochetRIC.balanceOf({ - account: user.address, providerOrSigner: provider - }); - - console.log("Balance in stIbAlluoETH: ", balanceEthx); - console.log("Balance in stIbAlluoUSD: ", balanceUsdcx); - console.log("Balance in RIC: ", balanceRic); - console.log(" checkBalance END ====================================================== "); + ethxAndItsIDAIndex = { + token: stIbAlluoETH, + IDAIndex: ETHX_SUBSCRIPTION_INDEX, } - - async function delta(account: SignerWithAddress, balances: any) { - const len = balances.stIbAlluoETH.length; - return { - stIbAlluoETH: balances.stIbAlluoETH[len - 1] - balances.stIbAlluoETH[len - 2], - stIbAlluoUSD: balances.stIbAlluoUSD[len - 1] - balances.stIbAlluoUSD[len - 2], - ric: balances.ric[len - 1] - balances.ric[len - 2], - } + ricAndItsIDAIndex = { + token: ricochetRIC, + IDAIndex: RIC_SUBSCRIPTION_INDEX, + } + ricAndItsOtherIDAIndex = { + token: ricochetRIC, + IDAIndex: 3, } + console.log('======******** List of addresses =======') + for (let i = 0; i < accountss.length; i++) { + console.log('Address number ', i, ': ', accountss[i].address) + } + console.log('++++++++++++++ alice address number: ', aliceSigner.address) + console.log('++++++++++++++ bob address number: ', bobSigner.address) + console.log('++++++++++++++ carl address number: ', carlSigner.address) + + console.log('======******** List of TOKENS addresses =======') + console.log("======** stIbAlluoUSD's address: ", stIbAlluoUSD.address) + console.log("======** stIbAlluoETH's address: ", stIbAlluoETH.address) + // ============================================================================== + + // Deploy REXReferral + rexReferral = await ethers.getContractFactory('REXReferral', { + signer: adminSigner, + }) + referral = await rexReferral.deploy() + await referral.deployed() + console.log('=========== Deployed REXReferral ============') + + // ============================================================================== + const registrationKey = await sfRegistrationKey(sf, adminSigner.address) + console.log('============ Right after sfRegistrationKey() ==================') + + // ============== + // Deploy REX Market + console.log('Deploying REXTwoWayMarket...') + REXMarketFactory = await ethers.getContractFactory('REXTwoWayAlluoMarket', adminSigner) + console.log('admin signer address:', adminSigner.address) + twoWayMarket = await REXMarketFactory.deploy( + adminSigner.address, + sf.settings.config.hostAddress, + Constants.CFA_SUPERFLUID_ADDRESS, + Constants.IDA_SUPERFLUID_ADDRESS, + registrationKey, + referral.address + ) + console.log('=========== Deployed REXTwoWayAlluoMarket ============') + + console.log('initializeTwoWayMarket', stIbAlluoUSD.address, stIbAlluoETH.address) + await twoWayMarket.initializeTwoWayMarket(stIbAlluoUSD.address, 1e7, stIbAlluoETH.address, 1e9, 5000, 20000) + console.log('=========== Initialized TwoWayMarket ============') + + await twoWayMarket.initializeSubsidies(subsidyRate, ricochetRIC.address) + console.log('========== Initialized subsidies ===========') + + await checkBalance(stIbAlluoUSDWhaleSigner, 'the stIbAlluoUSD whale') + await checkBalance(stIbAlluoETHWhaleSigner, 'the stIbAlluoETH whale') + // send the contract some RIC + try { + await ricochetRIC + .transfer({ + receiver: twoWayMarket.address, + amount: '1000000000000000000', + }) + .exec(adminSigner) + } catch (err: any) { + console.log('Ricochet - ERROR transferring RICs to the contract: ', err) + } + console.log('============ RICs have been sent to the contract =============') + await checkBalance(adminSigner, 'the contract') + + // Register the market with REXReferral + await referral.registerApp(twoWayMarket.address) + referral = await referral.connect(carlSigner) + await referral.applyForAffiliate('carl', 'carl') + referral = await referral.connect(adminSigner) + await referral.verifyAffiliate('carl') + console.log(' ============ The affiliate has been veryfied =============') + console.log('=======================================================================') + console.log('================ End of "before" block ==============================') + console.log('=======================================================================') + + // Do all the approvals + // TODO: Redo how indexes are setup + await approveSubscriptions( + [usdcxAndItsIDAIndex, ethxAndItsIDAIndex, ricAndItsIDAIndex, ricAndItsOtherIDAIndex], + [adminSigner, aliceSigner, bobSigner, karenSigner, carlSigner] + ) + + // Give Alice, Bob, Karen some tokens + console.log(ethxWhaleSigner.address) + + let initialAmount = ethers.utils.parseUnits('1000', 18).toString() + + await stIbAlluoUSD + .transfer({ + receiver: aliceSigner.address, + amount: initialAmount, + }) + .exec(stIbAlluoUSDWhaleSigner) + console.log('====== Transferred to alice =======') + await stIbAlluoETH + .transfer({ + receiver: bobSigner.address, + amount: ethers.utils.parseUnits('0.018', 18).toString(), + }) + .exec(stIbAlluoETHWhaleSigner) + console.log('ETH') + await ricochetRIC + .transfer({ + receiver: bobSigner.address, + amount: '1000000000000000000000', + }) + .exec(adminSigner) + console.log('RIC') + + await stIbAlluoUSD + .transfer({ + receiver: karenSigner.address, + amount: initialAmount, + }) + .exec(stIbAlluoUSDWhaleSigner) + console.log('====== Transferred to karen =======') + + // Take a snapshot to avoid redoing the setup + snapshot = await provider.send('evm_snapshot', []) + }) + + context('#1 - new rexmarket with no streamers', async () => { + beforeEach(async () => { + // Revert to the point REXMarket was just deployed + const success = await provider.send('evm_revert', [snapshot]) + // Take another snapshot to be able to revert again next time + snapshot = await provider.send('evm_snapshot', []) + expect(success).to.equal(true) + }) + + afterEach(async () => { + // Check the app isn't jailed + expect(await twoWayMarket.isAppJailed()).to.equal(false) + + // Check there's ibToken dust in the contract + expect(await ibAlluoUSD.balanceOf(twoWayMarket.address)).to.equal(0) + expect(await ibAlluoETH.balanceOf(twoWayMarket.address)).to.equal(0) + + await resetMeasurements() + }) + + it('#1.1 getters/setters', async () => { + await twoWayMarket.setRateTolerance(1000) + expect(await twoWayMarket.getRateTolerance()).to.equal(1000) + await twoWayMarket.setFeeRate(0, 1000) + expect(await twoWayMarket.getFeeRate(0)).to.equal(1000) + await twoWayMarket.setEmissionRate(0, 1000) + expect(await twoWayMarket.getEmissionRate(0)).to.equal(1000) + expect((await twoWayMarket.getOutputPool(0)).toString()).to.equal(`${stIbAlluoUSD.address},1000,1000,${1e7}`) + expect((await twoWayMarket.getLastDistributionAt()).toNumber()).to.be.above(0) + }) + + it('#1.2 before/afterAgreementCreated callbacks', async () => { + // Alice opens a USDC stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: twoWayMarket.address, + superToken: stIbAlluoUSD.address, + flowRate: inflowRateUsdc, + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['carl']), + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + + // Expect share allocations were done correctly + expect(await twoWayMarket.getStreamRate(aliceSigner.address, stIbAlluoUSD.address)).to.equal(inflowRateUsdc) + expect((await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, aliceSigner.address)).toString()).to.equal( + `true,true,995000,0` + ) + // Admin and Carl split 2% of the shares bc of the 50% referral fee + expect((await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, adminSigner.address)).toString()).to.equal( + `true,true,2500,0` + ) + expect((await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, carlSigner.address)).toString()).to.equal( + `true,true,2500,0` + ) + + // Bob opens a ETH stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: bobSigner.address, + receiver: twoWayMarket.address, + superToken: stIbAlluoETH.address, + flowRate: inflowRateEth, + shouldUseCallAgreement: true, + }) + .exec(bobSigner) + // Expect share allocations were done correctly + expect(await twoWayMarket.getStreamRate(bobSigner.address, stIbAlluoETH.address)).to.equal(inflowRateEth) + expect((await twoWayMarket.getIDAShares(USDCX_SUBSCRIPTION_INDEX, bobSigner.address)).toString()).to.equal( + `true,true,99500,0` + ) + // Admin gets all of the 2% bc bob was an organic referral + expect((await twoWayMarket.getIDAShares(USDCX_SUBSCRIPTION_INDEX, adminSigner.address)).toString()).to.equal( + `true,true,500,0` + ) + expect((await twoWayMarket.getIDAShares(USDCX_SUBSCRIPTION_INDEX, carlSigner.address)).toString()).to.equal( + `true,true,0,0` + ) + }) + + it('#1.3 before/afterAgreementTerminated callbacks', async () => { + await takeMeasurements() + + // Alice opens a USDC stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: twoWayMarket.address, + superToken: stIbAlluoUSD.address, + flowRate: inflowRateUsdc, + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['carl']), + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + + // Bob opens a ETH stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: bobSigner.address, + receiver: twoWayMarket.address, + superToken: stIbAlluoETH.address, + flowRate: inflowRateEth, + shouldUseCallAgreement: true, + }) + .exec(bobSigner) + + await increaseTime(3600) + + // Delete Alices stream before first distributions + await sf.cfaV1 + .deleteFlow({ + receiver: twoWayMarket.address, + sender: aliceSigner.address, + superToken: stIbAlluoUSD.address, + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + + // Delete Alices stream before first distributions + await sf.cfaV1 + .deleteFlow({ + receiver: twoWayMarket.address, + sender: bobSigner.address, + superToken: stIbAlluoETH.address, + shouldUseCallAgreement: true, + }) + .exec(bobSigner) + + await takeMeasurements() + + // Check balance for alice again + let aliceDelta = await delta(aliceSigner, aliceBalances) + let bobDelta = await delta(bobSigner, bobBalances) + + // Expect alice didn't lose anything since she closed stream before distribute + expect(aliceDelta.stIbAlluoUSD).to.equal(0) + + // TODO: expect(bobDelta.stIbAlluoETH).to.equal(0); + + // Expect share allocations were done correctly + expect(await twoWayMarket.getStreamRate(aliceSigner.address, stIbAlluoUSD.address)).to.equal('0') + expect(await twoWayMarket.getStreamRate(bobSigner.address, stIbAlluoETH.address)).to.equal('0') + expect((await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, aliceSigner.address)).toString()).to.equal( + `true,true,0,0` + ) + expect((await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, adminSigner.address)).toString()).to.equal( + `true,true,0,0` + ) + expect((await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, carlSigner.address)).toString()).to.equal( + `true,true,0,0` + ) + expect((await twoWayMarket.getIDAShares(USDCX_SUBSCRIPTION_INDEX, bobSigner.address)).toString()).to.equal( + `true,true,0,0` + ) + expect((await twoWayMarket.getIDAShares(USDCX_SUBSCRIPTION_INDEX, adminSigner.address)).toString()).to.equal( + `true,true,0,0` + ) + }) + + it('#1.4 one-sided distribution', async () => { + // Alice opens a USDC stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: twoWayMarket.address, + superToken: stIbAlluoUSD.address, + flowRate: inflowRateUsdc, + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['carl']), + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + + // Check balance + await takeMeasurements() + + // Fast forward an hour and distribute + await increaseTime(3600) + await twoWayMarket.distribute('0x') + + // Check balances again + await takeMeasurements() + + // Compute the delta + let deltaAlice = await delta(aliceSigner, aliceBalances) + let deltaCarl = await delta(carlSigner, carlBalances) + let deltaOwner = await delta(adminSigner, ownerBalances) + + // Expect Alice and Bob got the right output less the 2% fee + 1% slippage + // console.log("Alice got this much stIbAlluoETH", deltaAlice.stIbAlluoETH); + // console.log("Alice paid this much stIbAlluoUSD", -1 * deltaAlice.stIbAlluoUSD); + // console.log("stIbAlluoETH/USD rate", -1*deltaAlice.stIbAlluoUSD/deltaAlice.stIbAlluoETH); + expect(deltaAlice.stIbAlluoETH).to.be.above((deltaAlice.stIbAlluoUSD / oraclePrice) * 1e6 * -1 * 0.97) + + // Expect Owner and Carl got their fee from Alice + expect( + deltaCarl.stIbAlluoETH / (deltaAlice.stIbAlluoETH + deltaCarl.stIbAlluoETH + deltaOwner.stIbAlluoETH) + ).to.within(0.0025, 0.00251) + expect( + deltaOwner.stIbAlluoETH / (deltaAlice.stIbAlluoETH + deltaCarl.stIbAlluoETH + deltaOwner.stIbAlluoETH) + ).to.within(0.0025, 0.00251) + }) + }) + + context('#2 - existing market with streamers on both sides', async () => { + before(async () => { + const success = await provider.send('evm_revert', [snapshot]) + + // Bob opens a ETH stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: bobSigner.address, + receiver: twoWayMarket.address, + superToken: stIbAlluoETH.address, + flowRate: inflowRateEth, + shouldUseCallAgreement: true, + overrides, + }) + .exec(bobSigner) + + // Alice opens a USDC stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: twoWayMarket.address, + superToken: stIbAlluoUSD.address, + flowRate: inflowRateUsdc, + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['carl']), + shouldUseCallAgreement: true, + overrides, + }) + .exec(aliceSigner) + + // Take a snapshot + snapshot = await provider.send('evm_snapshot', []) + }) + + beforeEach(async () => { + // Revert to the point REXMarket was just deployed + const success = await provider.send('evm_revert', [snapshot]) + // Take another snapshot to be able to revert again next time + snapshot = await provider.send('evm_snapshot', []) + expect(success).to.equal(true) + }) + + afterEach(async () => { + // Check the app isn't jailed + expect(await twoWayMarket.isAppJailed()).to.equal(false) + + // Check there's ibToken dust in the contract + expect(await ibAlluoUSD.balanceOf(twoWayMarket.address)).to.equal(0) + expect(await ibAlluoETH.balanceOf(twoWayMarket.address)).to.equal(0) + + await resetMeasurements() + }) + + after(async () => { + // Close the streams for and leave a clean snapshot for next context + await sf.cfaV1 + .deleteFlow({ + receiver: twoWayMarket.address, + sender: aliceSigner.address, + superToken: stIbAlluoUSD.address, + shouldUseCallAgreement: true, + overrides, + }) + .exec(aliceSigner) + + // Delete Bobs stream + await sf.cfaV1 + .deleteFlow({ + receiver: twoWayMarket.address, + sender: bobSigner.address, + superToken: stIbAlluoETH.address, + shouldUseCallAgreement: true, + overrides, + }) + .exec(bobSigner) + + snapshot = await provider.send('evm_snapshot', []) + }) + + it('#2.1 before/afterAgreementCreated callbacks', async () => { + // Karen opens a USDC stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: karenSigner.address, + receiver: twoWayMarket.address, + superToken: stIbAlluoUSD.address, + flowRate: inflowRateUsdc, + shouldUseCallAgreement: true, + }) + .exec(karenSigner) + + // Expect share allocations were done correctly + expect(await twoWayMarket.getStreamRate(karenSigner.address, stIbAlluoUSD.address)).to.equal(inflowRateUsdc) + expect((await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, aliceSigner.address)).toString()).to.equal( + `true,true,995000,0` + ) + expect((await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, karenSigner.address)).toString()).to.equal( + `true,true,995000,0` + ) + expect((await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, adminSigner.address)).toString()).to.equal( + `true,true,7500,0` + ) + expect((await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, carlSigner.address)).toString()).to.equal( + `true,true,2500,0` + ) + }) + + it('#2.2 before/afterAgreementUpdated callbacks', async () => { + await sf.cfaV1 + .updateFlow({ + sender: aliceSigner.address, + superToken: stIbAlluoUSD.address, + flowRate: inflowRateUsdc10x, + receiver: twoWayMarket.address, + shouldUseCallAgreement: true, + overrides, + }) + .exec(aliceSigner) + + // Expect share allocations were done correctly + expect(await twoWayMarket.getStreamRate(aliceSigner.address, stIbAlluoUSD.address)).to.equal(inflowRateUsdc10x) + expect((await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, aliceSigner.address)).toString()).to.equal( + `true,true,9950000,0` + ) + // Admin and Carl split 2% of the shares bc of the 50% referral fee + expect((await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, adminSigner.address)).toString()).to.equal( + `true,true,25000,0` + ) + expect((await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, carlSigner.address)).toString()).to.equal( + `true,true,25000,0` + ) + }) + + it('#2.3 two-sided distribution', async () => { + // Check balance + await twoWayMarket.distribute('0x') + await takeMeasurements() + + // Fast forward an hour and distribute + await increaseTime(3600) + await twoWayMarket.distribute('0x') + + // Check balances again + await takeMeasurements() + + // Compute the delta + let deltaAlice = await delta(aliceSigner, aliceBalances) + let deltaBob = await delta(bobSigner, bobBalances) + let deltaCarl = await delta(carlSigner, carlBalances) + let deltaOwner = await delta(adminSigner, ownerBalances) + + // Expect Alice and Bob got the right output less the 2% fee + 1% slippage + 2% from ibAlluoX to X conversion` + expect(deltaBob.stIbAlluoUSD).to.be.above(((deltaBob.stIbAlluoETH * oraclePrice) / 1e6) * -1 * 0.95) + expect(deltaAlice.stIbAlluoETH).to.be.above((deltaAlice.stIbAlluoUSD / oraclePrice) * 1e6 * -1 * 0.95) + // Expect Owner and Carl got their fee from Alice + expect( + deltaCarl.stIbAlluoETH / (deltaAlice.stIbAlluoETH + deltaCarl.stIbAlluoETH + deltaOwner.stIbAlluoETH) + ).to.within(0.0025, 0.00251) + expect( + deltaOwner.stIbAlluoETH / (deltaAlice.stIbAlluoETH + deltaCarl.stIbAlluoETH + deltaOwner.stIbAlluoETH) + ).to.within(0.0025, 0.00251) + // Expect Owner got his fee from Bob + expect(deltaOwner.stIbAlluoUSD / (deltaBob.stIbAlluoUSD + deltaOwner.stIbAlluoUSD)).to.within( + 0.0049999, + 0.0050001 + ) + }) + }) + + xcontext('#3 - market is jailed', async () => { before(async () => { - hre.tracer.enable = false; - const { - superfluid, - users, - accounts, - tokens, - superTokens, - contracts, - constants, - } = await setup(); - console.log("============ Right after initSuperfluid() =================="); - - const { createSFRegistrationKey } = await common(); - - u = users; - sf = superfluid; - superT = superTokens; - tokenss = tokens; - accountss = accounts; - sfRegistrationKey = createSFRegistrationKey; - constant = constants; - - // This order is established in misc/setup.ts - adminSigner = accountss[0]; - aliceSigner = accountss[1]; - bobSigner = accountss[2]; - carlSigner = accountss[3]; - karenSigner = accountss[4]; - ethxWhaleSigner = accountss[6]; - stIbAlluoUSDWhaleSigner = accountss[8]; - stIbAlluoETHWhaleSigner = accountss[9]; - - ricochetRIC = superT.ric; - stIbAlluoUSD = superT.stIbAlluoUSD; - stIbAlluoETH = superT.stIbAlluoETH; - ricochetETHx = superT.ethx; - - weth = tokenss.weth; - ibAlluoUSD = tokenss.ibAlluoUSD; - ibAlluoETH = tokenss.ibAlluoETH; - - - usdcxAndItsIDAIndex = { - token: stIbAlluoUSD, - IDAIndex: USDCX_SUBSCRIPTION_INDEX, - } - ethxAndItsIDAIndex = { - token: stIbAlluoETH, - IDAIndex: ETHX_SUBSCRIPTION_INDEX, - } - ricAndItsIDAIndex = { - token: ricochetRIC, - IDAIndex: RIC_SUBSCRIPTION_INDEX, - } - ricAndItsOtherIDAIndex = { - token: ricochetRIC, - IDAIndex: 3, - } - - console.log("======******** List of addresses ======="); - for (let i = 0; i < accountss.length; i++) { - console.log("Address number ", i, ": ", accountss[i].address); - } - console.log("++++++++++++++ alice address number: ", aliceSigner.address); - console.log("++++++++++++++ bob address number: ", bobSigner.address); - console.log("++++++++++++++ carl address number: ", carlSigner.address); - - console.log("======******** List of TOKENS addresses ======="); - console.log("======** stIbAlluoUSD's address: ", stIbAlluoUSD.address); - console.log("======** stIbAlluoETH's address: ", stIbAlluoETH.address); - // ============================================================================== - - // Deploy REXReferral - rexReferral = await ethers.getContractFactory("REXReferral", { - signer: adminSigner, - }); - referral = await rexReferral.deploy(); - await referral.deployed(); - console.log("=========== Deployed REXReferral ============"); - - // ============================================================================== - const registrationKey = await sfRegistrationKey(sf, adminSigner.address); - console.log("============ Right after sfRegistrationKey() =================="); - - // ============== - // Deploy REX Market - console.log("Deploying REXTwoWayMarket..."); - REXMarketFactory = await ethers.getContractFactory( - "REXTwoWayAlluoMarket", - adminSigner - ); - console.log("admin signer address:", adminSigner.address); - twoWayMarket = await REXMarketFactory.deploy( - adminSigner.address, - sf.settings.config.hostAddress, - Constants.CFA_SUPERFLUID_ADDRESS, - Constants.IDA_SUPERFLUID_ADDRESS, - registrationKey, - referral.address - ); - console.log("=========== Deployed REXTwoWayAlluoMarket ============"); - - console.log("initializeTwoWayMarket", stIbAlluoUSD.address, stIbAlluoETH.address); - await twoWayMarket.initializeTwoWayMarket( - stIbAlluoUSD.address, - 1e7, - stIbAlluoETH.address, - 1e9, - 5000, - 20000 - ); - console.log("=========== Initialized TwoWayMarket ============"); - - await twoWayMarket.initializeSubsidies(subsidyRate, ricochetRIC.address); - console.log("========== Initialized subsidies ==========="); - - await checkBalance(stIbAlluoUSDWhaleSigner, "the stIbAlluoUSD whale"); - await checkBalance(stIbAlluoETHWhaleSigner, "the stIbAlluoETH whale"); - // send the contract some RIC - try { - await ricochetRIC.transfer({ - receiver: twoWayMarket.address, - amount: "1000000000000000000" - }).exec(adminSigner); - } catch (err: any) { - console.log("Ricochet - ERROR transferring RICs to the contract: ", err); - } - console.log("============ RICs have been sent to the contract ============="); - await checkBalance(adminSigner, "the contract"); - - // Register the market with REXReferral - await referral.registerApp(twoWayMarket.address); - referral = await referral.connect(carlSigner); - await referral.applyForAffiliate("carl", "carl"); - referral = await referral.connect(adminSigner); - await referral.verifyAffiliate("carl"); - console.log(" ============ The affiliate has been veryfied ============="); - console.log("======================================================================="); - console.log("================ End of \"before\" block =============================="); - console.log("======================================================================="); - - - // Do all the approvals - // TODO: Redo how indexes are setup - await approveSubscriptions([usdcxAndItsIDAIndex, ethxAndItsIDAIndex, ricAndItsIDAIndex, ricAndItsOtherIDAIndex], - [adminSigner, aliceSigner, bobSigner, karenSigner, carlSigner]); - - // Give Alice, Bob, Karen some tokens - console.log(ethxWhaleSigner.address) - - let initialAmount = ethers.utils.parseUnits("1000", 18).toString(); - - await stIbAlluoUSD - .transfer({ - receiver: aliceSigner.address, - amount: initialAmount, - }).exec(stIbAlluoUSDWhaleSigner); - console.log("====== Transferred to alice ======="); - await stIbAlluoETH - .transfer({ - receiver: bobSigner.address, - amount: ethers.utils.parseUnits("0.018", 18).toString(), - }).exec(stIbAlluoETHWhaleSigner); - console.log("ETH") - await ricochetRIC - .transfer({ - receiver: bobSigner.address, - amount: '1000000000000000000000', - }).exec(adminSigner); - console.log("RIC") - - await stIbAlluoUSD - .transfer({ - receiver: karenSigner.address, - amount: initialAmount, - }).exec(stIbAlluoUSDWhaleSigner); - console.log("====== Transferred to karen ======="); - - // Take a snapshot to avoid redoing the setup - snapshot = await provider.send('evm_snapshot', []); - - }); - - context("#1 - new rexmarket with no streamers", async () => { - - beforeEach(async () => { - // Revert to the point REXMarket was just deployed - const success = await provider.send('evm_revert', [ - snapshot - ]); - // Take another snapshot to be able to revert again next time - snapshot = await provider.send('evm_snapshot', []); - expect(success).to.equal(true); - }); - - afterEach(async () => { - // Check the app isn't jailed - expect(await twoWayMarket.isAppJailed()).to.equal(false); - - // Check there's ibToken dust in the contract - expect(await ibAlluoUSD.balanceOf(twoWayMarket.address)).to.equal(0); - expect(await ibAlluoETH.balanceOf(twoWayMarket.address)).to.equal(0); - - await resetMeasurements(); - }); - - it("#1.1 getters/setters", async () => { - - await twoWayMarket.setRateTolerance(1000); - expect(await twoWayMarket.getRateTolerance()).to.equal(1000); - await twoWayMarket.setFeeRate(0, 1000); - expect(await twoWayMarket.getFeeRate(0)).to.equal(1000); - await twoWayMarket.setEmissionRate(0, 1000); - expect(await twoWayMarket.getEmissionRate(0)).to.equal(1000); - expect((await twoWayMarket.getOutputPool(0)).toString()).to.equal(`${stIbAlluoUSD.address},1000,1000,${1e7}`); - expect((await twoWayMarket.getLastDistributionAt()).toNumber()).to.be.above(0) - - - }); - - it("#1.2 before/afterAgreementCreated callbacks", async () => { - - // Alice opens a USDC stream to REXMarket - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: twoWayMarket.address, - superToken: stIbAlluoUSD.address, - flowRate: inflowRateUsdc, - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - shouldUseCallAgreement: true, - }).exec(aliceSigner); - - // Expect share allocations were done correctly - expect( - await twoWayMarket.getStreamRate(aliceSigner.address, stIbAlluoUSD.address) - ).to.equal(inflowRateUsdc); - expect( - (await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, aliceSigner.address)).toString() - ).to.equal(`true,true,995000,0`); - // Admin and Carl split 2% of the shares bc of the 50% referral fee - expect( - (await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, adminSigner.address)).toString() - ).to.equal(`true,true,2500,0`); - expect( - (await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, carlSigner.address)).toString() - ).to.equal(`true,true,2500,0`); - - // Bob opens a ETH stream to REXMarket - await sf.cfaV1.createFlow({ - sender: bobSigner.address, - receiver: twoWayMarket.address, - superToken: stIbAlluoETH.address, - flowRate: inflowRateEth, - shouldUseCallAgreement: true, - }).exec(bobSigner); - // Expect share allocations were done correctly - expect( - await twoWayMarket.getStreamRate(bobSigner.address, stIbAlluoETH.address) - ).to.equal(inflowRateEth); - expect( - (await twoWayMarket.getIDAShares(USDCX_SUBSCRIPTION_INDEX, bobSigner.address)).toString() - ).to.equal(`true,true,99500,0`); - // Admin gets all of the 2% bc bob was an organic referral - expect( - (await twoWayMarket.getIDAShares(USDCX_SUBSCRIPTION_INDEX, adminSigner.address)).toString() - ).to.equal(`true,true,500,0`); - expect( - (await twoWayMarket.getIDAShares(USDCX_SUBSCRIPTION_INDEX, carlSigner.address)).toString() - ).to.equal(`true,true,0,0`); - - }); - - it("#1.3 before/afterAgreementTerminated callbacks", async () => { - - await takeMeasurements(); - - // Alice opens a USDC stream to REXMarket - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: twoWayMarket.address, - superToken: stIbAlluoUSD.address, - flowRate: inflowRateUsdc, - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - shouldUseCallAgreement: true, - }).exec(aliceSigner); - - // Bob opens a ETH stream to REXMarket - await sf.cfaV1.createFlow({ - sender: bobSigner.address, - receiver: twoWayMarket.address, - superToken: stIbAlluoETH.address, - flowRate: inflowRateEth, - shouldUseCallAgreement: true - }).exec(bobSigner); - - await increaseTime(3600) - - // Delete Alices stream before first distributions - await sf.cfaV1.deleteFlow({ - receiver: twoWayMarket.address, - sender: aliceSigner.address, - superToken: stIbAlluoUSD.address, - shouldUseCallAgreement: true - }).exec(aliceSigner); - - // Delete Alices stream before first distributions - await sf.cfaV1.deleteFlow({ - receiver: twoWayMarket.address, - sender: bobSigner.address, - superToken: stIbAlluoETH.address, - shouldUseCallAgreement: true - }).exec(bobSigner); - - await takeMeasurements(); - - // Check balance for alice again - let aliceDelta = await delta(aliceSigner, aliceBalances); - let bobDelta = await delta(bobSigner, bobBalances); - - // Expect alice didn't lose anything since she closed stream before distribute - expect(aliceDelta.stIbAlluoUSD).to.equal(0); - - // TODO: expect(bobDelta.stIbAlluoETH).to.equal(0); - - // Expect share allocations were done correctly - expect( - await twoWayMarket.getStreamRate(aliceSigner.address, stIbAlluoUSD.address) - ).to.equal('0'); - expect( - await twoWayMarket.getStreamRate(bobSigner.address, stIbAlluoETH.address) - ).to.equal('0'); - expect( - (await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, aliceSigner.address)).toString() - ).to.equal(`true,true,0,0`); - expect( - (await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, adminSigner.address)).toString() - ).to.equal(`true,true,0,0`); - expect( - (await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, carlSigner.address)).toString() - ).to.equal(`true,true,0,0`); - expect( - (await twoWayMarket.getIDAShares(USDCX_SUBSCRIPTION_INDEX, bobSigner.address)).toString() - ).to.equal(`true,true,0,0`); - expect( - (await twoWayMarket.getIDAShares(USDCX_SUBSCRIPTION_INDEX, adminSigner.address)).toString() - ).to.equal(`true,true,0,0`); - - }); - - it("#1.4 one-sided distribution", async () => { - // Alice opens a USDC stream to REXMarket - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: twoWayMarket.address, - superToken: stIbAlluoUSD.address, - flowRate: inflowRateUsdc, - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - shouldUseCallAgreement: true, - }).exec(aliceSigner); - - // Check balance - await takeMeasurements(); - - // Fast forward an hour and distribute - await increaseTime(3600); - await twoWayMarket.distribute("0x"); - - // Check balances again - await takeMeasurements(); - - // Compute the delta - let deltaAlice = await delta(aliceSigner, aliceBalances); - let deltaCarl = await delta(carlSigner, carlBalances); - let deltaOwner = await delta(adminSigner, ownerBalances); - - // Expect Alice and Bob got the right output less the 2% fee + 1% slippage - // console.log("Alice got this much stIbAlluoETH", deltaAlice.stIbAlluoETH); - // console.log("Alice paid this much stIbAlluoUSD", -1 * deltaAlice.stIbAlluoUSD); - // console.log("stIbAlluoETH/USD rate", -1*deltaAlice.stIbAlluoUSD/deltaAlice.stIbAlluoETH); - expect(deltaAlice.stIbAlluoETH).to.be.above(deltaAlice.stIbAlluoUSD / oraclePrice * 1e6 * -1 * 0.97) - - // Expect Owner and Carl got their fee from Alice - expect(deltaCarl.stIbAlluoETH / (deltaAlice.stIbAlluoETH + deltaCarl.stIbAlluoETH + deltaOwner.stIbAlluoETH)).to.within(0.0025, 0.00251) - expect(deltaOwner.stIbAlluoETH / (deltaAlice.stIbAlluoETH + deltaCarl.stIbAlluoETH + deltaOwner.stIbAlluoETH)).to.within(0.0025, 0.00251) - }); - - }); - - context("#2 - existing market with streamers on both sides", async () => { - - before(async () => { - const success = await provider.send('evm_revert', [ - snapshot - ]); - - // Bob opens a ETH stream to REXMarket - await sf.cfaV1.createFlow({ - sender: bobSigner.address, - receiver: twoWayMarket.address, - superToken: stIbAlluoETH.address, - flowRate: inflowRateEth, - shouldUseCallAgreement: true, - overrides - }).exec(bobSigner); - - - // Alice opens a USDC stream to REXMarket - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: twoWayMarket.address, - superToken: stIbAlluoUSD.address, - flowRate: inflowRateUsdc, - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - shouldUseCallAgreement: true, - overrides - }).exec(aliceSigner); - - // Take a snapshot - snapshot = await provider.send('evm_snapshot', []); - - }); - - beforeEach(async () => { - // Revert to the point REXMarket was just deployed - const success = await provider.send('evm_revert', [ - snapshot - ]); - // Take another snapshot to be able to revert again next time - snapshot = await provider.send('evm_snapshot', []); - expect(success).to.equal(true); - }); - - afterEach(async () => { - // Check the app isn't jailed - expect(await twoWayMarket.isAppJailed()).to.equal(false); - - // Check there's ibToken dust in the contract - expect(await ibAlluoUSD.balanceOf(twoWayMarket.address)).to.equal(0); - expect(await ibAlluoETH.balanceOf(twoWayMarket.address)).to.equal(0); - - await resetMeasurements(); - }); - - after(async () => { - // Close the streams for and leave a clean snapshot for next context - await sf.cfaV1.deleteFlow({ - receiver: twoWayMarket.address, - sender: aliceSigner.address, - superToken: stIbAlluoUSD.address, - shouldUseCallAgreement: true, - overrides, - }).exec(aliceSigner); - - // Delete Bobs stream - await sf.cfaV1.deleteFlow({ - receiver: twoWayMarket.address, - sender: bobSigner.address, - superToken: stIbAlluoETH.address, - shouldUseCallAgreement: true, - overrides, - }).exec(bobSigner); - - snapshot = await provider.send('evm_snapshot', []); - - }); - - it("#2.1 before/afterAgreementCreated callbacks", async () => { - - // Karen opens a USDC stream to REXMarket - await sf.cfaV1.createFlow({ - sender: karenSigner.address, - receiver: twoWayMarket.address, - superToken: stIbAlluoUSD.address, - flowRate: inflowRateUsdc, - shouldUseCallAgreement: true, - }).exec(karenSigner); - - // Expect share allocations were done correctly - expect( - await twoWayMarket.getStreamRate(karenSigner.address, stIbAlluoUSD.address) - ).to.equal(inflowRateUsdc); - expect( - (await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, aliceSigner.address)).toString() - ).to.equal(`true,true,995000,0`); - expect( - (await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, karenSigner.address)).toString() - ).to.equal(`true,true,995000,0`); - expect( - (await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, adminSigner.address)).toString() - ).to.equal(`true,true,7500,0`); - expect( - (await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, carlSigner.address)).toString() - ).to.equal(`true,true,2500,0`); - - }); - - it("#2.2 before/afterAgreementUpdated callbacks", async () => { - - await sf.cfaV1.updateFlow({ - sender: aliceSigner.address, - superToken: stIbAlluoUSD.address, - flowRate: inflowRateUsdc10x, - receiver: twoWayMarket.address, - shouldUseCallAgreement: true, - overrides, - }).exec(aliceSigner); - - // Expect share allocations were done correctly - expect( - await twoWayMarket.getStreamRate(aliceSigner.address, stIbAlluoUSD.address) - ).to.equal(inflowRateUsdc10x); - expect( - (await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, aliceSigner.address)).toString() - ).to.equal(`true,true,9950000,0`); - // Admin and Carl split 2% of the shares bc of the 50% referral fee - expect( - (await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, adminSigner.address)).toString() - ).to.equal(`true,true,25000,0`); - expect( - (await twoWayMarket.getIDAShares(ETHX_SUBSCRIPTION_INDEX, carlSigner.address)).toString() - ).to.equal(`true,true,25000,0`); - - }); - - it("#2.3 two-sided distribution", async () => { - - // Check balance - await twoWayMarket.distribute("0x"); - await takeMeasurements(); - - // Fast forward an hour and distribute - await increaseTime(3600); - await twoWayMarket.distribute("0x"); - - // Check balances again - await takeMeasurements(); - - // Compute the delta - let deltaAlice = await delta(aliceSigner, aliceBalances); - let deltaBob = await delta(bobSigner, bobBalances); - let deltaCarl = await delta(carlSigner, carlBalances); - let deltaOwner = await delta(adminSigner, ownerBalances); - - - // Expect Alice and Bob got the right output less the 2% fee + 1% slippage + 2% from ibAlluoX to X conversion` - expect(deltaBob.stIbAlluoUSD).to.be.above(deltaBob.stIbAlluoETH * oraclePrice / 1e6 * -1 * 0.95) - expect(deltaAlice.stIbAlluoETH).to.be.above(deltaAlice.stIbAlluoUSD / oraclePrice * 1e6 * -1 * 0.95) - // Expect Owner and Carl got their fee from Alice - expect(deltaCarl.stIbAlluoETH / (deltaAlice.stIbAlluoETH + deltaCarl.stIbAlluoETH + deltaOwner.stIbAlluoETH)).to.within(0.0025, 0.00251) - expect(deltaOwner.stIbAlluoETH / (deltaAlice.stIbAlluoETH + deltaCarl.stIbAlluoETH + deltaOwner.stIbAlluoETH)).to.within(0.0025, 0.00251) - // Expect Owner got his fee from Bob - expect(deltaOwner.stIbAlluoUSD / (deltaBob.stIbAlluoUSD + deltaOwner.stIbAlluoUSD)).to.within(0.0049999, 0.0050001) - - }); - - }); - - xcontext("#3 - market is jailed", async () => { - - before(async () => { - const success = await provider.send('evm_revert', [ - snapshot - ]); - - await takeMeasurements(); - - // Alice opens a USDC stream to REXMarket - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: twoWayMarket.address, - superToken: stIbAlluoUSD.address, - flowRate: inflowRateUsdc, - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - shouldUseCallAgreement: true, - }).exec(aliceSigner); - // Bob opens a ETH stream to REXMarket - await sf.cfaV1.createFlow({ - sender: bobSigner.address, - receiver: twoWayMarket.address, - superToken: stIbAlluoETH.address, - flowRate: inflowRateEthHalf, - shouldUseCallAgreement: true, - }).exec(bobSigner); - - await sf.cfaV1.createFlow({ - sender: karenSigner.address, - receiver: twoWayMarket.address, - superToken: stIbAlluoUSD.address, - flowRate: inflowRateUsdc, - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - shouldUseCallAgreement: true, - }).exec(karenSigner); - - await increaseTime(3600); - - // NOTE: This method stopped working because of SF protocol changes - // // Jail the app - // await impersonateAndSetBalance(Constants.CFA_SUPERFLUID_ADDRESS); - // let cfaSigner = await ethers.getSigner(Constants.CFA_SUPERFLUID_ADDRESS) - // await sf.host.hostContract.connect(cfaSigner).jailApp('0x01', twoWayMarket.address, 0, {gasLimit: '3000000'}) - - // NOTE: So instead you will need to modify the - await sf.cfaV1.deleteFlow({ - receiver: twoWayMarket.address, - sender: karenSigner.address, - superToken: stIbAlluoUSD.address, - shouldUseCallAgreement: true, - overrides, - }).exec(karenSigner); - - // Take a snapshot - snapshot = await provider.send('evm_snapshot', []); - - }); - - beforeEach(async () => { - // Revert to the point REXMarket was just deployed - const success = await provider.send('evm_revert', [ - snapshot - ]); - // Take another snapshot to be able to revert again next time - snapshot = await provider.send('evm_snapshot', []); - expect(success).to.equal(true); - }); - - afterEach(async () => { - // Check the app isn't jailed - // await resetMeasurements(); - }); - - it("#3.1 emergencyCloseStream", async () => { - - await twoWayMarket.emergencyCloseStream(aliceSigner.address, stIbAlluoUSD.address); - await twoWayMarket.emergencyCloseStream(bobSigner.address, stIbAlluoETH.address); - - expect( - await twoWayMarket.getStreamRate(aliceSigner.address, stIbAlluoUSD.address) - ).to.equal(0); - - expect( - await twoWayMarket.getStreamRate(bobSigner.address, stIbAlluoETH.address) - ).to.equal(0); - - }); - - it("#3.2 should correctly emergency drain", async () => { - // - // await expect( - // twoWayMarket.emergencyDrain(stIbAlluoETH.address), - // ).to.be.revertedWith('!zeroStreamers'); - // - // await expect( - // twoWayMarket.emergencyDrain(stIbAlluoUSD.address), - // ).to.be.revertedWith('!zeroStreamers'); - - // Close both flows - // Delete Alices stream - await sf.cfaV1.deleteFlow({ - receiver: twoWayMarket.address, - sender: aliceSigner.address, - superToken: stIbAlluoUSD.address, - shouldUseCallAgreement: true, - }).exec(aliceSigner); - - // Delete Bobs stream - await sf.cfaV1.deleteFlow({ - receiver: twoWayMarket.address, - sender: bobSigner.address, - superToken: stIbAlluoETH.address, - shouldUseCallAgreement: true, - }).exec(bobSigner); - - await twoWayMarket.emergencyDrain(stIbAlluoETH.address); - await twoWayMarket.emergencyDrain(stIbAlluoUSD.address); - await twoWayMarket.emergencyDrain(ricochetRIC.address); - - expect((await stIbAlluoUSD.balanceOf({ - account: twoWayMarket.address, providerOrSigner: provider - })).toString()).to.equal('0'); - - expect((await stIbAlluoETH.balanceOf({ - account: twoWayMarket.address, providerOrSigner: provider - })).toString()).to.equal('0'); - - expect((await ricochetRIC.balanceOf({ - account: twoWayMarket.address, providerOrSigner: provider - })).toString()).to.equal('0'); - - await takeMeasurements(); - - // Check the owner recovers the funds sent in afterwards - let appDelta = await delta(twoWayMarket, appBalances); - let ownerDelta = await delta(adminSigner, ownerBalances); - let aliceDelta = await delta(aliceSigner, aliceBalances); - let bobDelta = await delta(bobSigner, bobBalances); - - // Expect the owner can recover the locked funds - expect(ownerDelta.stIbAlluoETH).to.be.within(-1 * bobDelta.stIbAlluoETH * 0.99, -1 * bobDelta.stIbAlluoETH * 1.01); - expect(ownerDelta.stIbAlluoUSD).to.be.within(-1 * aliceDelta.stIbAlluoUSD * 0.99, -1 * aliceDelta.stIbAlluoUSD * 1.01); - // Recover the RIC subsidies - expect(ownerDelta.ric).to.be.within(-1 * appDelta.ric * 0.99999, -1 * appDelta.ric * 1.00001); - - - }); - - it("#3.3 closeStream", async () => { - - let aliceBalanceUsdcx = await stIbAlluoUSD.balanceOf({ - account: aliceSigner.address, providerOrSigner: provider - }); - aliceBalanceUsdcx = ethers.BigNumber.from(aliceBalanceUsdcx.toString()) - // When user create stream, SF locks 4 hour deposit called initial deposit - const initialDeposit = aliceBalanceUsdcx.div(ethers.BigNumber.from('13')).mul(ethers.BigNumber.from('4')); - const inflowRate = aliceBalanceUsdcx.sub(initialDeposit).div(ethers.BigNumber.from(9 * 3600)).toString(); - // Initialize a streamer with 9 hours of balance - await sf.cfaV1.updateFlow({ - receiver: twoWayMarket.address, - superToken: stIbAlluoUSD.address, - flowRate: inflowRate.toString(), - shouldUseCallAgreement: true, - }).exec(aliceSigner); - // Verfiy closing attempts revert - await expect(twoWayMarket.closeStream(aliceSigner.address, stIbAlluoUSD.address)).to.revertedWith('!closable'); - // Advance time 2 hours - await increaseTime(2 * 3600); - // Verify closing the stream works - aliceBalanceUsdcx = await stIbAlluoUSD.balanceOf({ - account: aliceSigner.address, providerOrSigner: provider - }); - await twoWayMarket.closeStream(aliceSigner.address, stIbAlluoUSD.address); - expect(await twoWayMarket.getStreamRate(aliceSigner.address, stIbAlluoUSD.address)).to.equal('0'); - - }); - - }); - -}); + const success = await provider.send('evm_revert', [snapshot]) + + await takeMeasurements() + + // Alice opens a USDC stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: twoWayMarket.address, + superToken: stIbAlluoUSD.address, + flowRate: inflowRateUsdc, + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['carl']), + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + // Bob opens a ETH stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: bobSigner.address, + receiver: twoWayMarket.address, + superToken: stIbAlluoETH.address, + flowRate: inflowRateEthHalf, + shouldUseCallAgreement: true, + }) + .exec(bobSigner) + + await sf.cfaV1 + .createFlow({ + sender: karenSigner.address, + receiver: twoWayMarket.address, + superToken: stIbAlluoUSD.address, + flowRate: inflowRateUsdc, + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['carl']), + shouldUseCallAgreement: true, + }) + .exec(karenSigner) + + await increaseTime(3600) + + // NOTE: This method stopped working because of SF protocol changes + // // Jail the app + // await impersonateAndSetBalance(Constants.CFA_SUPERFLUID_ADDRESS); + // let cfaSigner = await ethers.getSigner(Constants.CFA_SUPERFLUID_ADDRESS) + // await sf.host.hostContract.connect(cfaSigner).jailApp('0x01', twoWayMarket.address, 0, {gasLimit: '3000000'}) + + // NOTE: So instead you will need to modify the + await sf.cfaV1 + .deleteFlow({ + receiver: twoWayMarket.address, + sender: karenSigner.address, + superToken: stIbAlluoUSD.address, + shouldUseCallAgreement: true, + overrides, + }) + .exec(karenSigner) + + // Take a snapshot + snapshot = await provider.send('evm_snapshot', []) + }) + + beforeEach(async () => { + // Revert to the point REXMarket was just deployed + const success = await provider.send('evm_revert', [snapshot]) + // Take another snapshot to be able to revert again next time + snapshot = await provider.send('evm_snapshot', []) + expect(success).to.equal(true) + }) + + afterEach(async () => { + // Check the app isn't jailed + // await resetMeasurements(); + }) + + it('#3.1 emergencyCloseStream', async () => { + await twoWayMarket.emergencyCloseStream(aliceSigner.address, stIbAlluoUSD.address) + await twoWayMarket.emergencyCloseStream(bobSigner.address, stIbAlluoETH.address) + + expect(await twoWayMarket.getStreamRate(aliceSigner.address, stIbAlluoUSD.address)).to.equal(0) + + expect(await twoWayMarket.getStreamRate(bobSigner.address, stIbAlluoETH.address)).to.equal(0) + }) + + it('#3.2 should correctly emergency drain', async () => { + // + // await expect( + // twoWayMarket.emergencyDrain(stIbAlluoETH.address), + // ).to.be.revertedWith('!zeroStreamers'); + // + // await expect( + // twoWayMarket.emergencyDrain(stIbAlluoUSD.address), + // ).to.be.revertedWith('!zeroStreamers'); + + // Close both flows + // Delete Alices stream + await sf.cfaV1 + .deleteFlow({ + receiver: twoWayMarket.address, + sender: aliceSigner.address, + superToken: stIbAlluoUSD.address, + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + + // Delete Bobs stream + await sf.cfaV1 + .deleteFlow({ + receiver: twoWayMarket.address, + sender: bobSigner.address, + superToken: stIbAlluoETH.address, + shouldUseCallAgreement: true, + }) + .exec(bobSigner) + + await twoWayMarket.emergencyDrain(stIbAlluoETH.address) + await twoWayMarket.emergencyDrain(stIbAlluoUSD.address) + await twoWayMarket.emergencyDrain(ricochetRIC.address) + + expect( + ( + await stIbAlluoUSD.balanceOf({ + account: twoWayMarket.address, + providerOrSigner: provider, + }) + ).toString() + ).to.equal('0') + + expect( + ( + await stIbAlluoETH.balanceOf({ + account: twoWayMarket.address, + providerOrSigner: provider, + }) + ).toString() + ).to.equal('0') + + expect( + ( + await ricochetRIC.balanceOf({ + account: twoWayMarket.address, + providerOrSigner: provider, + }) + ).toString() + ).to.equal('0') + + await takeMeasurements() + + // Check the owner recovers the funds sent in afterwards + let appDelta = await delta(twoWayMarket, appBalances) + let ownerDelta = await delta(adminSigner, ownerBalances) + let aliceDelta = await delta(aliceSigner, aliceBalances) + let bobDelta = await delta(bobSigner, bobBalances) + + // Expect the owner can recover the locked funds + expect(ownerDelta.stIbAlluoETH).to.be.within(-1 * bobDelta.stIbAlluoETH * 0.99, -1 * bobDelta.stIbAlluoETH * 1.01) + expect(ownerDelta.stIbAlluoUSD).to.be.within( + -1 * aliceDelta.stIbAlluoUSD * 0.99, + -1 * aliceDelta.stIbAlluoUSD * 1.01 + ) + // Recover the RIC subsidies + expect(ownerDelta.ric).to.be.within(-1 * appDelta.ric * 0.99999, -1 * appDelta.ric * 1.00001) + }) + + it('#3.3 closeStream', async () => { + let aliceBalanceUsdcx = await stIbAlluoUSD.balanceOf({ + account: aliceSigner.address, + providerOrSigner: provider, + }) + aliceBalanceUsdcx = ethers.BigNumber.from(aliceBalanceUsdcx.toString()) + // When user create stream, SF locks 4 hour deposit called initial deposit + const initialDeposit = aliceBalanceUsdcx.div(ethers.BigNumber.from('13')).mul(ethers.BigNumber.from('4')) + const inflowRate = aliceBalanceUsdcx + .sub(initialDeposit) + .div(ethers.BigNumber.from(9 * 3600)) + .toString() + // Initialize a streamer with 9 hours of balance + await sf.cfaV1 + .updateFlow({ + receiver: twoWayMarket.address, + superToken: stIbAlluoUSD.address, + flowRate: inflowRate.toString(), + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + // Verfiy closing attempts revert + await expect(twoWayMarket.closeStream(aliceSigner.address, stIbAlluoUSD.address)).to.revertedWith('!closable') + // Advance time 2 hours + await increaseTime(2 * 3600) + // Verify closing the stream works + aliceBalanceUsdcx = await stIbAlluoUSD.balanceOf({ + account: aliceSigner.address, + providerOrSigner: provider, + }) + await twoWayMarket.closeStream(aliceSigner.address, stIbAlluoUSD.address) + expect(await twoWayMarket.getStreamRate(aliceSigner.address, stIbAlluoUSD.address)).to.equal('0') + }) + }) +}) diff --git a/test/REXTwoWayAlluoUsdcxMarket.test.ts b/test/REXTwoWayAlluoUsdcxMarket.test.ts index 647dd8c..5d519ce 100644 --- a/test/REXTwoWayAlluoUsdcxMarket.test.ts +++ b/test/REXTwoWayAlluoUsdcxMarket.test.ts @@ -1,729 +1,773 @@ -import { waffle, ethers } from "hardhat"; -import { setup, IUser, ISuperToken } from "../misc/setup"; -import { common } from "../misc/common"; -import { expect } from "chai"; -import { HttpService } from "./../misc/HttpService"; -import { Framework, SuperToken } from "@superfluid-finance/sdk-core"; -import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; -import { REXTwoWayAlluoUsdcxMarket, REXReferral, ERC20, REXReferral__factory, IConstantFlowAgreementV1 } from "../typechain"; -import { increaseTime, impersonateAndSetBalance } from "./../misc/helpers"; -import { Constants } from "../misc/Constants"; -import { AbiCoder, parseUnits } from "ethers/lib/utils"; - -const { provider, loadFixture } = waffle; -const TEST_TRAVEL_TIME = 3600 * 2; // 2 hours +import { waffle, ethers } from 'hardhat' +import { setup, IUser, ISuperToken } from '../misc/setup' +import { common } from '../misc/common' +import { expect } from 'chai' +import { HttpService } from './../misc/HttpService' +import { Framework, SuperToken } from '@superfluid-finance/sdk-core' +import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' +import { + REXTwoWayAlluoUsdcxMarket, + REXReferral, + ERC20, + REXReferral__factory, + IConstantFlowAgreementV1, +} from '../typechain' +import { increaseTime, impersonateAndSetBalance } from './../misc/helpers' +import { Constants } from '../misc/Constants' +import { AbiCoder, parseUnits } from 'ethers/lib/utils' + +const { provider, loadFixture } = waffle +const TEST_TRAVEL_TIME = 3600 * 2 // 2 hours // Index 1 is for Ether and 0 for USDCx -const USDCX_SUBSCRIPTION_INDEX = 0; -const IBALLUOUSD_SUBSCRIPTION_INDEX = 1; -const RIC_SUBSCRIPTION_INDEX = 2; +const USDCX_SUBSCRIPTION_INDEX = 0 +const IBALLUOUSD_SUBSCRIPTION_INDEX = 1 +const RIC_SUBSCRIPTION_INDEX = 2 export interface superTokenAndItsIDAIndex { - token: SuperToken; - IDAIndex: number; + token: SuperToken + IDAIndex: number } describe('REXTwoWayAlluoUsdcxMarket', () => { - const errorHandler = (err: any) => { - if (err) throw err; - }; - - const overrides = { gasLimit: '6000000' }; // Using this to manually limit gas to avoid giga-errors. - const inflowRateUsdc = "1000000000000000"; - const inflowRateUsdcDeposit = "4000000000000000" - const inflowRateUsdc10x = "10000000000000000"; - const inflowRateEth = "1000000000000"; - const inflowRateEthHalf = "500000000000"; - const subsidyRate = "10000000000000"; - - let rexReferral: REXReferral__factory; - let REXMarketFactory: any; - let referral: any; - let snapshot: any; - - let adminSigner: SignerWithAddress; - let aliceSigner: SignerWithAddress; - let bobSigner: SignerWithAddress; - let carlSigner: SignerWithAddress; - let usdcxWhaleSigner: SignerWithAddress; - let ethxWhaleSigner: SignerWithAddress; - let maticxWhaleSigner: SignerWithAddress; - let stIbAlluoUSDWhaleSigner: SignerWithAddress; - let ibAlluoETHWhaleSigner: SignerWithAddress; - let karenSigner: SignerWithAddress; - - let oraclePrice: number; - - let appBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [], maticx: [] }; - let ownerBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [], maticx: [] }; - let aliceBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [], maticx: [] }; - let bobBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [], maticx: [] }; - let carlBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [], maticx: [] }; - let karenBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [], maticx: [] }; - - let sf: Framework, - superT: ISuperToken, - u: { [key: string]: IUser }, - twoWayMarket: REXTwoWayAlluoUsdcxMarket, - tokenss: { [key: string]: any }, - sfRegistrationKey: any, - accountss: SignerWithAddress[], - constant: { [key: string]: string }, - ERC20: any; - - // ************** All the supertokens used in Ricochet are declared ********************** - let stIbAlluoUSD: SuperToken; - let ibAlluoETH: SuperToken; - let ricochetRIC: SuperToken; - let ricochetUSDCx: SuperToken; - let ricochetUSDC: SuperToken; - let weth: any; - - let usdcxAndItsIDAIndex: superTokenAndItsIDAIndex; - let stIbAlluoUSDAndItsIDAIndex: superTokenAndItsIDAIndex; - let ricAndItsIDAIndex: superTokenAndItsIDAIndex; - let ricAndItsOtherIDAIndex: superTokenAndItsIDAIndex; - - // *************************************************************************************** - async function takeMeasurements(balances: SuperTokensBalances, signer: SignerWithAddress): Promise { - - appBalances.stIbAlluoUSD.push((await superT.stIbAlluoUSD.balanceOf({ account: twoWayMarket.address, providerOrSigner: provider })).toString()); - ownerBalances.stIbAlluoUSD.push((await superT.stIbAlluoUSD.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString()); - aliceBalances.stIbAlluoUSD.push((await superT.stIbAlluoUSD.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - carlBalances.stIbAlluoUSD.push((await superT.stIbAlluoUSD.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString()); - karenBalances.stIbAlluoUSD.push((await superT.stIbAlluoUSD.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); - bobBalances.stIbAlluoUSD.push((await superT.stIbAlluoUSD.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString()); - - appBalances.ricochetUSDCx.push((await ricochetUSDCx.balanceOf({ account: twoWayMarket.address, providerOrSigner: provider })).toString()); - ownerBalances.ricochetUSDCx.push((await ricochetUSDCx.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString()); - aliceBalances.ricochetUSDCx.push((await ricochetUSDCx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - carlBalances.ricochetUSDCx.push((await ricochetUSDCx.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString()); - karenBalances.ricochetUSDCx.push((await ricochetUSDCx.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); - bobBalances.ricochetUSDCx.push((await ricochetUSDCx.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString()); - - appBalances.ric.push((await superT.ric.balanceOf({ account: twoWayMarket.address, providerOrSigner: provider })).toString()); - ownerBalances.ric.push((await superT.ric.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString()); - aliceBalances.ric.push((await superT.ric.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - carlBalances.ric.push((await superT.ric.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString()); - karenBalances.ric.push((await superT.ric.balanceOf({account: u.karen.address, providerOrSigner: provider})).toString()); - bobBalances.ric.push((await superT.ric.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString()); + const errorHandler = (err: any) => { + if (err) throw err + } + + const overrides = { gasLimit: '6000000' } // Using this to manually limit gas to avoid giga-errors. + const inflowRateUsdc = '1000000000000000' + const inflowRateUsdcDeposit = '4000000000000000' + const inflowRateUsdc10x = '10000000000000000' + const inflowRateEth = '1000000000000' + const inflowRateEthHalf = '500000000000' + const subsidyRate = '10000000000000' + + let rexReferral: REXReferral__factory + let REXMarketFactory: any + let referral: any + let snapshot: any + + let adminSigner: SignerWithAddress + let aliceSigner: SignerWithAddress + let bobSigner: SignerWithAddress + let carlSigner: SignerWithAddress + let usdcxWhaleSigner: SignerWithAddress + let ethxWhaleSigner: SignerWithAddress + let maticxWhaleSigner: SignerWithAddress + let stIbAlluoUSDWhaleSigner: SignerWithAddress + let ibAlluoETHWhaleSigner: SignerWithAddress + let karenSigner: SignerWithAddress + + let oraclePrice: number + + let appBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [], maticx: [] } + let ownerBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [], maticx: [] } + let aliceBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [], maticx: [] } + let bobBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [], maticx: [] } + let carlBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [], maticx: [] } + let karenBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [], maticx: [] } + + let sf: Framework, + superT: ISuperToken, + u: { [key: string]: IUser }, + twoWayMarket: REXTwoWayAlluoUsdcxMarket, + tokenss: { [key: string]: any }, + sfRegistrationKey: any, + accountss: SignerWithAddress[], + constant: { [key: string]: string }, + ERC20: any + + // ************** All the supertokens used in Ricochet are declared ********************** + let stIbAlluoUSD: SuperToken + let ibAlluoETH: SuperToken + let ricochetRIC: SuperToken + let ricochetUSDCx: SuperToken + let ricochetUSDC: SuperToken + let weth: any + + let usdcxAndItsIDAIndex: superTokenAndItsIDAIndex + let stIbAlluoUSDAndItsIDAIndex: superTokenAndItsIDAIndex + let ricAndItsIDAIndex: superTokenAndItsIDAIndex + let ricAndItsOtherIDAIndex: superTokenAndItsIDAIndex + + // *************************************************************************************** + async function takeMeasurements(balances: SuperTokensBalances, signer: SignerWithAddress): Promise { + appBalances.stIbAlluoUSD.push( + (await superT.stIbAlluoUSD.balanceOf({ account: twoWayMarket.address, providerOrSigner: provider })).toString() + ) + ownerBalances.stIbAlluoUSD.push( + (await superT.stIbAlluoUSD.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString() + ) + aliceBalances.stIbAlluoUSD.push( + (await superT.stIbAlluoUSD.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + carlBalances.stIbAlluoUSD.push( + (await superT.stIbAlluoUSD.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString() + ) + karenBalances.stIbAlluoUSD.push( + (await superT.stIbAlluoUSD.balanceOf({ account: u.karen.address, providerOrSigner: provider })).toString() + ) + bobBalances.stIbAlluoUSD.push( + (await superT.stIbAlluoUSD.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString() + ) + + appBalances.ricochetUSDCx.push( + (await ricochetUSDCx.balanceOf({ account: twoWayMarket.address, providerOrSigner: provider })).toString() + ) + ownerBalances.ricochetUSDCx.push( + (await ricochetUSDCx.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString() + ) + aliceBalances.ricochetUSDCx.push( + (await ricochetUSDCx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + carlBalances.ricochetUSDCx.push( + (await ricochetUSDCx.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString() + ) + karenBalances.ricochetUSDCx.push( + (await ricochetUSDCx.balanceOf({ account: u.karen.address, providerOrSigner: provider })).toString() + ) + bobBalances.ricochetUSDCx.push( + (await ricochetUSDCx.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString() + ) + + appBalances.ric.push( + (await superT.ric.balanceOf({ account: twoWayMarket.address, providerOrSigner: provider })).toString() + ) + ownerBalances.ric.push( + (await superT.ric.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString() + ) + aliceBalances.ric.push( + (await superT.ric.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + carlBalances.ric.push( + (await superT.ric.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString() + ) + karenBalances.ric.push( + (await superT.ric.balanceOf({ account: u.karen.address, providerOrSigner: provider })).toString() + ) + bobBalances.ric.push( + (await superT.ric.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString() + ) + } + + async function resetMeasurements(): Promise { + appBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [] } + ownerBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [] } + aliceBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [] } + bobBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [] } + carlBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [] } + karenBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [] } + } + + async function approveSubscriptions(tokensAndIDAIndexes: superTokenAndItsIDAIndex[], signers: SignerWithAddress[]) { + console.log(' ======== Inside approveSubscriptions ===========') + let tokenIndex: number + for (let i = 0; i < signers.length; i++) { + for (let j = 0; j < tokensAndIDAIndexes.length; j++) { + tokenIndex = tokensAndIDAIndexes[j].IDAIndex + await sf.idaV1 + .approveSubscription({ + indexId: tokenIndex.toString(), + superToken: tokensAndIDAIndexes[j].token.address, + publisher: twoWayMarket.address, + userData: '0x', + }) + .exec(signers[i]) + console.log('====== ', i, ' subscription to token ', j, ' approved =======') + } } - - async function resetMeasurements(): Promise { - appBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [] }; - ownerBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [] }; - aliceBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [] }; - bobBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [] }; - carlBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [] }; - karenBalances = { stIbAlluoUSD: [], ricochetUSDCx: [], ric: [] }; + } + + async function checkBalance(user: SignerWithAddress, name: string) { + console.log(' checkBalance START ======== Balance of ', name, ' with address: ', user.address, ' ============= ') + let balanceUsdcx = await ricochetUSDCx.balanceOf({ + account: user.address, + providerOrSigner: provider, + }) + let balanceIballuoUSD = await stIbAlluoUSD.balanceOf({ + account: user.address, + providerOrSigner: provider, + }) + let balanceRic = await ricochetRIC.balanceOf({ + account: user.address, + providerOrSigner: provider, + }) + + console.log('Balance in USDCx: ', balanceUsdcx) + console.log('Balance in stIbAlluoUSD: ', balanceIballuoUSD) + console.log('Balance in RIC: ', balanceRic) + console.log(' checkBalance END ====================================================== ') + } + + async function delta(account: SignerWithAddress, balances: any) { + const len = balances.ricochetUSDCx.length + return { + ricochetUSDCx: balances.ricochetUSDCx[len - 1] - balances.ricochetUSDCx[len - 2], + stIbAlluoUSD: balances.stIbAlluoUSD[len - 1] - balances.stIbAlluoUSD[len - 2], + ric: balances.ric[len - 1] - balances.ric[len - 2], } - - async function approveSubscriptions(tokensAndIDAIndexes: superTokenAndItsIDAIndex[], signers: SignerWithAddress[]) { - console.log(" ======== Inside approveSubscriptions ==========="); - let tokenIndex: number; - for (let i = 0; i < signers.length; i++) { - for (let j = 0; j < tokensAndIDAIndexes.length; j++) { - tokenIndex = tokensAndIDAIndexes[j].IDAIndex; - await sf.idaV1 - .approveSubscription({ - indexId: tokenIndex.toString(), - superToken: tokensAndIDAIndexes[j].token.address, - publisher: twoWayMarket.address, - userData: "0x", - }) - .exec(signers[i]); - console.log("====== ", i, " subscription to token ", j, " approved ======="); - } - } + } + + before(async () => { + hre.tracer.enable = false + const { superfluid, users, accounts, tokens, superTokens, contracts, constants } = await setup() + console.log('============ Right after initSuperfluid() ==================') + + const { createSFRegistrationKey } = await common() + + u = users + sf = superfluid + superT = superTokens + tokenss = tokens + accountss = accounts + sfRegistrationKey = createSFRegistrationKey + constant = constants + + // This order is established in misc/setup.ts + adminSigner = accountss[0] + aliceSigner = accountss[1] + bobSigner = accountss[2] + carlSigner = accountss[3] + karenSigner = accountss[4] + usdcxWhaleSigner = accountss[5] + stIbAlluoUSDWhaleSigner = accountss[8] + + ricochetRIC = superT.ric + ricochetUSDCx = superT.usdcx + stIbAlluoUSD = superT.stIbAlluoUSD + weth = tokenss.weth + + // TODO: Please refactor this + stIbAlluoUSDAndItsIDAIndex = { + token: stIbAlluoUSD, + IDAIndex: 0, } - - async function checkBalance(user: SignerWithAddress, name: string) { - console.log(" checkBalance START ======== Balance of ", name, " with address: ", user.address, " ============= "); - let balanceUsdcx = await ricochetUSDCx.balanceOf({ - account: user.address, providerOrSigner: provider - }); - let balanceIballuoUSD = await stIbAlluoUSD.balanceOf({ - account: user.address, providerOrSigner: provider - }); - let balanceRic = await ricochetRIC.balanceOf({ - account: user.address, providerOrSigner: provider - }); - - console.log("Balance in USDCx: ", balanceUsdcx); - console.log("Balance in stIbAlluoUSD: ", balanceIballuoUSD); - console.log("Balance in RIC: ", balanceRic); - console.log(" checkBalance END ====================================================== "); + ricAndItsIDAIndex = { + token: ricochetRIC, + IDAIndex: 1, } - async function delta(account: SignerWithAddress, balances: any) { - const len = balances.ricochetUSDCx.length; - return { - ricochetUSDCx: balances.ricochetUSDCx[len - 1] - balances.ricochetUSDCx[len - 2], - stIbAlluoUSD: balances.stIbAlluoUSD[len - 1] - balances.stIbAlluoUSD[len - 2], - ric: balances.ric[len - 1] - balances.ric[len - 2], - } + console.log('======******** List of addresses =======') + for (let i = 0; i < accountss.length; i++) { + console.log('Address number ', i, ': ', accountss[i].address) } - + console.log('++++++++++++++ alice address number: ', aliceSigner.address) + console.log('++++++++++++++ bob address number: ', bobSigner.address) + console.log('++++++++++++++ carl address number: ', carlSigner.address) + + console.log('======******** List of TOKENS addresses =======') + console.log("======** stIbAlluoUSD's address: ", stIbAlluoUSD.address) + console.log("======** USDCx's address: ", ricochetUSDCx.address) + // ============================================================================== + + // Deploy REXReferral + rexReferral = await ethers.getContractFactory('REXReferral', { + signer: adminSigner, + }) + referral = await rexReferral.deploy() + await referral.deployed() + console.log('=========== Deployed REXReferral ============') + + // ============================================================================== + const registrationKey = await sfRegistrationKey(sf, adminSigner.address) + console.log('============ Right after sfRegistrationKey() ==================') + + // ============== + // Deploy REX Market + console.log('Deploying REXTwoWayAlluoUsdcxMarket...') + REXMarketFactory = await ethers.getContractFactory('REXTwoWayAlluoUsdcxMarket', adminSigner) + console.log('admin signer address:', adminSigner.address) + twoWayMarket = await REXMarketFactory.deploy( + adminSigner.address, + sf.settings.config.hostAddress, + Constants.CFA_SUPERFLUID_ADDRESS, + Constants.IDA_SUPERFLUID_ADDRESS, + registrationKey, + referral.address + ) + console.log('=========== Deployed REXTwoWayAlluoUsdcxMarket ============') + + console.log('initializeTwoWayMarket', stIbAlluoUSD.address, ricochetUSDCx.address) + await twoWayMarket.initializeTwoWayMarket(ricochetUSDCx.address, 1, stIbAlluoUSD.address, 1, 0, 20000) + console.log('=========== Initialized TwoWayMarket ============') + + await twoWayMarket.initializeSubsidies(subsidyRate, ricochetRIC.address) + console.log('========== Initialized subsidies ===========') + + await checkBalance(stIbAlluoUSDWhaleSigner, 'the stIbAlluoUSD whale') + await checkBalance(usdcxWhaleSigner, 'the USDCx whale') + // send the contract some RIC + try { + await ricochetRIC + .transfer({ + receiver: twoWayMarket.address, + amount: '1000000000000000000', + }) + .exec(adminSigner) + } catch (err: any) { + console.log('Ricochet - ERROR transferring RICs to the contract: ', err) + } + console.log('============ RICs have been sent to the contract =============') + await checkBalance(adminSigner, 'the contract') + + // Register the market with REXReferral + await referral.registerApp(twoWayMarket.address) + referral = await referral.connect(carlSigner) + await referral.applyForAffiliate('carl', 'carl') + referral = await referral.connect(adminSigner) + await referral.verifyAffiliate('carl') + console.log(' ============ The affiliate has been veryfied =============') + console.log('=======================================================================') + console.log('================ End of "before" block ==============================') + console.log('=======================================================================') + + // Do all the approvals + // TODO: Redo how indexes are setup + await approveSubscriptions( + [stIbAlluoUSDAndItsIDAIndex, ricAndItsIDAIndex], + [adminSigner, aliceSigner, bobSigner, karenSigner, carlSigner] + ) + + // Give Alice, Bob, Karen some tokens + let initialAmount = ethers.utils.parseUnits('1000', 18).toString() + await ricochetUSDCx + .transfer({ + receiver: aliceSigner.address, + amount: initialAmount, + }) + .exec(usdcxWhaleSigner) + console.log('====== Transferred USDCx to alice =======') + await ricochetUSDCx + .transfer({ + receiver: bobSigner.address, + amount: initialAmount, + }) + .exec(usdcxWhaleSigner) + console.log('====== Transferred USDCx to bob =======') + + await stIbAlluoUSD + .transfer({ + receiver: bobSigner.address, + amount: initialAmount, + }) + .exec(stIbAlluoUSDWhaleSigner) + console.log('====== Transferred USDCx to bob =======') + + await ricochetUSDCx + .transfer({ + receiver: karenSigner.address, + amount: initialAmount, + }) + .exec(usdcxWhaleSigner) + console.log('====== Transferred USDCx to karen =======') + await ricochetRIC + .transfer({ + receiver: bobSigner.address, + amount: '1000000000000000000000', + }) + .exec(adminSigner) + + // Take a snapshot to avoid redoing the setup + snapshot = await provider.send('evm_snapshot', []) + }) + + context.only('#1 - new rexmarket with no streamers', async () => { + beforeEach(async () => { + // Revert to the point REXMarket was just deployed + const success = await provider.send('evm_revert', [snapshot]) + // Take another snapshot to be able to revert again next time + snapshot = await provider.send('evm_snapshot', []) + expect(success).to.equal(true) + }) + + afterEach(async () => { + // Check the app isn't jailed + expect(await twoWayMarket.isAppJailed()).to.equal(false) + await resetMeasurements() + }) + + it('#1.1 getters/setters', async () => { + await twoWayMarket.setRateTolerance(1000) + expect(await twoWayMarket.getRateTolerance()).to.equal(1000) + await twoWayMarket.setFeeRate(0, 1000) + expect(await twoWayMarket.getFeeRate(0)).to.equal(1000) + await twoWayMarket.setEmissionRate(0, 1000) + expect(await twoWayMarket.getEmissionRate(0)).to.equal(1000) + expect((await twoWayMarket.getOutputPool(0)).toString()).to.equal(`${stIbAlluoUSD.address},1000,1000,1`) + expect((await twoWayMarket.getLastDistributionAt()).toNumber()).to.be.above(0) + }) + + it('#1.2 before/afterAgreementCreated callbacks', async () => { + // Alice opens a USDC stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: twoWayMarket.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc, + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['carl']), + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + // Expect share allocations were done correctly + expect(await twoWayMarket.getStreamRate(aliceSigner.address, ricochetUSDCx.address)).to.equal(inflowRateUsdc) + expect((await twoWayMarket.getIDAShares(IBALLUOUSD_SUBSCRIPTION_INDEX, aliceSigner.address)).toString()).to.equal( + `true,true,1000000000000000,0` + ) + // No fees + + // Bob opens a USDC stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: bobSigner.address, + receiver: twoWayMarket.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc, + shouldUseCallAgreement: true, + }) + .exec(bobSigner) + // Expect share allocations were done correctly + expect(await twoWayMarket.getStreamRate(bobSigner.address, ricochetUSDCx.address)).to.equal(inflowRateUsdc) + expect((await twoWayMarket.getIDAShares(IBALLUOUSD_SUBSCRIPTION_INDEX, bobSigner.address)).toString()).to.equal( + `true,true,1000000000000000,0` + ) + }) + + // TODO: before/afterAgreementUpdated + + it('#1.3 before/afterAgreementTerminated callbacks', async () => { + await takeMeasurements() + + // Alice opens a USDC stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: twoWayMarket.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc, + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['carl']), + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + + // Bob opens a ETH stream to REXMarket + // await sf.cfaV1.createFlow({ + // sender: bobSigner.address, + // receiver: twoWayMarket.address, + // superToken: ricochetUSDCx.address, + // flowRate: inflowRateUsdc10x, + // }).exec(bobSigner); + + await increaseTime(3600) + + // Delete Alices stream before first distributions + await sf.cfaV1 + .deleteFlow({ + receiver: twoWayMarket.address, + sender: aliceSigner.address, + superToken: ricochetUSDCx.address, + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + + // Delete Alices stream before first distributions + // await sf.cfaV1.deleteFlow({ + // receiver: twoWayMarket.address, + // sender: bobSigner.address, + // superToken: ricochetUSDCx.address + // }).exec(bobSigner); + + await takeMeasurements() + + // Check balance for alice again + let aliceDelta = await delta(aliceSigner, aliceBalances) + let bobDelta = await delta(bobSigner, bobBalances) + + // Expect alice didn't lose anything since she closed stream before distribute + expect(aliceDelta.ricochetUSDCx).to.equal(0) + expect(aliceDelta.ricochetUSDCx).to.equal(0) + + // TODO: expect(bobDelta.ibAlluoETH).to.equal(0); + + // Expect share allocations were done correctly + expect(await twoWayMarket.getStreamRate(aliceSigner.address, ricochetUSDCx.address)).to.equal('0') + expect(await twoWayMarket.getStreamRate(bobSigner.address, ricochetUSDCx.address)).to.equal('0') + expect((await twoWayMarket.getIDAShares(IBALLUOUSD_SUBSCRIPTION_INDEX, aliceSigner.address)).toString()).to.equal( + `true,true,0,0` + ) + expect((await twoWayMarket.getIDAShares(IBALLUOUSD_SUBSCRIPTION_INDEX, bobSigner.address)).toString()).to.equal( + `true,true,0,0` + ) + }) + + it('#1.4 one-sided distribution USDCx > stIbAlluoUSD', async () => { + // Alice opens a USDC stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: twoWayMarket.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc10x, + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['carl']), + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + + await sf.cfaV1 + .createFlow({ + sender: bobSigner.address, + receiver: twoWayMarket.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc, + shouldUseCallAgreement: true, + }) + .exec(bobSigner) + + // Check balance + await takeMeasurements() + + // Fast forward an hour and distribute + await increaseTime(3600) + await twoWayMarket.distribute('0x') + + // Check balances again + await takeMeasurements() + + // Compute the delta + let deltaAlice = await delta(aliceSigner, aliceBalances) + let deltaBob = await delta(bobSigner, bobBalances) + + // NOTE: Pulled manually from the forked block number + let realGrowingRatio = 1.031139986258114078 + + // Expect Alice and Bob got the right output + // console.log("Alice got this much stIbAlluoUSD", deltaAlice.stIbAlluoUSD); + // console.log("Alice paid this much USDCx", -1 * deltaAlice.ricochetUSDCx); + // console.log("ibAlluoETH/USD rate", -1*deltaAlice.ricochetUSDCx/deltaAlice.stIbAlluoUSD); + // console.log("actual growing ratio", realGrowingRatio); + // console.log("loss", (-1*deltaAlice.ricochetUSDCx/deltaAlice.stIbAlluoUSD - realGrowingRatio) / realGrowingRatio); + + // Expect Alice and Bob got the right output less the 2% fee + 1% slippage + // console.log("Bob got this much stIbAlluoUSD", deltaBob.stIbAlluoUSD); + // console.log("Bob paid this much USDCx", -1 * deltaBob.ricochetUSDCx); + // console.log("ibAlluoETH/USD rate", -1*deltaBob.ricochetUSDCx/deltaBob.stIbAlluoUSD); + // console.log("actual growing ratio", realGrowingRatio); + // console.log("loss", (-1*deltaBob.ricochetUSDCx/deltaBob.stIbAlluoUSD - realGrowingRatio) / realGrowingRatio); + + // console.log("Bob got this much USDCx", deltaBob.ricochetUSDCx); + // console.log("Bob paid this much stIbAlluoUSD", -1 * deltaBob.stIbAlluoUSD); + // console.log("ibAlluoETH/USD rate", -1*deltaBob.stIbAlluoUSD/deltaAlice.ricochetUSDCx); + // console.log("actual growing ratio", realGrowingRatio); + // console.log("loss", (-1*deltaBob.stIbAlluoUSD/deltaAlice.ricochetUSDCx - realGrowingRatio) / realGrowingRatio); + + // Expect the growing ratio + // NOTE: There's a bit of loss in the rate due to a remainder from division in the IDA distribution + // Check here that that loss is less than 0.03% + expect( + ((-1 * deltaAlice.ricochetUSDCx) / deltaAlice.stIbAlluoUSD - realGrowingRatio) / realGrowingRatio + ).to.be.below(0.0003) + expect(((-1 * deltaBob.ricochetUSDCx) / deltaBob.stIbAlluoUSD - realGrowingRatio) / realGrowingRatio).to.be.below( + 0.0003 + ) + }) + }) + + xcontext('#3 - market is jailed', async () => { before(async () => { - hre.tracer.enable = false; - const { - superfluid, - users, - accounts, - tokens, - superTokens, - contracts, - constants, - } = await setup(); - console.log("============ Right after initSuperfluid() =================="); - - const { createSFRegistrationKey } = await common(); - - u = users; - sf = superfluid; - superT = superTokens; - tokenss = tokens; - accountss = accounts; - sfRegistrationKey = createSFRegistrationKey; - constant = constants; - - // This order is established in misc/setup.ts - adminSigner = accountss[0]; - aliceSigner = accountss[1]; - bobSigner = accountss[2]; - carlSigner = accountss[3]; - karenSigner = accountss[4]; - usdcxWhaleSigner = accountss[5]; - stIbAlluoUSDWhaleSigner = accountss[8]; - - ricochetRIC = superT.ric; - ricochetUSDCx = superT.usdcx; - stIbAlluoUSD = superT.stIbAlluoUSD; - weth = tokenss.weth - - // TODO: Please refactor this - stIbAlluoUSDAndItsIDAIndex = { - token: stIbAlluoUSD, - IDAIndex: 0, - } - ricAndItsIDAIndex = { - token: ricochetRIC, - IDAIndex: 1, - } - - - console.log("======******** List of addresses ======="); - for (let i = 0; i < accountss.length; i++) { - console.log("Address number ", i, ": ", accountss[i].address); - } - console.log("++++++++++++++ alice address number: ", aliceSigner.address); - console.log("++++++++++++++ bob address number: ", bobSigner.address); - console.log("++++++++++++++ carl address number: ", carlSigner.address); - - console.log("======******** List of TOKENS addresses ======="); - console.log("======** stIbAlluoUSD's address: ", stIbAlluoUSD.address); - console.log("======** USDCx's address: ", ricochetUSDCx.address); - // ============================================================================== - - // Deploy REXReferral - rexReferral = await ethers.getContractFactory("REXReferral", { - signer: adminSigner, - }); - referral = await rexReferral.deploy(); - await referral.deployed(); - console.log("=========== Deployed REXReferral ============"); - - // ============================================================================== - const registrationKey = await sfRegistrationKey(sf, adminSigner.address); - console.log("============ Right after sfRegistrationKey() =================="); - - // ============== - // Deploy REX Market - console.log("Deploying REXTwoWayAlluoUsdcxMarket..."); - REXMarketFactory = await ethers.getContractFactory( - "REXTwoWayAlluoUsdcxMarket", - adminSigner - ); - console.log("admin signer address:", adminSigner.address); - twoWayMarket = await REXMarketFactory.deploy( - adminSigner.address, - sf.settings.config.hostAddress, - Constants.CFA_SUPERFLUID_ADDRESS, - Constants.IDA_SUPERFLUID_ADDRESS, - registrationKey, - referral.address - ); - console.log("=========== Deployed REXTwoWayAlluoUsdcxMarket ============"); - - console.log("initializeTwoWayMarket", stIbAlluoUSD.address, ricochetUSDCx.address); - await twoWayMarket.initializeTwoWayMarket( - ricochetUSDCx.address, - 1, - stIbAlluoUSD.address, - 1, - 0, - 20000 - ); - console.log("=========== Initialized TwoWayMarket ============"); - - await twoWayMarket.initializeSubsidies(subsidyRate, ricochetRIC.address); - console.log("========== Initialized subsidies ==========="); - - await checkBalance(stIbAlluoUSDWhaleSigner, "the stIbAlluoUSD whale"); - await checkBalance(usdcxWhaleSigner, "the USDCx whale"); - // send the contract some RIC - try { - await ricochetRIC.transfer({ - receiver: twoWayMarket.address, - amount: "1000000000000000000" - }).exec(adminSigner); - } catch (err: any) { - console.log("Ricochet - ERROR transferring RICs to the contract: ", err); - } - console.log("============ RICs have been sent to the contract ============="); - await checkBalance(adminSigner, "the contract"); - - // Register the market with REXReferral - await referral.registerApp(twoWayMarket.address); - referral = await referral.connect(carlSigner); - await referral.applyForAffiliate("carl", "carl"); - referral = await referral.connect(adminSigner); - await referral.verifyAffiliate("carl"); - console.log(" ============ The affiliate has been veryfied ============="); - console.log("======================================================================="); - console.log("================ End of \"before\" block =============================="); - console.log("======================================================================="); - - - // Do all the approvals - // TODO: Redo how indexes are setup - await approveSubscriptions([stIbAlluoUSDAndItsIDAIndex, ricAndItsIDAIndex], - [adminSigner, aliceSigner, bobSigner, karenSigner, carlSigner]); - - // Give Alice, Bob, Karen some tokens - let initialAmount = ethers.utils.parseUnits("1000", 18).toString(); - await ricochetUSDCx - .transfer({ - receiver: aliceSigner.address, - amount: initialAmount, - }).exec(usdcxWhaleSigner); - console.log("====== Transferred USDCx to alice ======="); - await ricochetUSDCx - .transfer({ - receiver: bobSigner.address, - amount: initialAmount, - }).exec(usdcxWhaleSigner); - console.log("====== Transferred USDCx to bob ======="); - - await stIbAlluoUSD - .transfer({ - receiver: bobSigner.address, - amount: initialAmount, - }).exec(stIbAlluoUSDWhaleSigner); - console.log("====== Transferred USDCx to bob ======="); - - await ricochetUSDCx - .transfer({ - receiver: karenSigner.address, - amount: initialAmount, - }).exec(usdcxWhaleSigner); - console.log("====== Transferred USDCx to karen ======="); - await ricochetRIC - .transfer({ - receiver: bobSigner.address, - amount: '1000000000000000000000', - }).exec(adminSigner); - - // Take a snapshot to avoid redoing the setup - snapshot = await provider.send('evm_snapshot', []); - - }); - - context.only("#1 - new rexmarket with no streamers", async () => { - - beforeEach(async () => { - // Revert to the point REXMarket was just deployed - const success = await provider.send('evm_revert', [ - snapshot - ]); - // Take another snapshot to be able to revert again next time - snapshot = await provider.send('evm_snapshot', []); - expect(success).to.equal(true); - }); - - afterEach(async () => { - // Check the app isn't jailed - expect(await twoWayMarket.isAppJailed()).to.equal(false); - await resetMeasurements(); - }); - - it("#1.1 getters/setters", async () => { - - await twoWayMarket.setRateTolerance(1000); - expect(await twoWayMarket.getRateTolerance()).to.equal(1000); - await twoWayMarket.setFeeRate(0, 1000); - expect(await twoWayMarket.getFeeRate(0)).to.equal(1000); - await twoWayMarket.setEmissionRate(0, 1000); - expect(await twoWayMarket.getEmissionRate(0)).to.equal(1000); - expect((await twoWayMarket.getOutputPool(0)).toString()).to.equal(`${stIbAlluoUSD.address},1000,1000,1`); - expect((await twoWayMarket.getLastDistributionAt()).toNumber()).to.be.above(0) - - - }); - - it("#1.2 before/afterAgreementCreated callbacks", async () => { - - // Alice opens a USDC stream to REXMarket - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: twoWayMarket.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc, - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - shouldUseCallAgreement: true, - }).exec(aliceSigner); - // Expect share allocations were done correctly - expect( - await twoWayMarket.getStreamRate(aliceSigner.address, ricochetUSDCx.address) - ).to.equal(inflowRateUsdc); - expect( - (await twoWayMarket.getIDAShares(IBALLUOUSD_SUBSCRIPTION_INDEX, aliceSigner.address)).toString() - ).to.equal(`true,true,1000000000000000,0`); - // No fees - - // Bob opens a USDC stream to REXMarket - await sf.cfaV1.createFlow({ - sender: bobSigner.address, - receiver: twoWayMarket.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc, - shouldUseCallAgreement: true, - }).exec(bobSigner); - // Expect share allocations were done correctly - expect( - await twoWayMarket.getStreamRate(bobSigner.address, ricochetUSDCx.address) - ).to.equal(inflowRateUsdc); - expect( - (await twoWayMarket.getIDAShares(IBALLUOUSD_SUBSCRIPTION_INDEX, bobSigner.address)).toString() - ).to.equal(`true,true,1000000000000000,0`); - - }); - - // TODO: before/afterAgreementUpdated - - it("#1.3 before/afterAgreementTerminated callbacks", async () => { - - await takeMeasurements(); - - // Alice opens a USDC stream to REXMarket - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: twoWayMarket.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc, - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - shouldUseCallAgreement: true, - }).exec(aliceSigner); - - // Bob opens a ETH stream to REXMarket - // await sf.cfaV1.createFlow({ - // sender: bobSigner.address, - // receiver: twoWayMarket.address, - // superToken: ricochetUSDCx.address, - // flowRate: inflowRateUsdc10x, - // }).exec(bobSigner); - - await increaseTime(3600) - - // Delete Alices stream before first distributions - await sf.cfaV1.deleteFlow({ - receiver: twoWayMarket.address, - sender: aliceSigner.address, - superToken: ricochetUSDCx.address, - shouldUseCallAgreement: true, - }).exec(aliceSigner); - - // Delete Alices stream before first distributions - // await sf.cfaV1.deleteFlow({ - // receiver: twoWayMarket.address, - // sender: bobSigner.address, - // superToken: ricochetUSDCx.address - // }).exec(bobSigner); - - await takeMeasurements(); - - // Check balance for alice again - let aliceDelta = await delta(aliceSigner, aliceBalances); - let bobDelta = await delta(bobSigner, bobBalances); - - // Expect alice didn't lose anything since she closed stream before distribute - expect(aliceDelta.ricochetUSDCx).to.equal(0); - expect(aliceDelta.ricochetUSDCx).to.equal(0); - - // TODO: expect(bobDelta.ibAlluoETH).to.equal(0); - - // Expect share allocations were done correctly - expect( - await twoWayMarket.getStreamRate(aliceSigner.address, ricochetUSDCx.address) - ).to.equal('0'); - expect( - await twoWayMarket.getStreamRate(bobSigner.address, ricochetUSDCx.address) - ).to.equal('0'); - expect( - (await twoWayMarket.getIDAShares(IBALLUOUSD_SUBSCRIPTION_INDEX, aliceSigner.address)).toString() - ).to.equal(`true,true,0,0`); - expect( - (await twoWayMarket.getIDAShares(IBALLUOUSD_SUBSCRIPTION_INDEX, bobSigner.address)).toString() - ).to.equal(`true,true,0,0`); - - - }); - - it("#1.4 one-sided distribution USDCx > stIbAlluoUSD", async () => { - // Alice opens a USDC stream to REXMarket - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: twoWayMarket.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc10x, - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - shouldUseCallAgreement: true, - }).exec(aliceSigner); - - await sf.cfaV1.createFlow({ - sender: bobSigner.address, - receiver: twoWayMarket.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc, - shouldUseCallAgreement: true, - }).exec(bobSigner); - - // Check balance - await takeMeasurements(); - - // Fast forward an hour and distribute - await increaseTime(3600); - await twoWayMarket.distribute("0x"); - - // Check balances again - await takeMeasurements(); - - // Compute the delta - let deltaAlice = await delta(aliceSigner, aliceBalances); - let deltaBob = await delta(bobSigner, bobBalances); - - // NOTE: Pulled manually from the forked block number - let realGrowingRatio = 1.031139986258114078; - - // Expect Alice and Bob got the right output - // console.log("Alice got this much stIbAlluoUSD", deltaAlice.stIbAlluoUSD); - // console.log("Alice paid this much USDCx", -1 * deltaAlice.ricochetUSDCx); - // console.log("ibAlluoETH/USD rate", -1*deltaAlice.ricochetUSDCx/deltaAlice.stIbAlluoUSD); - // console.log("actual growing ratio", realGrowingRatio); - // console.log("loss", (-1*deltaAlice.ricochetUSDCx/deltaAlice.stIbAlluoUSD - realGrowingRatio) / realGrowingRatio); - - // Expect Alice and Bob got the right output less the 2% fee + 1% slippage - // console.log("Bob got this much stIbAlluoUSD", deltaBob.stIbAlluoUSD); - // console.log("Bob paid this much USDCx", -1 * deltaBob.ricochetUSDCx); - // console.log("ibAlluoETH/USD rate", -1*deltaBob.ricochetUSDCx/deltaBob.stIbAlluoUSD); - // console.log("actual growing ratio", realGrowingRatio); - // console.log("loss", (-1*deltaBob.ricochetUSDCx/deltaBob.stIbAlluoUSD - realGrowingRatio) / realGrowingRatio); - - - // console.log("Bob got this much USDCx", deltaBob.ricochetUSDCx); - // console.log("Bob paid this much stIbAlluoUSD", -1 * deltaBob.stIbAlluoUSD); - // console.log("ibAlluoETH/USD rate", -1*deltaBob.stIbAlluoUSD/deltaAlice.ricochetUSDCx); - // console.log("actual growing ratio", realGrowingRatio); - // console.log("loss", (-1*deltaBob.stIbAlluoUSD/deltaAlice.ricochetUSDCx - realGrowingRatio) / realGrowingRatio); - - - // Expect the growing ratio - // NOTE: There's a bit of loss in the rate due to a remainder from division in the IDA distribution - // Check here that that loss is less than 0.03% - expect((-1*deltaAlice.ricochetUSDCx/deltaAlice.stIbAlluoUSD - realGrowingRatio) / realGrowingRatio).to.be.below(0.0003); - expect((-1*deltaBob.ricochetUSDCx/deltaBob.stIbAlluoUSD - realGrowingRatio) / realGrowingRatio).to.be.below(0.0003); - - }); - - }); - - xcontext("#3 - market is jailed", async () => { - - before(async () => { - const success = await provider.send('evm_revert', [ - snapshot - ]); - - await takeMeasurements(); - - // Alice opens a USDC stream to REXMarket - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: twoWayMarket.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc, - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - shouldUseCallAgreement: true, - }).exec(aliceSigner); - // Bob opens a ETH stream to REXMarket - await sf.cfaV1.createFlow({ - sender: bobSigner.address, - receiver: twoWayMarket.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateEthHalf, - shouldUseCallAgreement: true, - }).exec(bobSigner); - - await sf.cfaV1.createFlow({ - sender: karenSigner.address, - receiver: twoWayMarket.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc, - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - shouldUseCallAgreement: true, - }).exec(karenSigner); - - await increaseTime(3600); - - // NOTE: This method stopped working because of SF protocol changes - // // Jail the app - // await impersonateAndSetBalance(Constants.CFA_SUPERFLUID_ADDRESS); - // let cfaSigner = await ethers.getSigner(Constants.CFA_SUPERFLUID_ADDRESS) - // await sf.host.hostContract.connect(cfaSigner).jailApp('0x01', twoWayMarket.address, 0, {gasLimit: '3000000'}) - - // NOTE: So instead you will need to modify the - await sf.cfaV1.deleteFlow({ - receiver: twoWayMarket.address, - sender: karenSigner.address, - superToken: stIbAlluoUSD.address, - shouldUseCallAgreement: true, - overrides, - }).exec(karenSigner); - - // Take a snapshot - snapshot = await provider.send('evm_snapshot', []); - - }); - - beforeEach(async () => { - // Revert to the point REXMarket was just deployed - const success = await provider.send('evm_revert', [ - snapshot - ]); - // Take another snapshot to be able to revert again next time - snapshot = await provider.send('evm_snapshot', []); - expect(success).to.equal(true); - }); - - afterEach(async () => { - // Check the app isn't jailed - // await resetMeasurements(); - }); - - it("#3.1 emergencyCloseStream", async () => { - - await twoWayMarket.emergencyCloseStream(aliceSigner.address, stIbAlluoUSD.address); - await twoWayMarket.emergencyCloseStream(bobSigner.address, ibAlluoETH.address); - - expect( - await twoWayMarket.getStreamRate(aliceSigner.address, stIbAlluoUSD.address) - ).to.equal(0); - - expect( - await twoWayMarket.getStreamRate(bobSigner.address, ibAlluoETH.address) - ).to.equal(0); - - }); - - it("#3.2 should correctly emergency drain", async () => { - // - // await expect( - // twoWayMarket.emergencyDrain(ibAlluoETH.address), - // ).to.be.revertedWith('!zeroStreamers'); - // - // await expect( - // twoWayMarket.emergencyDrain(stIbAlluoUSD.address), - // ).to.be.revertedWith('!zeroStreamers'); - - // Close both flows - // Delete Alices stream - await sf.cfaV1.deleteFlow({ - receiver: twoWayMarket.address, - sender: aliceSigner.address, - superToken: stIbAlluoUSD.address, - shouldUseCallAgreement: true, - }).exec(aliceSigner); - - // Delete Bobs stream - await sf.cfaV1.deleteFlow({ - receiver: twoWayMarket.address, - sender: bobSigner.address, - superToken: ibAlluoETH.address, - shouldUseCallAgreement: true, - }).exec(bobSigner); - - await twoWayMarket.emergencyDrain(ibAlluoETH.address); - await twoWayMarket.emergencyDrain(stIbAlluoUSD.address); - await twoWayMarket.emergencyDrain(ricochetRIC.address); - - expect((await stIbAlluoUSD.balanceOf({ - account: twoWayMarket.address, providerOrSigner: provider - })).toString()).to.equal('0'); - - expect((await ibAlluoETH.balanceOf({ - account: twoWayMarket.address, providerOrSigner: provider - })).toString()).to.equal('0'); - - expect((await ricochetRIC.balanceOf({ - account: twoWayMarket.address, providerOrSigner: provider - })).toString()).to.equal('0'); - - await takeMeasurements(); - - // Check the owner recovers the funds sent in afterwards - let appDelta = await delta(twoWayMarket, appBalances); - let ownerDelta = await delta(adminSigner, ownerBalances); - let aliceDelta = await delta(aliceSigner, aliceBalances); - let bobDelta = await delta(bobSigner, bobBalances); - - // Expect the owner can recover the locked funds - expect(ownerDelta.ibAlluoETH).to.be.within(-1 * bobDelta.ibAlluoETH * 0.99, -1 * bobDelta.ibAlluoETH * 1.01); - expect(ownerDelta.stIbAlluoUSD).to.be.within(-1 * aliceDelta.stIbAlluoUSD * 0.99, -1 * aliceDelta.stIbAlluoUSD * 1.01); - // Recover the RIC subsidies - expect(ownerDelta.ric).to.be.within(-1 * appDelta.ric * 0.99999, -1 * appDelta.ric * 1.00001); - - - }); - - it("#3.3 closeStream", async () => { - - let aliceBalanceUsdcx = await stIbAlluoUSD.balanceOf({ - account: aliceSigner.address, providerOrSigner: provider - }); - aliceBalanceUsdcx = ethers.BigNumber.from(aliceBalanceUsdcx.toString()) - // When user create stream, SF locks 4 hour deposit called initial deposit - const initialDeposit = aliceBalanceUsdcx.div(ethers.BigNumber.from('13')).mul(ethers.BigNumber.from('4')); - const inflowRate = aliceBalanceUsdcx.sub(initialDeposit).div(ethers.BigNumber.from(9 * 3600)).toString(); - // Initialize a streamer with 9 hours of balance - await sf.cfaV1.updateFlow({ - sender: aliceSigner.address, - receiver: twoWayMarket.address, - superToken: stIbAlluoUSD.address, - flowRate: inflowRate.toString(), - shouldUseCallAgreement: true, - }).exec(aliceSigner); - // Verfiy closing attempts revert - await expect(twoWayMarket.closeStream(aliceSigner.address, stIbAlluoUSD.address)).to.revertedWith('!closable'); - // Advance time 2 hours - await increaseTime(2 * 3600); - // Verify closing the stream works - aliceBalanceUsdcx = await stIbAlluoUSD.balanceOf({ - account: aliceSigner.address, providerOrSigner: provider - }); - await twoWayMarket.closeStream(aliceSigner.address, stIbAlluoUSD.address); - expect(await twoWayMarket.getStreamRate(aliceSigner.address, stIbAlluoUSD.address)).to.equal('0'); - - }); - - }); - -}); + const success = await provider.send('evm_revert', [snapshot]) + + await takeMeasurements() + + // Alice opens a USDC stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: twoWayMarket.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc, + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['carl']), + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + // Bob opens a ETH stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: bobSigner.address, + receiver: twoWayMarket.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateEthHalf, + shouldUseCallAgreement: true, + }) + .exec(bobSigner) + + await sf.cfaV1 + .createFlow({ + sender: karenSigner.address, + receiver: twoWayMarket.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc, + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['carl']), + shouldUseCallAgreement: true, + }) + .exec(karenSigner) + + await increaseTime(3600) + + // NOTE: This method stopped working because of SF protocol changes + // // Jail the app + // await impersonateAndSetBalance(Constants.CFA_SUPERFLUID_ADDRESS); + // let cfaSigner = await ethers.getSigner(Constants.CFA_SUPERFLUID_ADDRESS) + // await sf.host.hostContract.connect(cfaSigner).jailApp('0x01', twoWayMarket.address, 0, {gasLimit: '3000000'}) + + // NOTE: So instead you will need to modify the + await sf.cfaV1 + .deleteFlow({ + receiver: twoWayMarket.address, + sender: karenSigner.address, + superToken: stIbAlluoUSD.address, + shouldUseCallAgreement: true, + overrides, + }) + .exec(karenSigner) + + // Take a snapshot + snapshot = await provider.send('evm_snapshot', []) + }) + + beforeEach(async () => { + // Revert to the point REXMarket was just deployed + const success = await provider.send('evm_revert', [snapshot]) + // Take another snapshot to be able to revert again next time + snapshot = await provider.send('evm_snapshot', []) + expect(success).to.equal(true) + }) + + afterEach(async () => { + // Check the app isn't jailed + // await resetMeasurements(); + }) + + it('#3.1 emergencyCloseStream', async () => { + await twoWayMarket.emergencyCloseStream(aliceSigner.address, stIbAlluoUSD.address) + await twoWayMarket.emergencyCloseStream(bobSigner.address, ibAlluoETH.address) + + expect(await twoWayMarket.getStreamRate(aliceSigner.address, stIbAlluoUSD.address)).to.equal(0) + + expect(await twoWayMarket.getStreamRate(bobSigner.address, ibAlluoETH.address)).to.equal(0) + }) + + it('#3.2 should correctly emergency drain', async () => { + // + // await expect( + // twoWayMarket.emergencyDrain(ibAlluoETH.address), + // ).to.be.revertedWith('!zeroStreamers'); + // + // await expect( + // twoWayMarket.emergencyDrain(stIbAlluoUSD.address), + // ).to.be.revertedWith('!zeroStreamers'); + + // Close both flows + // Delete Alices stream + await sf.cfaV1 + .deleteFlow({ + receiver: twoWayMarket.address, + sender: aliceSigner.address, + superToken: stIbAlluoUSD.address, + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + + // Delete Bobs stream + await sf.cfaV1 + .deleteFlow({ + receiver: twoWayMarket.address, + sender: bobSigner.address, + superToken: ibAlluoETH.address, + shouldUseCallAgreement: true, + }) + .exec(bobSigner) + + await twoWayMarket.emergencyDrain(ibAlluoETH.address) + await twoWayMarket.emergencyDrain(stIbAlluoUSD.address) + await twoWayMarket.emergencyDrain(ricochetRIC.address) + + expect( + ( + await stIbAlluoUSD.balanceOf({ + account: twoWayMarket.address, + providerOrSigner: provider, + }) + ).toString() + ).to.equal('0') + + expect( + ( + await ibAlluoETH.balanceOf({ + account: twoWayMarket.address, + providerOrSigner: provider, + }) + ).toString() + ).to.equal('0') + + expect( + ( + await ricochetRIC.balanceOf({ + account: twoWayMarket.address, + providerOrSigner: provider, + }) + ).toString() + ).to.equal('0') + + await takeMeasurements() + + // Check the owner recovers the funds sent in afterwards + let appDelta = await delta(twoWayMarket, appBalances) + let ownerDelta = await delta(adminSigner, ownerBalances) + let aliceDelta = await delta(aliceSigner, aliceBalances) + let bobDelta = await delta(bobSigner, bobBalances) + + // Expect the owner can recover the locked funds + expect(ownerDelta.ibAlluoETH).to.be.within(-1 * bobDelta.ibAlluoETH * 0.99, -1 * bobDelta.ibAlluoETH * 1.01) + expect(ownerDelta.stIbAlluoUSD).to.be.within( + -1 * aliceDelta.stIbAlluoUSD * 0.99, + -1 * aliceDelta.stIbAlluoUSD * 1.01 + ) + // Recover the RIC subsidies + expect(ownerDelta.ric).to.be.within(-1 * appDelta.ric * 0.99999, -1 * appDelta.ric * 1.00001) + }) + + it('#3.3 closeStream', async () => { + let aliceBalanceUsdcx = await stIbAlluoUSD.balanceOf({ + account: aliceSigner.address, + providerOrSigner: provider, + }) + aliceBalanceUsdcx = ethers.BigNumber.from(aliceBalanceUsdcx.toString()) + // When user create stream, SF locks 4 hour deposit called initial deposit + const initialDeposit = aliceBalanceUsdcx.div(ethers.BigNumber.from('13')).mul(ethers.BigNumber.from('4')) + const inflowRate = aliceBalanceUsdcx + .sub(initialDeposit) + .div(ethers.BigNumber.from(9 * 3600)) + .toString() + // Initialize a streamer with 9 hours of balance + await sf.cfaV1 + .updateFlow({ + sender: aliceSigner.address, + receiver: twoWayMarket.address, + superToken: stIbAlluoUSD.address, + flowRate: inflowRate.toString(), + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + // Verfiy closing attempts revert + await expect(twoWayMarket.closeStream(aliceSigner.address, stIbAlluoUSD.address)).to.revertedWith('!closable') + // Advance time 2 hours + await increaseTime(2 * 3600) + // Verify closing the stream works + aliceBalanceUsdcx = await stIbAlluoUSD.balanceOf({ + account: aliceSigner.address, + providerOrSigner: provider, + }) + await twoWayMarket.closeStream(aliceSigner.address, stIbAlluoUSD.address) + expect(await twoWayMarket.getStreamRate(aliceSigner.address, stIbAlluoUSD.address)).to.equal('0') + }) + }) +}) diff --git a/test/REXUniswapV3Market.test.ts b/test/REXUniswapV3Market.test.ts index 6d438d5..fe2914f 100644 --- a/test/REXUniswapV3Market.test.ts +++ b/test/REXUniswapV3Market.test.ts @@ -1,1488 +1,1519 @@ -import { waffle, ethers } from "hardhat"; -import { setup, IUser, ISuperToken } from "../misc/setup"; -import { common } from "../misc/common"; -import { expect } from "chai"; -import { Framework, SuperToken } from "@superfluid-finance/sdk-core"; -import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; -import { REXUniswapV3Market, REXReferral__factory } from "../typechain"; -import { increaseTime, impersonateAndSetBalance } from "../misc/helpers"; -import { Constants } from "../misc/Constants"; -import { HttpService } from "../misc/HttpService"; - -const { provider } = waffle; -const TEST_TRAVEL_TIME = 3600 * 2; // 2 hours -const ONE_WEEK = 3600 * 24 * 7; // 1 week +import { waffle, ethers } from 'hardhat' +import { setup, IUser, ISuperToken } from '../misc/setup' +import { common } from '../misc/common' +import { expect } from 'chai' +import { Framework, SuperToken } from '@superfluid-finance/sdk-core' +import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' +import { REXUniswapV3Market, REXReferral__factory } from '../typechain' +import { increaseTime, impersonateAndSetBalance } from '../misc/helpers' +import { Constants } from '../misc/Constants' +import { HttpService } from '../misc/HttpService' + +const { provider } = waffle +const TEST_TRAVEL_TIME = 3600 * 2 // 2 hours +const ONE_WEEK = 3600 * 24 * 7 // 1 week // Index 1 is for Ether and 0 for USDCx -const USDCX_SUBSCRIPTION_INDEX = 0; -const ETHX_SUBSCRIPTION_INDEX = 1; -const RIC_SUBSCRIPTION_INDEX = 2; +const USDCX_SUBSCRIPTION_INDEX = 0 +const ETHX_SUBSCRIPTION_INDEX = 1 +const RIC_SUBSCRIPTION_INDEX = 2 // Constants for Gelato -const GELATO_OPS = "0x527a819db1eb0e34426297b03bae11F2f8B3A19E"; // Mainnet Gelato Ops Address -const GELATO_NETWORK = "0x7598e84B2E114AB62CAB288CE5f7d5f6bad35BbA"; // Mainnet Gelato Executor Address -const UNISWAP_ROUTER = "0xE592427A0AEce92De3Edee1F18E0157C05861564"; // Mainnet Uniswap Router Address -const ONE_USDC = ethers.BigNumber.from("1000000"); -const GELATO_FEE = ethers.BigNumber.from("100000"); // 100k wei +const GELATO_OPS = '0x527a819db1eb0e34426297b03bae11F2f8B3A19E' // Mainnet Gelato Ops Address +const GELATO_NETWORK = '0x7598e84B2E114AB62CAB288CE5f7d5f6bad35BbA' // Mainnet Gelato Executor Address +const UNISWAP_ROUTER = '0xE592427A0AEce92De3Edee1F18E0157C05861564' // Mainnet Uniswap Router Address +const ONE_USDC = ethers.BigNumber.from('1000000') +const GELATO_FEE = ethers.BigNumber.from('100000') // 100k wei -const config = Constants["polygon"]; +const config = Constants['polygon'] export interface superTokenIDAIndex { - token: SuperToken; - IDAIndex: number; + token: SuperToken + IDAIndex: number } describe('REXUniswapV3Market', () => { - const errorHandler = (err: any) => { - if (err) throw err; - }; - - const overrides = { gasLimit: '10000000' }; // Using this to manually limit gas to avoid giga-errors. - const inflowRateUsdc = "1000000000000000"; - const inflowRateUsdcDeposit = "4000000000000000" - const inflowRateUsdc10x = "10000000000000000"; - const inflowRateEth = "10000000000000"; - const subsidyRate = "10000000000000"; - - let rexReferral: REXReferral__factory; - let REXMarketFactory: any; - let referral: any; - let snapshot: any; - - let adminSigner: SignerWithAddress; - let aliceSigner: SignerWithAddress; - let bobSigner: SignerWithAddress; - let carlSigner: SignerWithAddress; - let usdcxWhaleSigner: SignerWithAddress; - let ethxWhaleSigner: SignerWithAddress; - let maticxWhaleSigner: SignerWithAddress; - let ricWhaleSigner: SignerWithAddress; - let karenSigner: SignerWithAddress; - - let oraclePrice = 1770; - let ricOraclePrice = 30000000; - let maticOraclePrice: number; - - // interface SuperTokensBalances { - // outputx: string[]; - // ethx: string[]; - // wbtcx: string[]; - // daix: string[]; - // usdcx: string[]; - // ric: string[]; - // }; - - let appBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] }; - let ownerBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] }; - let aliceBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] }; - let bobBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] }; - let carlBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] }; - let karenBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] }; - - let sf: Framework, - superT: ISuperToken, - u: { [key: string]: IUser }, - market: REXUniswapV3Market, - tokenss: { [key: string]: any }, - sfRegistrationKey: any, - accountss: SignerWithAddress[], - constant: { [key: string]: string }, - ERC20: any; - - // ************** All the supertokens used in Ricochet are declared ********************** - let ricochetMATICx: SuperToken; - let ricochetUSDCx: SuperToken; - let ricochetETHx: SuperToken; - let ricochetWBTCx: SuperToken; - let ricochetRIC: SuperToken; - let ricochetRexSHIRT: SuperToken; - - let usdcxIDAIndex: superTokenIDAIndex; - let ethxIDAIndex: superTokenIDAIndex; - let ricIDAIndex: superTokenIDAIndex; - let rexshirtIDAIndex: superTokenIDAIndex; - let wbtcxIDAIndex: superTokenIDAIndex; - let maticxIDAIndex: superTokenIDAIndex; - - // *************************************************************************************** - - let gelatoBlock; - let intializeMarketBlock; - - async function takeMeasurements(balances: SuperTokensBalances, signer: SignerWithAddress): Promise { - - // TODO: Please - appBalances.ethx.push((await superT.ethx.balanceOf({ account: market.address, providerOrSigner: provider })).toString()); - ownerBalances.ethx.push((await superT.ethx.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString()); - aliceBalances.ethx.push((await superT.ethx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - carlBalances.ethx.push((await superT.ethx.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString()); - bobBalances.ethx.push((await superT.ethx.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString()); - - appBalances.usdcx.push((await superT.usdcx.balanceOf({ account: market.address, providerOrSigner: provider })).toString()); - ownerBalances.usdcx.push((await superT.usdcx.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString()); - aliceBalances.usdcx.push((await superT.usdcx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - carlBalances.usdcx.push((await superT.usdcx.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString()); - bobBalances.usdcx.push((await superT.usdcx.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString()); - - appBalances.ric.push((await superT.ric.balanceOf({ account: market.address, providerOrSigner: provider })).toString()); - ownerBalances.ric.push((await superT.ric.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString()); - aliceBalances.ric.push((await superT.ric.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - carlBalances.ric.push((await superT.ric.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString()); - bobBalances.ric.push((await superT.ric.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString()); - - appBalances.rexshirt.push((await superT.rexshirt.balanceOf({ account: market.address, providerOrSigner: provider })).toString()); - ownerBalances.rexshirt.push((await superT.rexshirt.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString()); - aliceBalances.rexshirt.push((await superT.rexshirt.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - carlBalances.rexshirt.push((await superT.rexshirt.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString()); - bobBalances.rexshirt.push((await superT.rexshirt.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString()); - - appBalances.maticx.push((await superT.maticx.balanceOf({ account: market.address, providerOrSigner: provider })).toString()); - ownerBalances.maticx.push((await superT.maticx.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString()); - aliceBalances.maticx.push((await superT.maticx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString()); - carlBalances.maticx.push((await superT.maticx.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString()); - bobBalances.maticx.push((await superT.maticx.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString()); + const errorHandler = (err: any) => { + if (err) throw err + } + + const overrides = { gasLimit: '10000000' } // Using this to manually limit gas to avoid giga-errors. + const inflowRateUsdc = '1000000000000000' + const inflowRateUsdcDeposit = '4000000000000000' + const inflowRateUsdc10x = '10000000000000000' + const inflowRateEth = '10000000000000' + const subsidyRate = '10000000000000' + + let rexReferral: REXReferral__factory + let REXMarketFactory: any + let referral: any + let snapshot: any + + let adminSigner: SignerWithAddress + let aliceSigner: SignerWithAddress + let bobSigner: SignerWithAddress + let carlSigner: SignerWithAddress + let usdcxWhaleSigner: SignerWithAddress + let ethxWhaleSigner: SignerWithAddress + let maticxWhaleSigner: SignerWithAddress + let ricWhaleSigner: SignerWithAddress + let karenSigner: SignerWithAddress + + let oraclePrice = 1770 + let ricOraclePrice = 30000000 + let maticOraclePrice: number + + // interface SuperTokensBalances { + // outputx: string[]; + // ethx: string[]; + // wbtcx: string[]; + // daix: string[]; + // usdcx: string[]; + // ric: string[]; + // }; + + let appBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] } + let ownerBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] } + let aliceBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] } + let bobBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] } + let carlBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] } + let karenBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] } + + let sf: Framework, + superT: ISuperToken, + u: { [key: string]: IUser }, + market: REXUniswapV3Market, + tokenss: { [key: string]: any }, + sfRegistrationKey: any, + accountss: SignerWithAddress[], + constant: { [key: string]: string }, + ERC20: any + + // ************** All the supertokens used in Ricochet are declared ********************** + let ricochetMATICx: SuperToken + let ricochetUSDCx: SuperToken + let ricochetETHx: SuperToken + let ricochetWBTCx: SuperToken + let ricochetRIC: SuperToken + let ricochetRexSHIRT: SuperToken + + let usdcxIDAIndex: superTokenIDAIndex + let ethxIDAIndex: superTokenIDAIndex + let ricIDAIndex: superTokenIDAIndex + let rexshirtIDAIndex: superTokenIDAIndex + let wbtcxIDAIndex: superTokenIDAIndex + let maticxIDAIndex: superTokenIDAIndex + + // *************************************************************************************** + + let gelatoBlock + let intializeMarketBlock + + async function takeMeasurements(balances: SuperTokensBalances, signer: SignerWithAddress): Promise { + // TODO: Please + appBalances.ethx.push( + (await superT.ethx.balanceOf({ account: market.address, providerOrSigner: provider })).toString() + ) + ownerBalances.ethx.push( + (await superT.ethx.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString() + ) + aliceBalances.ethx.push( + (await superT.ethx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + carlBalances.ethx.push( + (await superT.ethx.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString() + ) + bobBalances.ethx.push( + (await superT.ethx.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString() + ) + + appBalances.usdcx.push( + (await superT.usdcx.balanceOf({ account: market.address, providerOrSigner: provider })).toString() + ) + ownerBalances.usdcx.push( + (await superT.usdcx.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString() + ) + aliceBalances.usdcx.push( + (await superT.usdcx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + carlBalances.usdcx.push( + (await superT.usdcx.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString() + ) + bobBalances.usdcx.push( + (await superT.usdcx.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString() + ) + + appBalances.ric.push( + (await superT.ric.balanceOf({ account: market.address, providerOrSigner: provider })).toString() + ) + ownerBalances.ric.push( + (await superT.ric.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString() + ) + aliceBalances.ric.push( + (await superT.ric.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + carlBalances.ric.push( + (await superT.ric.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString() + ) + bobBalances.ric.push( + (await superT.ric.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString() + ) + + appBalances.rexshirt.push( + (await superT.rexshirt.balanceOf({ account: market.address, providerOrSigner: provider })).toString() + ) + ownerBalances.rexshirt.push( + (await superT.rexshirt.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString() + ) + aliceBalances.rexshirt.push( + (await superT.rexshirt.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + carlBalances.rexshirt.push( + (await superT.rexshirt.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString() + ) + bobBalances.rexshirt.push( + (await superT.rexshirt.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString() + ) + + appBalances.maticx.push( + (await superT.maticx.balanceOf({ account: market.address, providerOrSigner: provider })).toString() + ) + ownerBalances.maticx.push( + (await superT.maticx.balanceOf({ account: u.admin.address, providerOrSigner: provider })).toString() + ) + aliceBalances.maticx.push( + (await superT.maticx.balanceOf({ account: u.alice.address, providerOrSigner: provider })).toString() + ) + carlBalances.maticx.push( + (await superT.maticx.balanceOf({ account: u.carl.address, providerOrSigner: provider })).toString() + ) + bobBalances.maticx.push( + (await superT.maticx.balanceOf({ account: u.bob.address, providerOrSigner: provider })).toString() + ) + } + + async function resetMeasurements(): Promise { + appBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] } + ownerBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] } + aliceBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] } + bobBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] } + carlBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] } + karenBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] } + } + + async function approveSubscriptions(tokensAndIDAIndexes: superTokenIDAIndex[], signers: SignerWithAddress[]) { + let tokenIndex: number + for (let i = 0; i < signers.length; i++) { + for (let j = 0; j < tokensAndIDAIndexes.length; j++) { + tokenIndex = tokensAndIDAIndexes[j].IDAIndex + await sf.idaV1 + .approveSubscription({ + indexId: tokenIndex.toString(), + superToken: tokensAndIDAIndexes[j].token.address, + publisher: market.address, + userData: '0x', + }) + .exec(signers[i]) + } } - - async function resetMeasurements(): Promise { - appBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] }; - ownerBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] }; - aliceBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] }; - bobBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] }; - carlBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] }; - karenBalances = { ethx: [], usdcx: [], ric: [], maticx: [], rexshirt: [] }; + } + + async function checkBalance(user: SignerWithAddress, name: string) { + let balanceEthx = await ricochetETHx.balanceOf({ + account: user.address, + providerOrSigner: provider, + }) + let balanceUsdcx = await ricochetUSDCx.balanceOf({ + account: user.address, + providerOrSigner: provider, + }) + let balanceRic = await ricochetRIC.balanceOf({ + account: user.address, + providerOrSigner: provider, + }) + let balanceMatic = await ricochetMATICx.balanceOf({ + account: user.address, + providerOrSigner: provider, + }) + } + + async function delta(account: SignerWithAddress, balances: any) { + const len = balances.ethx.length + return { + ethx: balances.ethx[len - 1] - balances.ethx[len - 2], + usdcx: balances.usdcx[len - 1] - balances.usdcx[len - 2], + ric: balances.ric[len - 1] - balances.ric[len - 2], + maticx: balances.maticx[len - 1] - balances.maticx[len - 2], + rexshirt: balances.rexshirt[len - 1] - balances.rexshirt[len - 2], } - - async function approveSubscriptions(tokensAndIDAIndexes: superTokenIDAIndex[], signers: SignerWithAddress[]) { - let tokenIndex: number; - for (let i = 0; i < signers.length; i++) { - for (let j = 0; j < tokensAndIDAIndexes.length; j++) { - tokenIndex = tokensAndIDAIndexes[j].IDAIndex; - await sf.idaV1 - .approveSubscription({ - indexId: tokenIndex.toString(), - superToken: tokensAndIDAIndexes[j].token.address, - publisher: market.address, - userData: "0x", - }) - .exec(signers[i]); - } - } + } + + before(async () => { + const { superfluid, users, accounts, tokens, superTokens, contracts, constants } = await setup() + + const { createSFRegistrationKey } = await common() + + u = users + sf = superfluid + superT = superTokens + tokenss = tokens + accountss = accounts + sfRegistrationKey = createSFRegistrationKey + constant = constants + + // This order is established in misc/setup.ts + adminSigner = accountss[0] + aliceSigner = accountss[1] + bobSigner = accountss[2] + carlSigner = accountss[3] + karenSigner = accountss[4] + usdcxWhaleSigner = accountss[5] + ethxWhaleSigner = accountss[6] + maticxWhaleSigner = accountss[7] + ricWhaleSigner = accountss[10] + + ricochetMATICx = superT.maticx + ricochetUSDCx = superT.usdcx + ricochetETHx = superT.ethx + ricochetWBTCx = superT.wbtcx + ricochetRIC = superT.ric + ricochetRexSHIRT = superT.rexshirt + + ethxIDAIndex = { + token: ricochetETHx, + IDAIndex: 0, } - - async function checkBalance(user: SignerWithAddress, name: string) { - let balanceEthx = await ricochetETHx.balanceOf({ - account: user.address, providerOrSigner: provider - }); - let balanceUsdcx = await ricochetUSDCx.balanceOf({ - account: user.address, providerOrSigner: provider - }); - let balanceRic = await ricochetRIC.balanceOf({ - account: user.address, providerOrSigner: provider - }); - let balanceMatic = await ricochetMATICx.balanceOf({ - account: user.address, providerOrSigner: provider - }); + ricIDAIndex = { + token: ricochetRIC, + IDAIndex: 1, } - async function delta(account: SignerWithAddress, balances: any) { - const len = balances.ethx.length; - return { - ethx: balances.ethx[len - 1] - balances.ethx[len - 2], - usdcx: balances.usdcx[len - 1] - balances.usdcx[len - 2], - ric: balances.ric[len - 1] - balances.ric[len - 2], - maticx: balances.maticx[len - 1] - balances.maticx[len - 2], - rexshirt: balances.rexshirt[len - 1] - balances.rexshirt[len - 2] - } - } + // Impersonate Superfluid Governance and make a registration key + const registrationKey = await sfRegistrationKey(sf, adminSigner.address) + + // Deploy REXReferral + rexReferral = await ethers.getContractFactory('REXReferral', { + signer: adminSigner, + }) + referral = await rexReferral.deploy() + await referral.deployed() + + // Update the oracle price for ethereum + let httpService = new HttpService() + const url = 'https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd' + let response = await httpService.get(url) + oraclePrice = parseInt(response.data['ethereum'].usd) + console.log('ETH Oracle price: ', oraclePrice) + + // Deploy REX Market + REXMarketFactory = await ethers.getContractFactory('REXUniswapV3Market', adminSigner) + + // Deploy the REXUniswapV3Market + market = await REXMarketFactory.deploy( + adminSigner.address, + config.HOST_SUPERFLUID_ADDRESS, + config.CFA_SUPERFLUID_ADDRESS, + config.IDA_SUPERFLUID_ADDRESS, + registrationKey, + referral.address, + config.GELATO_OPS, + adminSigner.address + ) + + // Initialize MATIC + await market.initializeMATIC(config.WMATIC_ADDRESS, config.MATICX_ADDRESS) + + // Create the task for Gelato + await market.createTask() + gelatoBlock = await ethers.provider.getBlock('latest') + + // Initialize the market + await market.initializeMarket( + ricochetUSDCx.address, + ricochetETHx.address, + ricochetRIC.address, + config.SHARE_SCALER, + config.FEE_RATE, + config.AFFILAITE_FEE, + config.RATE_TOLERANCE + ) + + // Save this block number for expectations below + intializeMarketBlock = await ethers.provider.getBlock('latest') + + await market.initializeUniswap( + config.UNISWAP_V3_ROUTER_ADDRESS, + config.UNISWAP_V3_FACTORY_ADDRESS, + [config.USDC_ADDRESS, config.ETH_ADDRESS], + 500 + ) + + // Initialize Price Feed + await market.initializePriceFeed(config.CHAINLINK_ETH_USDC_PRICE_FEED, false) + + // Send the market some RIC for subsidies + await ricochetRIC + .transfer({ + receiver: market.address, + amount: '1000000000000000000', + }) + .exec(ricWhaleSigner) + + // Register the market with REXReferral + await referral.registerApp(market.address) + referral = await referral.connect(carlSigner) + await referral.applyForAffiliate('carl', 'carl') + referral = await referral.connect(adminSigner) + + // Give Alice, Bob, Karen some tokens + const initialAmount = ethers.utils.parseUnits('1000', 18).toString() + + // USDCx for Alice + await ricochetUSDCx + .transfer({ + receiver: aliceSigner.address, + amount: initialAmount, + }) + .exec(usdcxWhaleSigner) + + // USDCx for Bob + await ricochetUSDCx + .transfer({ + receiver: bobSigner.address, + amount: initialAmount, + }) + .exec(usdcxWhaleSigner) + + // RIC for Bob + await ricochetRIC + .transfer({ + receiver: bobSigner.address, + amount: '1000000000000000000000', + }) + .exec(ricWhaleSigner) + + // RIC for market + await ricochetRIC + .transfer({ + receiver: market.address, + amount: '1000000000000000000000', + }) + .exec(ricWhaleSigner) + + // MATICx for Bob + await ricochetMATICx + .transfer({ + receiver: bobSigner.address, + amount: '1754897259852523432', + }) + .exec(maticxWhaleSigner) + + // USDCx for Karen + await ricochetUSDCx + .transfer({ + receiver: karenSigner.address, + amount: initialAmount, + }) + .exec(usdcxWhaleSigner) + + // Do all the approvals + await approveSubscriptions([ethxIDAIndex, ricIDAIndex], [adminSigner, aliceSigner, bobSigner, carlSigner]) // karenSigner + + // Take a snapshot to avoid redoing the setup, this saves some time later in the testing scripts + snapshot = await provider.send('evm_snapshot', []) + }) + + context('#1 - new rexmarket with no streamers', async () => { + beforeEach(async () => { + // Revert to the point REXMarket was just deployed + const success = await provider.send('evm_revert', [snapshot]) + // Take another snapshot to be able to revert again next time + snapshot = await provider.send('evm_snapshot', []) + expect(success).to.equal(true) + }) + + afterEach(async () => { + // Check the app isn't jailed + // expect(await market.isAppJailed()).to.equal(false); + await resetMeasurements() + }) + + after(async () => {}) + + it('#1.1 contract variables were set correctly', async () => { + expect(await market.owner()).to.equal(adminSigner.address) + expect(await market.numOutputPools()).to.equal(2) + expect(await market.lastDistributedAt()).to.equal(intializeMarketBlock.timestamp) + expect(await market.rateTolerance()).to.equal(config.RATE_TOLERANCE) + expect(await market.feeRate()).to.equal(config.FEE_RATE) + expect(await market.affiliateFee()).to.equal(config.AFFILAITE_FEE) + expect(await market.shareScaler()).to.equal(config.SHARE_SCALER) + expect(await market.inputToken()).to.equal(ricochetUSDCx.address) + expect(await market.outputToken()).to.equal(ricochetETHx.address) + expect(await market.subsidyToken()).to.equal(ricochetRIC.address) + expect(await market.underlyingInputToken()).to.equal(config.USDC_ADDRESS) + expect(await market.underlyingOutputToken()).to.equal(config.ETH_ADDRESS) + expect(await market.wmatic()).to.equal(config.WMATIC_ADDRESS) + expect(await market.maticx()).to.equal(config.MATICX_ADDRESS) + + // Test set methods from REXUniswapV3Market + await market.setEmissionRate(1000) + expect((await market.outputPools(1))[2]).to.equal(1000) + + await market.setRateTolerance(200) + expect(await market.rateTolerance()).to.equal(200) + + await market.setGelatoFeeShare(20) + expect(await market.gelatoFeeShare()).to.equal(20) + }) + + it('#1.2 withdraw subsidy token', async () => { + let beforeRIC = ethers.BigNumber.from( + await ricochetRIC.balanceOf({ + account: adminSigner.address, + providerOrSigner: provider, + }) + ) + + await market.withdrawSubsidyToken(100) + + let afterRIC = ethers.BigNumber.from( + await ricochetRIC.balanceOf({ + account: adminSigner.address, + providerOrSigner: provider, + }) + ) + + expect(afterRIC.sub(beforeRIC)).to.equal(100) + }) + + it('#1.3 before/afterAgreementCreated callbacks', async () => { + // Alice opens a USDC stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: market.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc, + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['carl']), + shouldUseCallAgreement: true, + overrides, + }) + .exec(aliceSigner) + + // Expect share allocations were done correctly + expect((await market.getIDAShares(0, aliceSigner.address)).toString()).to.equal(`true,true,99500000000,0`) + // Admin and Carl split 2% of the shares bc of the 50% referral fee + expect((await market.getIDAShares(0, adminSigner.address)).toString()).to.equal(`true,true,250000000,0`) + expect((await market.getIDAShares(0, carlSigner.address)).toString()).to.equal(`true,true,250000000,0`) + + // Check balances + await takeMeasurements() + + // Give it a minute... + await increaseTime(TEST_TRAVEL_TIME) + + // A distritbution happens when Bob starts his stream + await sf.cfaV1 + .createFlow({ + sender: bobSigner.address, + receiver: market.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateEth, + shouldUseCallAgreement: true, + overrides, + }) + .exec(bobSigner) + + // Expect Alice wait distributed fairly + // Check balances again + await takeMeasurements() + + // Check oracle + oraclePrice = await market.getLatestPrice() + + // Compute the delta + let deltaAlice = await delta(aliceSigner, aliceBalances) + let deltaCarl = await delta(carlSigner, carlBalances) + let deltaOwner = await delta(adminSigner, ownerBalances) + + // Expect Owner and Carl got their fee from Alice + let totalOutput = deltaAlice.ethx + deltaCarl.ethx + deltaOwner.ethx + + // Expect alice got within 1.0% of the oracle price (TODO: move to 0.75?) + expect(deltaAlice.ethx).to.be.above((deltaAlice.usdcx / oraclePrice) * 1e8 * -1 * 0.98) + // Check Carl and Owner got their shares + expect(deltaCarl.ethx / totalOutput).to.equal(0.0025) + expect(deltaOwner.ethx / totalOutput).to.equal(0.0025) + + // Display exchange rates and deltas for visual inspection by the test engineers + console.log('Alice exchange rate:', (deltaAlice.usdcx / deltaAlice.ethx) * -1) + // Show the delte between the oracle price + console.log( + 'Alice oracle delta (%):', + (100 * ((deltaAlice.usdcx / deltaAlice.ethx) * -1 * 1e8 - oraclePrice)) / oraclePrice + ) + + // Expect Bob's share allocations were done correctly + expect((await market.getIDAShares(0, bobSigner.address)).toString()).to.equal(`true,true,995000000,0`) + + // Admin gets all of the 0.5% fee bc Bob was an organic referral + expect((await market.getIDAShares(0, adminSigner.address)).toString()).to.equal(`true,true,255000000,0`) + + // Delete Alices stream before first distributions + await sf.cfaV1 + .deleteFlow({ + receiver: market.address, + sender: aliceSigner.address, + superToken: ricochetUSDCx.address, + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + + // Delete Alices stream before first distributions + await sf.cfaV1 + .deleteFlow({ + receiver: market.address, + sender: bobSigner.address, + superToken: ricochetUSDCx.address, + shouldUseCallAgreement: true, + }) + .exec(bobSigner) + }) + + it('#1.4 before/afterAgreementUpdated callbacks', async () => { + // Alice opens a USDC stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: market.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc, + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['carl']), + shouldUseCallAgreement: true, + overrides, + }) + .exec(aliceSigner) + + // Give some time... + await increaseTime(TEST_TRAVEL_TIME) + + // A distritbution happens when Bob starts his stream + await sf.cfaV1 + .createFlow({ + sender: bobSigner.address, + receiver: market.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateEth, + shouldUseCallAgreement: true, + overrides, + }) + .exec(bobSigner) + + // Check balances + await takeMeasurements() + // Give it some time... + await increaseTime(TEST_TRAVEL_TIME) + + // A distritbution happens when Alice updates her stream + await sf.cfaV1 + .updateFlow({ + sender: aliceSigner.address, + receiver: market.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc, + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['carl']), + shouldUseCallAgreement: true, + overrides, + }) + .exec(aliceSigner) + + // Expect Alice wait distributed fairly + + // Check balances again + await takeMeasurements() + + // Check oracle + oraclePrice = await market.getLatestPrice() + + // Compute the delta + let deltaAlice = await delta(aliceSigner, aliceBalances) + let deltaBob = await delta(bobSigner, bobBalances) + let deltaCarl = await delta(carlSigner, carlBalances) + let deltaOwner = await delta(adminSigner, ownerBalances) + + // Expect Owner and Carl got their fee from Alice + let totalOutput = deltaAlice.ethx + deltaBob.ethx + deltaCarl.ethx + deltaOwner.ethx + + // Expect alice got within 1.0% of the oracle price (TODO: move to 0.75?) + expect(deltaAlice.ethx).to.be.above((deltaAlice.usdcx / oraclePrice) * 1e8 * -1 * 0.98) + + // Display exchange rates and deltas for visual inspection by the test engineers + console.log('Alice exchange rate:', (deltaAlice.usdcx / deltaAlice.ethx) * -1) + // Show the delta between the oracle price + console.log( + 'Alice oracle delta (%):', + (100 * ((deltaAlice.usdcx / deltaAlice.ethx) * -1 * 1e8 - oraclePrice)) / oraclePrice + ) + + // Display exchange rates and deltas for visual inspection by the test engineers + console.log('Bob exchange rate:', (deltaBob.usdcx / deltaBob.ethx) * -1) + // Show the delta between the oracle price + console.log( + 'Bob oracle delta (%):', + (100 * ((deltaBob.usdcx / deltaBob.ethx) * -1 * 1e8 - oraclePrice)) / oraclePrice + ) + + // Delete Alices stream before first distributions + await sf.cfaV1 + .deleteFlow({ + receiver: market.address, + sender: aliceSigner.address, + superToken: ricochetUSDCx.address, + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + + // Delete Alices stream before first distributions + await sf.cfaV1 + .deleteFlow({ + receiver: market.address, + sender: bobSigner.address, + superToken: ricochetUSDCx.address, + shouldUseCallAgreement: true, + }) + .exec(bobSigner) + }) + + it('#1.5 before/afterAgreementTerminated callbacks', async () => { + await takeMeasurements() + + // Alice opens a USDC stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: market.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc, + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['carl']), + shouldUseCallAgreement: true, + overrides, + }) + .exec(aliceSigner) + + await increaseTime(3600) + + // Delete Alices stream before first distributions + await sf.cfaV1 + .deleteFlow({ + receiver: market.address, + sender: aliceSigner.address, + superToken: ricochetUSDCx.address, + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + + await takeMeasurements() + + // Check balance for alice again + let aliceDelta = await delta(aliceSigner, aliceBalances) + + // Expect alice didn't lose anything since she closed stream before distribute + // expect(aliceDelta.usdcx).to.equal(0); + expect(aliceDelta.usdcx).to.equal(0) + expect((await market.getIDAShares(0, aliceSigner.address)).toString()).to.equal(`true,true,0,0`) + expect((await market.getIDAShares(0, adminSigner.address)).toString()).to.equal(`true,true,0,0`) + expect((await market.getIDAShares(0, carlSigner.address)).toString()).to.equal(`true,true,0,0`) + }) + + it('#1.6 manual distribution', async () => { + // Alice opens a USDC stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: market.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc, + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['carl']), + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + + // Check balance + await takeMeasurements() + + // Fast forward an hour and distribute + await increaseTime(TEST_TRAVEL_TIME) + // Expect this call to distribute emits a RexSwap event + await expect(market.distribute('0x', true)).to.emit(market, 'RexSwap') + + // Do two more distributions before checking balances + await increaseTime(TEST_TRAVEL_TIME) + await market.distribute('0x', true) + + await increaseTime(TEST_TRAVEL_TIME) + await market.distribute('0x', true) + + // Check balances again + await takeMeasurements() + + // Check oracle + oraclePrice = await market.getLatestPrice() + + // Compute the delta + let deltaAlice = await delta(aliceSigner, aliceBalances) + let deltaCarl = await delta(carlSigner, carlBalances) + let deltaOwner = await delta(adminSigner, ownerBalances) + + // Expect Owner and Carl got their fee from Alice + let totalOutput = deltaAlice.ethx + deltaCarl.ethx + deltaOwner.ethx + expect(deltaAlice.ethx).to.be.above((deltaAlice.usdcx / oraclePrice) * 1e8 * -1 * 0.98) + + // Display exchange rates and deltas for visual inspection by the test engineers + console.log('Alice exchange rate:', (deltaAlice.usdcx / deltaAlice.ethx) * -1) + // Show the delte between the oracle price + console.log( + 'Alice oracle delta (%):', + (100 * ((deltaAlice.usdcx / deltaAlice.ethx) * -1 * 1e8 - oraclePrice)) / oraclePrice + ) + + // Delete alice and bobs flow + await sf.cfaV1 + .deleteFlow({ + sender: aliceSigner.address, + receiver: market.address, + superToken: ricochetUSDCx.address, + shouldUseCallAgreement: true, + overrides, + }) + .exec(aliceSigner) + }) + + it('#1.7 gelato distribution', async () => { + const config = Constants['polygon'] + + // Impersonate gelato network and set balance + await impersonateAndSetBalance(config.GELATO_NETWORK) + const gelatoNetwork = await ethers.provider.getSigner(config.GELATO_NETWORK) + const ops = await ethers.getContractAt('Ops', config.GELATO_OPS) + + // Setup gelato executor exec and module data + let encodedArgs = ethers.utils.defaultAbiCoder.encode(['uint128', 'uint128'], [gelatoBlock.timestamp, 60]) + let execData = market.interface.encodeFunctionData('distribute', ['0x', false]) + let moduleData = { + modules: [1], + args: [encodedArgs], + } + + // Alice opens a USDC stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: market.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc10x, // Increase rate 10x to make sure gelato can be paid + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['carl']), + shouldUseCallAgreement: true, + }) + .exec(aliceSigner) + + await takeMeasurements() + await increaseTime(TEST_TRAVEL_TIME) + + // Submit task to gelato + await ops.connect(gelatoNetwork).exec( + market.address, + market.address, + execData, + moduleData, + GELATO_FEE, + '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', + false, // true if payed with treasury + true + ) + await increaseTime(TEST_TRAVEL_TIME) + + // Submit task to gelato + await ops.connect(gelatoNetwork).exec( + market.address, + market.address, + execData, + moduleData, + GELATO_FEE, + '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', + false, // true if payed with treasury + true + ) + + // TODO: Not sure why the 3rd gelato execute fails + // await increaseTime(TEST_TRAVEL_TIME); + // // Submit task to gelato + // await ops + // .connect(gelatoNetwork) + // .exec( + // market.address, + // market.address, + // execData, + // moduleData, + // GELATO_FEE, + // "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + // false, // true if payed with treasury + // true, + // {gasLimit: 1000000} + // ); + + // Check balances again + await takeMeasurements() + + // Check oracle + oraclePrice = await market.getLatestPrice() + + // Compute the delta + let deltaAlice = await delta(aliceSigner, aliceBalances) + let deltaCarl = await delta(carlSigner, carlBalances) + let deltaOwner = await delta(adminSigner, ownerBalances) + + // Expect Owner and Carl got their fee from Alice + let totalOutput = deltaAlice.ethx + deltaCarl.ethx + deltaOwner.ethx + expect(deltaCarl.ethx / totalOutput).to.equal(0.0025) + expect(deltaOwner.ethx / totalOutput).to.equal(0.0025) + expect(deltaAlice.ethx).to.be.above((deltaAlice.usdcx / oraclePrice) * 1e8 * -1 * 0.98) // TODO: use config.RATE_TOLERANCE + + // Display exchange rates and deltas for visual inspection by the test engineers + console.log('Alice exchange rate:', (deltaAlice.usdcx / deltaAlice.ethx) * -1) + // Show the delte between the oracle price + console.log( + 'Alice oracle delta (%):', + (100 * ((deltaAlice.usdcx / deltaAlice.ethx) * -1 * 1e8 - oraclePrice)) / oraclePrice + ) + + // Delete alice and bobs flow + // TODO: Move these deletes into afterEach() + await sf.cfaV1 + .deleteFlow({ + sender: aliceSigner.address, + receiver: market.address, + superToken: ricochetUSDCx.address, + shouldUseCallAgreement: true, + overrides, + }) + .exec(aliceSigner) + }) + + // xit("#1.8 revert when rateTolerance is too low", async () => { + + // // Alice opens a USDC stream to REXMarket + // await sf.cfaV1.createFlow({ + // sender: aliceSigner.address, + // receiver: market.address, + // superToken: ricochetUSDCx.address, + // flowRate: inflowRateUsdc10x, + // userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), + // shouldUseCallAgreement: true, + // }).exec(aliceSigner); + // await increaseTime(TEST_TRAVEL_TIME); + + // // distribution and then wait 10x the test travel time + // market.distribute("0x", false) + + // // Fast forward one week + // await increaseTime(ONE_WEEK); + + // await market.setRateTolerance(1); // 0.01% + + // // Expect revert on market.distribute due to the low rate tolerance + // await expect( + // market.distribute("0x", false) + // ).to.be.revertedWith("Too little received"); + + // // Delete alices flow + // await sf.cfaV1.deleteFlow({ + // sender: aliceSigner.address, + // receiver: market.address, + // superToken: ricochetUSDCx.address, + // shouldUseCallAgreement: true, + // overrides, + // }).exec(aliceSigner); + + // // Set the rateTolerance back to 0.5% + // await market.setRateTolerance(500); + // }); + + // xit("#1.9 revert when inputToken is not USDCx", async () => { + + // // Expect revert createFlow with ETHx by Alice + // await expect( + // sf.cfaV1.createFlow({ + // sender: aliceSigner.address, + // receiver: market.address, + // superToken: ricochetETHx.address, + // flowRate: '1000', + // shouldUseCallAgreement: true, + // overrides + // }).exec(aliceSigner) + // ).to.be.revertedWith("InvalidAgreement"); + // }); + }) + + xcontext('#2 - native supertoken outputToken with two streamers', async () => { + // Uses the USDC/rexSHIRT Uniswap LPs where rexSHIRT is the supertoken outputToken before(async () => { - const { - superfluid, - users, - accounts, - tokens, - superTokens, - contracts, - constants, - } = await setup(); - - const { createSFRegistrationKey } = await common(); - - u = users; - sf = superfluid; - superT = superTokens; - tokenss = tokens; - accountss = accounts; - sfRegistrationKey = createSFRegistrationKey; - constant = constants; - - // This order is established in misc/setup.ts - adminSigner = accountss[0]; - aliceSigner = accountss[1]; - bobSigner = accountss[2]; - carlSigner = accountss[3]; - karenSigner = accountss[4]; - usdcxWhaleSigner = accountss[5]; - ethxWhaleSigner = accountss[6]; - maticxWhaleSigner = accountss[7]; - ricWhaleSigner = accountss[10]; - - ricochetMATICx = superT.maticx; - ricochetUSDCx = superT.usdcx; - ricochetETHx = superT.ethx; - ricochetWBTCx = superT.wbtcx; - ricochetRIC = superT.ric; - ricochetRexSHIRT = superT.rexshirt; - - ethxIDAIndex = { - token: ricochetETHx, - IDAIndex: 0, - } - ricIDAIndex = { - token: ricochetRIC, - IDAIndex: 1, - } - - // Impersonate Superfluid Governance and make a registration key - const registrationKey = await sfRegistrationKey(sf, adminSigner.address); - - // Deploy REXReferral - rexReferral = await ethers.getContractFactory("REXReferral", { - signer: adminSigner, - }); - referral = await rexReferral.deploy(); - await referral.deployed(); - - // Update the oracle price for ethereum - let httpService = new HttpService(); - const url = "https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd"; - let response = await httpService.get(url); - oraclePrice = parseInt(response.data['ethereum'].usd); - console.log("ETH Oracle price: ", oraclePrice); - - // Deploy REX Market - REXMarketFactory = await ethers.getContractFactory( - "REXUniswapV3Market", - adminSigner - ); - - // Deploy the REXUniswapV3Market - market = await REXMarketFactory.deploy( - adminSigner.address, - config.HOST_SUPERFLUID_ADDRESS, - config.CFA_SUPERFLUID_ADDRESS, - config.IDA_SUPERFLUID_ADDRESS, - registrationKey, - referral.address, - config.GELATO_OPS, - adminSigner.address - ); - - // Initialize MATIC - await market.initializeMATIC(config.WMATIC_ADDRESS, config.MATICX_ADDRESS); - - // Create the task for Gelato - await market.createTask(); - gelatoBlock = await ethers.provider.getBlock("latest"); - - // Initialize the market - await market.initializeMarket( - ricochetUSDCx.address, - ricochetETHx.address, - ricochetRIC.address, - config.SHARE_SCALER, - config.FEE_RATE, - config.AFFILAITE_FEE, - config.RATE_TOLERANCE, - ); - - // Save this block number for expectations below - intializeMarketBlock = await ethers.provider.getBlock("latest"); - - await market.initializeUniswap( - config.UNISWAP_V3_ROUTER_ADDRESS, - config.UNISWAP_V3_FACTORY_ADDRESS, - [config.USDC_ADDRESS, config.ETH_ADDRESS], - 500 - ); - - // Initialize Price Feed - await market.initializePriceFeed( - config.CHAINLINK_ETH_USDC_PRICE_FEED, - false - ); - - // Send the market some RIC for subsidies - await ricochetRIC.transfer({ - receiver: market.address, - amount: "1000000000000000000" - }).exec(ricWhaleSigner); - - // Register the market with REXReferral - await referral.registerApp(market.address); - referral = await referral.connect(carlSigner); - await referral.applyForAffiliate("carl", "carl"); - referral = await referral.connect(adminSigner); - - // Give Alice, Bob, Karen some tokens - const initialAmount = ethers.utils.parseUnits("1000", 18).toString(); - - // USDCx for Alice - await ricochetUSDCx - .transfer({ - receiver: aliceSigner.address, - amount: initialAmount, - }).exec(usdcxWhaleSigner); - - // USDCx for Bob - await ricochetUSDCx - .transfer({ - receiver: bobSigner.address, - amount: initialAmount, - }).exec(usdcxWhaleSigner); - - // RIC for Bob - await ricochetRIC - .transfer({ - receiver: bobSigner.address, - amount: '1000000000000000000000', - }).exec(ricWhaleSigner); - - // RIC for market - await ricochetRIC - .transfer({ - receiver: market.address, - amount: '1000000000000000000000', - }).exec(ricWhaleSigner); - - // MATICx for Bob - await ricochetMATICx - .transfer({ - receiver: bobSigner.address, - amount: '1754897259852523432', - }).exec(maticxWhaleSigner); - - // USDCx for Karen - await ricochetUSDCx - .transfer({ - receiver: karenSigner.address, - amount: initialAmount, - }).exec(usdcxWhaleSigner); - - // Do all the approvals - await approveSubscriptions([ethxIDAIndex, ricIDAIndex], - [adminSigner, aliceSigner, bobSigner, carlSigner]); // karenSigner - - - // Take a snapshot to avoid redoing the setup, this saves some time later in the testing scripts - snapshot = await provider.send('evm_snapshot', []); - - - }); - - context("#1 - new rexmarket with no streamers", async () => { - - beforeEach(async () => { - // Revert to the point REXMarket was just deployed - const success = await provider.send('evm_revert', [ - snapshot - ]); - // Take another snapshot to be able to revert again next time - snapshot = await provider.send('evm_snapshot', []); - expect(success).to.equal(true); - }); - - afterEach(async () => { - // Check the app isn't jailed - // expect(await market.isAppJailed()).to.equal(false); - await resetMeasurements(); - }); - - after(async () => { - - }); - - it("#1.1 contract variables were set correctly", async () => { - - expect(await market.owner()).to.equal(adminSigner.address); - expect(await market.numOutputPools()).to.equal(2); - expect(await market.lastDistributedAt()).to.equal(intializeMarketBlock.timestamp); - expect(await market.rateTolerance()).to.equal(config.RATE_TOLERANCE); - expect(await market.feeRate()).to.equal(config.FEE_RATE); - expect(await market.affiliateFee()).to.equal(config.AFFILAITE_FEE); - expect(await market.shareScaler()).to.equal(config.SHARE_SCALER); - expect(await market.inputToken()).to.equal(ricochetUSDCx.address); - expect(await market.outputToken()).to.equal(ricochetETHx.address); - expect(await market.subsidyToken()).to.equal(ricochetRIC.address); - expect(await market.underlyingInputToken()).to.equal(config.USDC_ADDRESS); - expect(await market.underlyingOutputToken()).to.equal(config.ETH_ADDRESS); - expect(await market.wmatic()).to.equal(config.WMATIC_ADDRESS); - expect(await market.maticx()).to.equal(config.MATICX_ADDRESS); - - // Test set methods from REXUniswapV3Market - await market.setEmissionRate(1000); - expect((await market.outputPools(1))[2]).to.equal(1000); - - await market.setRateTolerance(200); - expect(await market.rateTolerance()).to.equal(200); - - await market.setGelatoFeeShare(20); - expect(await market.gelatoFeeShare()).to.equal(20); - - }); - - it("#1.2 withdraw subsidy token", async () => { - let beforeRIC =ethers.BigNumber.from( - await ricochetRIC.balanceOf({ - account: adminSigner.address, - providerOrSigner: provider - }) - ); - - await market.withdrawSubsidyToken(100); - - let afterRIC =ethers.BigNumber.from( - await ricochetRIC.balanceOf({ - account: adminSigner.address, - providerOrSigner: provider - }) - ); - - expect(afterRIC.sub(beforeRIC)).to.equal(100); - }); - - it("#1.3 before/afterAgreementCreated callbacks", async () => { - - // Alice opens a USDC stream to REXMarket - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: market.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc, - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - shouldUseCallAgreement: true, - overrides - }).exec(aliceSigner); - - // Expect share allocations were done correctly - expect( - (await market.getIDAShares(0, aliceSigner.address)).toString() - ).to.equal(`true,true,99500000000,0`); - // Admin and Carl split 2% of the shares bc of the 50% referral fee - expect( - (await market.getIDAShares(0, adminSigner.address)).toString() - ).to.equal(`true,true,250000000,0`); - expect( - (await market.getIDAShares(0, carlSigner.address)).toString() - ).to.equal(`true,true,250000000,0`); - - // Check balances - await takeMeasurements(); - - // Give it a minute... - await increaseTime(TEST_TRAVEL_TIME); - - // A distritbution happens when Bob starts his stream - await sf.cfaV1.createFlow({ - sender: bobSigner.address, - receiver: market.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateEth, - shouldUseCallAgreement: true, - overrides - }).exec(bobSigner); - - // Expect Alice wait distributed fairly - // Check balances again - await takeMeasurements(); - - // Check oracle - oraclePrice = await market.getLatestPrice(); - - // Compute the delta - let deltaAlice = await delta(aliceSigner, aliceBalances); - let deltaCarl = await delta(carlSigner, carlBalances); - let deltaOwner = await delta(adminSigner, ownerBalances); - - // Expect Owner and Carl got their fee from Alice - let totalOutput = deltaAlice.ethx + deltaCarl.ethx + deltaOwner.ethx; - - // Expect alice got within 1.0% of the oracle price (TODO: move to 0.75?) - expect(deltaAlice.ethx).to.be.above(deltaAlice.usdcx / oraclePrice * 1e8 * -1 * 0.98); - // Check Carl and Owner got their shares - expect(deltaCarl.ethx / totalOutput).to.equal(0.0025); - expect(deltaOwner.ethx / totalOutput).to.equal(0.0025); - - // Display exchange rates and deltas for visual inspection by the test engineers - console.log("Alice exchange rate:", deltaAlice.usdcx / deltaAlice.ethx * -1) - // Show the delte between the oracle price - console.log("Alice oracle delta (%):", 100 * ((deltaAlice.usdcx / deltaAlice.ethx * -1) * 1e8 - oraclePrice) / oraclePrice) - - - // Expect Bob's share allocations were done correctly - expect( - (await market.getIDAShares(0, bobSigner.address)).toString() - ).to.equal(`true,true,995000000,0`); - - // Admin gets all of the 0.5% fee bc Bob was an organic referral - expect( - (await market.getIDAShares(0, adminSigner.address)).toString() - ).to.equal(`true,true,255000000,0`); - - - - - // Delete Alices stream before first distributions - await sf.cfaV1.deleteFlow({ - receiver: market.address, - sender: aliceSigner.address, - superToken: ricochetUSDCx.address, - shouldUseCallAgreement: true, - }).exec(aliceSigner); - - // Delete Alices stream before first distributions - await sf.cfaV1.deleteFlow({ - receiver: market.address, - sender: bobSigner.address, - superToken: ricochetUSDCx.address, - shouldUseCallAgreement: true, - }).exec(bobSigner); - - }); - - it("#1.4 before/afterAgreementUpdated callbacks", async () => { - - // Alice opens a USDC stream to REXMarket - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: market.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc, - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - shouldUseCallAgreement: true, - overrides - }).exec(aliceSigner); - - // Give some time... - await increaseTime(TEST_TRAVEL_TIME); - - // A distritbution happens when Bob starts his stream - await sf.cfaV1.createFlow({ - sender: bobSigner.address, - receiver: market.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateEth, - shouldUseCallAgreement: true, - overrides - }).exec(bobSigner); - - // Check balances - await takeMeasurements(); - // Give it some time... - await increaseTime(TEST_TRAVEL_TIME); - - - // A distritbution happens when Alice updates her stream - await sf.cfaV1.updateFlow({ - sender: aliceSigner.address, - receiver: market.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc, - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - shouldUseCallAgreement: true, - overrides - }).exec(aliceSigner); - - // Expect Alice wait distributed fairly - - // Check balances again - await takeMeasurements(); - - // Check oracle - oraclePrice = await market.getLatestPrice(); - - // Compute the delta - let deltaAlice = await delta(aliceSigner, aliceBalances); - let deltaBob = await delta(bobSigner, bobBalances); - let deltaCarl = await delta(carlSigner, carlBalances); - let deltaOwner = await delta(adminSigner, ownerBalances); - - // Expect Owner and Carl got their fee from Alice - let totalOutput = deltaAlice.ethx + deltaBob.ethx + deltaCarl.ethx + deltaOwner.ethx; - - // Expect alice got within 1.0% of the oracle price (TODO: move to 0.75?) - expect(deltaAlice.ethx).to.be.above(deltaAlice.usdcx / oraclePrice * 1e8 * -1 * 0.98); - - // Display exchange rates and deltas for visual inspection by the test engineers - console.log("Alice exchange rate:", deltaAlice.usdcx / deltaAlice.ethx * -1) - // Show the delta between the oracle price - console.log("Alice oracle delta (%):", 100 * ((deltaAlice.usdcx / deltaAlice.ethx * -1) * 1e8 - oraclePrice) / oraclePrice) - - // Display exchange rates and deltas for visual inspection by the test engineers - console.log("Bob exchange rate:", deltaBob.usdcx / deltaBob.ethx * -1) - // Show the delta between the oracle price - console.log("Bob oracle delta (%):", 100 * ((deltaBob.usdcx / deltaBob.ethx * -1) * 1e8 - oraclePrice) / oraclePrice) - - - - // Delete Alices stream before first distributions - await sf.cfaV1.deleteFlow({ - receiver: market.address, - sender: aliceSigner.address, - superToken: ricochetUSDCx.address, - shouldUseCallAgreement: true, - }).exec(aliceSigner); - - // Delete Alices stream before first distributions - await sf.cfaV1.deleteFlow({ - receiver: market.address, - sender: bobSigner.address, - superToken: ricochetUSDCx.address, - shouldUseCallAgreement: true, - }).exec(bobSigner); - - }); - - it("#1.5 before/afterAgreementTerminated callbacks", async () => { - - await takeMeasurements(); - - // Alice opens a USDC stream to REXMarket - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: market.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc, - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - shouldUseCallAgreement: true, - overrides - }).exec(aliceSigner); - - - await increaseTime(3600) - - // Delete Alices stream before first distributions - await sf.cfaV1.deleteFlow({ - receiver: market.address, - sender: aliceSigner.address, - superToken: ricochetUSDCx.address, - shouldUseCallAgreement: true, - }).exec(aliceSigner); - - - await takeMeasurements(); - - // Check balance for alice again - let aliceDelta = await delta(aliceSigner, aliceBalances); - - // Expect alice didn't lose anything since she closed stream before distribute - // expect(aliceDelta.usdcx).to.equal(0); - expect(aliceDelta.usdcx).to.equal(0); - expect( - (await market.getIDAShares(0, aliceSigner.address)).toString() - ).to.equal(`true,true,0,0`); - expect( - (await market.getIDAShares(0, adminSigner.address)).toString() - ).to.equal(`true,true,0,0`); - expect( - (await market.getIDAShares(0, carlSigner.address)).toString() - ).to.equal(`true,true,0,0`); - - }); - - it("#1.6 manual distribution", async () => { - - // Alice opens a USDC stream to REXMarket - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: market.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc, - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - shouldUseCallAgreement: true, - }).exec(aliceSigner); - - // Check balance - await takeMeasurements(); - - // Fast forward an hour and distribute - await increaseTime(TEST_TRAVEL_TIME); - // Expect this call to distribute emits a RexSwap event - await expect(market.distribute("0x", true)) - .to.emit(market, "RexSwap"); - - // Do two more distributions before checking balances - await increaseTime(TEST_TRAVEL_TIME); - await market.distribute("0x", true); - - await increaseTime(TEST_TRAVEL_TIME); - await market.distribute("0x", true); - - // Check balances again - await takeMeasurements(); - - // Check oracle - oraclePrice = await market.getLatestPrice(); - - // Compute the delta - let deltaAlice = await delta(aliceSigner, aliceBalances); - let deltaCarl = await delta(carlSigner, carlBalances); - let deltaOwner = await delta(adminSigner, ownerBalances); - - // Expect Owner and Carl got their fee from Alice - let totalOutput = deltaAlice.ethx + deltaCarl.ethx + deltaOwner.ethx; - expect(deltaAlice.ethx).to.be.above(deltaAlice.usdcx / oraclePrice * 1e8 * -1 * 0.98); - - // Display exchange rates and deltas for visual inspection by the test engineers - console.log("Alice exchange rate:", deltaAlice.usdcx / deltaAlice.ethx * -1) - // Show the delte between the oracle price - console.log("Alice oracle delta (%):", 100 * ((deltaAlice.usdcx / deltaAlice.ethx * -1) * 1e8 - oraclePrice) / oraclePrice) - - - - // Delete alice and bobs flow - await sf.cfaV1.deleteFlow({ - sender: aliceSigner.address, - receiver: market.address, - superToken: ricochetUSDCx.address, - shouldUseCallAgreement: true, - overrides, - }).exec(aliceSigner); - - }); - - it("#1.7 gelato distribution", async () => { - const config = Constants['polygon']; - - // Impersonate gelato network and set balance - await impersonateAndSetBalance(config.GELATO_NETWORK); - const gelatoNetwork = await ethers.provider.getSigner(config.GELATO_NETWORK); - const ops = await ethers.getContractAt("Ops", config.GELATO_OPS); - - // Setup gelato executor exec and module data - let encodedArgs = ethers.utils.defaultAbiCoder.encode( - ["uint128", "uint128"], - [gelatoBlock.timestamp, 60] - ); - let execData = market.interface.encodeFunctionData("distribute", ["0x", false]); - let moduleData = { - modules: [1], - args: [encodedArgs], - }; - - // Alice opens a USDC stream to REXMarket - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: market.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc10x, // Increase rate 10x to make sure gelato can be paid - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - shouldUseCallAgreement: true, - }).exec(aliceSigner); - - await takeMeasurements(); - await increaseTime(TEST_TRAVEL_TIME); - - // Submit task to gelato - await ops - .connect(gelatoNetwork) - .exec( - market.address, - market.address, - execData, - moduleData, - GELATO_FEE, - "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - false, // true if payed with treasury - true - ); - await increaseTime(TEST_TRAVEL_TIME); - - // Submit task to gelato - await ops - .connect(gelatoNetwork) - .exec( - market.address, - market.address, - execData, - moduleData, - GELATO_FEE, - "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - false, // true if payed with treasury - true - ); - - // TODO: Not sure why the 3rd gelato execute fails - // await increaseTime(TEST_TRAVEL_TIME); - // // Submit task to gelato - // await ops - // .connect(gelatoNetwork) - // .exec( - // market.address, - // market.address, - // execData, - // moduleData, - // GELATO_FEE, - // "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - // false, // true if payed with treasury - // true, - // {gasLimit: 1000000} - // ); - - // Check balances again - await takeMeasurements(); - - // Check oracle - oraclePrice = await market.getLatestPrice(); - - // Compute the delta - let deltaAlice = await delta(aliceSigner, aliceBalances); - let deltaCarl = await delta(carlSigner, carlBalances); - let deltaOwner = await delta(adminSigner, ownerBalances); - - // Expect Owner and Carl got their fee from Alice - let totalOutput = deltaAlice.ethx + deltaCarl.ethx + deltaOwner.ethx; - expect(deltaCarl.ethx / totalOutput).to.equal(0.0025); - expect(deltaOwner.ethx / totalOutput).to.equal(0.0025); - expect(deltaAlice.ethx).to.be.above(deltaAlice.usdcx / oraclePrice * 1e8 * -1 * 0.98); // TODO: use config.RATE_TOLERANCE - - // Display exchange rates and deltas for visual inspection by the test engineers - console.log("Alice exchange rate:", deltaAlice.usdcx / deltaAlice.ethx * -1) - // Show the delte between the oracle price - console.log("Alice oracle delta (%):", 100 * ((deltaAlice.usdcx / deltaAlice.ethx * -1) * 1e8 - oraclePrice) / oraclePrice) - - // Delete alice and bobs flow - // TODO: Move these deletes into afterEach() - await sf.cfaV1.deleteFlow({ - sender: aliceSigner.address, - receiver: market.address, - superToken: ricochetUSDCx.address, - shouldUseCallAgreement: true, - overrides, - }).exec(aliceSigner); - - }); - - // xit("#1.8 revert when rateTolerance is too low", async () => { - - // // Alice opens a USDC stream to REXMarket - // await sf.cfaV1.createFlow({ - // sender: aliceSigner.address, - // receiver: market.address, - // superToken: ricochetUSDCx.address, - // flowRate: inflowRateUsdc10x, - // userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - // shouldUseCallAgreement: true, - // }).exec(aliceSigner); - // await increaseTime(TEST_TRAVEL_TIME); - - // // distribution and then wait 10x the test travel time - // market.distribute("0x", false) - - // // Fast forward one week - // await increaseTime(ONE_WEEK); - - // await market.setRateTolerance(1); // 0.01% - - // // Expect revert on market.distribute due to the low rate tolerance - // await expect( - // market.distribute("0x", false) - // ).to.be.revertedWith("Too little received"); - - // // Delete alices flow - // await sf.cfaV1.deleteFlow({ - // sender: aliceSigner.address, - // receiver: market.address, - // superToken: ricochetUSDCx.address, - // shouldUseCallAgreement: true, - // overrides, - // }).exec(aliceSigner); - - // // Set the rateTolerance back to 0.5% - // await market.setRateTolerance(500); - // }); - - // xit("#1.9 revert when inputToken is not USDCx", async () => { - - // // Expect revert createFlow with ETHx by Alice - // await expect( - // sf.cfaV1.createFlow({ - // sender: aliceSigner.address, - // receiver: market.address, - // superToken: ricochetETHx.address, - // flowRate: '1000', - // shouldUseCallAgreement: true, - // overrides - // }).exec(aliceSigner) - // ).to.be.revertedWith("InvalidAgreement"); - // }); - - }); - - xcontext("#2 - native supertoken outputToken with two streamers", async () => { - - // Uses the USDC/rexSHIRT Uniswap LPs where rexSHIRT is the supertoken outputToken - - before(async () => { - // const success = await provider.send('evm_revert', [ - // snapshot - // ]); - - // Deploy RIC-USDC Rex Market - const registrationKey = await sfRegistrationKey(sf, adminSigner.address); - - market = await REXMarketFactory.deploy( - adminSigner.address, - sf.settings.config.hostAddress, - config.CFA_SUPERFLUID_ADDRESS, - config.IDA_SUPERFLUID_ADDRESS, - registrationKey, - referral.address, - GELATO_OPS, - adminSigner.address - ); - - // Initialize MATIC - await market.initializeMATIC(config.WMATIC_ADDRESS, config.MATICX_ADDRESS); - - await market.initializeMarket( - ricochetUSDCx.address, - ricochetRexSHIRT.address, - ricochetRIC.address, - config.SHARE_SCALER, - config.FEE_RATE, - config.AFFILAITE_FEE, - 500, - ); - await market.createTask(); - gelatoBlock = await ethers.provider.getBlock("latest"); - - // Initialize the twoway market's uniswap - // token0 is USDC, token1 is rexSHIRT (supertokens) - await market.initializeUniswap( - config.UNISWAP_V3_ROUTER_ADDRESS, - config.UNISWAP_V3_FACTORY_ADDRESS, - [config.USDC_ADDRESS, config.REXSHIRT_ADDRESS], - 10000 - ); - - // Initialize Price Feed - // No pricefeed available for rexSHIRT - // await market.initializePriceFeed( - // config.CHAINLINK_MATIC_USDC_PRICE_FEED - // ); - - // Register the market with REXReferral - await referral.registerApp(market.address); - - rexshirtIDAIndex = { - token: ricochetRexSHIRT, - IDAIndex: 0, - } - ricIDAIndex = { - token: ricochetRIC, - IDAIndex: 1, - } - - await approveSubscriptions([rexshirtIDAIndex, ricIDAIndex], - [adminSigner, aliceSigner, carlSigner]); // bobSigner - - // Alice opens a USDC stream to REXMarket - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: market.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc, - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - shouldUseCallAgreement: true, - overrides, - }).exec(aliceSigner); - - // Advance time to allow for some tokens to accumulate in the market - await increaseTime(TEST_TRAVEL_TIME); - - // Bob opens a USDC stream to REXMarket, triggers a distribute - await sf.cfaV1.createFlow({ - sender: bobSigner.address, - receiver: market.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc, - shouldUseCallAgreement: true, - overrides, - }).exec(bobSigner); - - // Take a snapshot - snapshot = await provider.send('evm_snapshot', []); - - }); - - beforeEach(async () => { - // Revert to the point REXMarket was just deployed - const success = await provider.send('evm_revert', [ - snapshot - ]); - // Take another snapshot to be able to revert again next time - snapshot = await provider.send('evm_snapshot', []); - expect(success).to.equal(true); - }); - - afterEach(async () => { - // Check the app isn't jailed - // expect(await market.isAppJailed()).to.equal(false); - await resetMeasurements(); - }); - - after(async () => { - }); - - - it("#2.1 manual distribution", async () => { - - // First try swap of RIC to USDC - - // Check balance - await takeMeasurements(); - - // Fast forward an hour and distribute - await increaseTime(TEST_TRAVEL_TIME); - await market.distribute("0x", false); - // Fast forward an hour and distribute - await increaseTime(TEST_TRAVEL_TIME); - await market.distribute("0x", false); - // Fast forward an hour and distribute - await increaseTime(TEST_TRAVEL_TIME); - await market.distribute("0x", false); - - - // Check balances again - await takeMeasurements(); - - // get the price from the oracle to use in the test - let rexShirtOraclePrice = await market.getTwap(); - - // Compute the delta - let deltaAlice = await delta(aliceSigner, aliceBalances); - let deltaBob = await delta(bobSigner, bobBalances); - let deltaCarl = await delta(carlSigner, carlBalances); - let deltaOwner = await delta(adminSigner, ownerBalances); - - // // Expect Alice and Bob got the right output less the 2% fee + 2% slippage (thin market) - expect(deltaAlice.rexshirt).to.be.above(deltaAlice.usdcx / rexShirtOraclePrice * 1e18 * -1 * 0.95) - expect(deltaBob.rexshirt).to.be.above(deltaBob.usdcx / rexShirtOraclePrice * 1e18 * -1 * 0.95) - - // // Expect Owner and Carl got their fee from Alice - let totalOutput = deltaAlice.rexshirt + deltaCarl.rexshirt + deltaBob.rexshirt + deltaOwner.rexshirt; - expect(deltaCarl.rexshirt / totalOutput).to.within(0.00491, 0.0501) - expect(deltaOwner.rexshirt / totalOutput).to.within(0.00149, 0.01501) - - // Update Alices stream - await sf.cfaV1.updateFlow({ - sender: aliceSigner.address, - receiver: market.address, - flowRate: inflowRateUsdc10x, - superToken: ricochetUSDCx.address, - shouldUseCallAgreement: true, - overrides, - }).exec(aliceSigner); - - // Check balance - await takeMeasurements(); - // Fast forward an hour and distribute - await increaseTime(60); - await market.distribute("0x", false); - await increaseTime(60); - await market.distribute("0x", false); - await increaseTime(60); - await market.distribute("0x", false); - - // Check balances again - await takeMeasurements(); - - rexShirtOraclePrice = await market.getTwap(); - - // Compute the delta - deltaAlice = await delta(aliceSigner, aliceBalances); - deltaBob = await delta(bobSigner, bobBalances); - deltaCarl = await delta(carlSigner, carlBalances); - deltaOwner = await delta(adminSigner, ownerBalances); - - // Expect Alice and Bob got the right output less the 2% fee + 1% slippage - expect(deltaBob.rexshirt).to.be.above(deltaBob.usdcx / rexShirtOraclePrice * 1e18 * -1 * 0.97) - expect(deltaAlice.rexshirt).to.be.above(deltaAlice.usdcx / rexShirtOraclePrice * 1e18 * -1 * 0.97) - // Expect Owner and Carl got their fee from Alice - totalOutput = deltaAlice.rexshirt + deltaCarl.rexshirt + deltaBob.rexshirt + deltaOwner.rexshirt; - expect(deltaCarl.rexshirt / totalOutput).to.within(0.00491, 0.0501); - expect(deltaOwner.rexshirt / totalOutput).to.within(0.001499, 0.01501); - - // Delete alice and bobs flow - await sf.cfaV1.deleteFlow({ - sender: aliceSigner.address, - receiver: market.address, - superToken: ricochetUSDCx.address, - shouldUseCallAgreement: true, - overrides, - }).exec(aliceSigner); - // Delete Bob's flow - await sf.cfaV1.deleteFlow({ - sender: bobSigner.address, - receiver: market.address, - superToken: ricochetUSDCx.address, - shouldUseCallAgreement: true, - overrides, - }).exec(bobSigner); - - }); - - }); - - context("#3 - matic supertoken market with two", async () => { - - before(async () => { - // Deploy RIC-USDC Rex Market - const registrationKey = await sfRegistrationKey(sf, adminSigner.address); - - market = await REXMarketFactory.deploy( - adminSigner.address, - sf.settings.config.hostAddress, - config.CFA_SUPERFLUID_ADDRESS, - config.IDA_SUPERFLUID_ADDRESS, - registrationKey, - referral.address, - GELATO_OPS, - adminSigner.address - ); - await market.initializeMATIC(config.WMATIC_ADDRESS, config.MATICX_ADDRESS); - await market.createTask(); - await market.initializeMarket( - ricochetUSDCx.address, - ricochetMATICx.address, - ricochetRIC.address, - config.SHARE_SCALER, - config.FEE_RATE, - config.AFFILAITE_FEE, - config.RATE_TOLERANCE, - ); - // Initialize the twoway market's uniswap - // token0 is USDC, token1 is rexSHIRT (supertokens) - await market.initializeUniswap( - config.UNISWAP_V3_ROUTER_ADDRESS, - config.UNISWAP_V3_FACTORY_ADDRESS, - [config.USDC_ADDRESS, config.WMATIC_ADDRESS], - 500 - ); - - // Initialize Price Feed - await market.initializePriceFeed( - config.CHAINLINK_MATIC_USDC_PRICE_FEED, - false - ); - - - - - // Register the market with REXReferral - await referral.registerApp(market.address); - - maticxIDAIndex = { - token: ricochetMATICx, - IDAIndex: 0, - }; - - ricIDAIndex = { - token: ricochetRIC, - IDAIndex: 1, - }; - - await approveSubscriptions([maticxIDAIndex, ricIDAIndex], - [adminSigner, aliceSigner, bobSigner, carlSigner]); - - - // Alice opens a USDC stream to REXMarket - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: market.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc, - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - shouldUseCallAgreement: true, - overrides, - }).exec(aliceSigner); - - // Fast forward 1 minute - await increaseTime(TEST_TRAVEL_TIME); - - await sf.cfaV1.createFlow({ - sender: bobSigner.address, - receiver: market.address, - superToken: ricochetUSDCx.address, - flowRate: inflowRateUsdc, - shouldUseCallAgreement: true, - overrides, - }).exec(bobSigner); - - - // Take a snapshot - snapshot = await provider.send('evm_snapshot', []); - - }); - - beforeEach(async () => { - // Revert to the point REXMarket was just deployed - const success = await provider.send('evm_revert', [ - snapshot - ]); - // Take another snapshot to be able to revert again next time - snapshot = await provider.send('evm_snapshot', []); - expect(success).to.equal(true); - }); - - afterEach(async () => { - await resetMeasurements(); - }); - - after(async () => { - - }); - - it("#3.1 distribution", async () => { - - // Increase rateTolerance to 2%, occasionally the price will be off by 1.5% - await market.setRateTolerance(300); - - // Check balance - await takeMeasurements(); - - // Fast forward an hour and distribute - await increaseTime(TEST_TRAVEL_TIME); - await market.distribute("0x", false); - await increaseTime(TEST_TRAVEL_TIME); - await market.distribute("0x", false); - await increaseTime(TEST_TRAVEL_TIME); - await market.distribute("0x", false); - // Check balances again - await takeMeasurements(); - - // get the price of matic from the oracle - maticOraclePrice = await market.getLatestPrice(); - console.log("MATIC Oracle Price: ", maticOraclePrice.toString()); - - // Compute the delta - let deltaAlice = await delta(aliceSigner, aliceBalances); - let deltaBob = await delta(bobSigner, bobBalances); - let deltaCarl = await delta(carlSigner, carlBalances); - let deltaOwner = await delta(adminSigner, ownerBalances); - - // Expect Alice and Bob got the right output less fee + slippage - expect(deltaBob.maticx).to.be.above(deltaBob.usdcx / maticOraclePrice * 1e8 * -1 * 0.98); - expect(deltaAlice.maticx).to.be.above(deltaAlice.usdcx / maticOraclePrice * 1e8 * -1 * 0.98); - // Expect Owner and Carl got their fee from Alice - expect(deltaCarl.maticx / (deltaAlice.maticx + deltaBob.maticx + deltaCarl.maticx + deltaOwner.maticx)).to.within(0.0012499999, 0.0012500001) - expect(deltaOwner.maticx / (deltaAlice.maticx + deltaBob.maticx + deltaCarl.maticx + deltaOwner.maticx)).to.within(0.0037499999, 0.0037500001) - - // Display exchange rates and deltas for visual inspection by the test engineers - console.log("Alice exchange rate:", deltaAlice.usdcx / deltaAlice.maticx * -1) - // Show the delte between the oracle price - console.log("Alice oracle delta (%):", 100 * ((deltaAlice.usdcx / deltaAlice.maticx * -1) * 1e8 - maticOraclePrice) / maticOraclePrice) - - // Display exchange rates and deltas for visual inspection by the test engineers - console.log("Bob exchange rate:", deltaBob.usdcx / deltaBob.maticx * -1) - // Show the delte between the oracle price - console.log("Bob oracle delta (%):", 100 * ((deltaBob.usdcx / deltaBob.maticx * -1) * 1e8 - maticOraclePrice) / maticOraclePrice) - - - // Delete Alice's flow - // TODO: Move to afterEach() - await sf.cfaV1.deleteFlow({ - sender: aliceSigner.address, - receiver: market.address, - superToken: ricochetUSDCx.address, - shouldUseCallAgreement: true, - overrides, - }).exec(aliceSigner); - - // Delete Bob's flow - await sf.cfaV1.deleteFlow({ - sender: bobSigner.address, - receiver: market.address, - superToken: ricochetUSDCx.address, - shouldUseCallAgreement: true, - overrides, - }).exec(bobSigner); - - - }); - - }); - - context("#4 - stablecoin output market with invertedPrice", async () => { - - before(async () => { - // Deploy RIC-USDC Rex Market - const registrationKey = await sfRegistrationKey(sf, adminSigner.address); - - market = await REXMarketFactory.deploy( - adminSigner.address, - sf.settings.config.hostAddress, - config.CFA_SUPERFLUID_ADDRESS, - config.IDA_SUPERFLUID_ADDRESS, - registrationKey, - referral.address, - GELATO_OPS, - adminSigner.address - ); - await market.initializeMATIC(config.WMATIC_ADDRESS, config.MATICX_ADDRESS); - await market.createTask(); - await market.initializeMarket( - ricochetMATICx.address, - ricochetUSDCx.address, - ricochetRIC.address, - config.SHARE_SCALER, - config.FEE_RATE, - config.AFFILAITE_FEE, - config.RATE_TOLERANCE, - ); - // Initialize the twoway market's uniswap - // token0 is USDC, token1 is rexSHIRT (supertokens) - await market.initializeUniswap( - config.UNISWAP_V3_ROUTER_ADDRESS, - config.UNISWAP_V3_FACTORY_ADDRESS, - [config.WMATIC_ADDRESS, config.USDC_ADDRESS], - 3000 - ); - - // Initialize Price Feed - await market.initializePriceFeed( - config.CHAINLINK_MATIC_USDC_PRICE_FEED, - true - ); - - // Register the market with REXReferral - await referral.registerApp(market.address); - - usdcxIDAIndex = { - token: ricochetUSDCx, - IDAIndex: 0, - }; - - ricIDAIndex = { - token: ricochetRIC, - IDAIndex: 1, - }; - - await approveSubscriptions([usdcxIDAIndex, ricIDAIndex], - [adminSigner, aliceSigner, bobSigner, carlSigner]); - - - // Alice opens a USDC stream to REXMarket - await sf.cfaV1.createFlow({ - sender: aliceSigner.address, - receiver: market.address, - superToken: ricochetMATICx.address, - flowRate: inflowRateUsdc, - userData: ethers.utils.defaultAbiCoder.encode(["string"], ["carl"]), - shouldUseCallAgreement: true, - overrides, - }).exec(aliceSigner); - - // Fast forward time to allow the stream to start - await increaseTime(TEST_TRAVEL_TIME); - - await sf.cfaV1.createFlow({ - sender: bobSigner.address, - receiver: market.address, - superToken: ricochetMATICx.address, - flowRate: "1000000000", - shouldUseCallAgreement: true, - overrides, - }).exec(bobSigner); - - // Take a snapshot - snapshot = await provider.send('evm_snapshot', []); - - }); - - beforeEach(async () => { - // Revert to the point REXMarket was just deployed - const success = await provider.send('evm_revert', [ - snapshot - ]); - // Take another snapshot to be able to revert again next time - snapshot = await provider.send('evm_snapshot', []); - expect(success).to.equal(true); - }); - - afterEach(async () => { - await resetMeasurements(); - }); - - after(async () => { - - }); - - it("#4.1 distribution", async () => { - - // Increase rateTolerance to 2%, occasionally the price will be off by 1.5% - await market.setRateTolerance(200); - - // Check balance - await takeMeasurements(); - - // Fast forward an hour and distribute - await increaseTime(TEST_TRAVEL_TIME); - await market.distribute("0x", false); - await increaseTime(TEST_TRAVEL_TIME); - await market.distribute("0x", false); - await increaseTime(TEST_TRAVEL_TIME); - await market.distribute("0x", false); - // Check balances again - await takeMeasurements(); - - // get the price of matic from the oracle - maticOraclePrice = await market.getLatestPrice(); - console.log("MATIC Oracle Price: ", maticOraclePrice.toString()); - - // Compute the delta - let deltaAlice = await delta(aliceSigner, aliceBalances); - let deltaBob = await delta(bobSigner, bobBalances); - let deltaCarl = await delta(carlSigner, carlBalances); - let deltaOwner = await delta(adminSigner, ownerBalances); - - // Expect Alice and Bob got the right output less fee + slippage - expect(deltaBob.usdcx).to.be.above(deltaBob.maticx * maticOraclePrice / 1e8 * -1 * 0.98); - expect(deltaAlice.usdcx).to.be.above(deltaAlice.maticx * maticOraclePrice / 1e8 * -1 * 0.98); - - // Display exchange rates and deltas for visual inspection by the test engineers - console.log("Alice exchange rate:", deltaAlice.usdcx / deltaAlice.maticx * -1) - // Show the delte between the oracle price - console.log("Alice oracle delta (%):", 100 * ((deltaAlice.usdcx / deltaAlice.maticx * -1) * 1e8 - maticOraclePrice) / maticOraclePrice) - - // Display exchange rates and deltas for visual inspection by the test engineers - console.log("Bob exchange rate:", deltaBob.usdcx / deltaBob.maticx * -1) - // Show the delte between the oracle price - console.log("Bob oracle delta (%):", 100 * ((deltaBob.usdcx / deltaBob.maticx * -1) * 1e8 - maticOraclePrice) / maticOraclePrice) - - - // Delete Alice's flow - // TODO: Move to afterEach() - await sf.cfaV1.deleteFlow({ - sender: aliceSigner.address, - receiver: market.address, - superToken: ricochetMATICx.address, - shouldUseCallAgreement: true, - overrides, - }).exec(aliceSigner); - - // Delete Bob's flow - await sf.cfaV1.deleteFlow({ - sender: bobSigner.address, - receiver: market.address, - superToken: ricochetMATICx.address, - shouldUseCallAgreement: true, - overrides, - }).exec(bobSigner); - - - }); - - }); - -}); + // const success = await provider.send('evm_revert', [ + // snapshot + // ]); + + // Deploy RIC-USDC Rex Market + const registrationKey = await sfRegistrationKey(sf, adminSigner.address) + + market = await REXMarketFactory.deploy( + adminSigner.address, + sf.settings.config.hostAddress, + config.CFA_SUPERFLUID_ADDRESS, + config.IDA_SUPERFLUID_ADDRESS, + registrationKey, + referral.address, + GELATO_OPS, + adminSigner.address + ) + + // Initialize MATIC + await market.initializeMATIC(config.WMATIC_ADDRESS, config.MATICX_ADDRESS) + + await market.initializeMarket( + ricochetUSDCx.address, + ricochetRexSHIRT.address, + ricochetRIC.address, + config.SHARE_SCALER, + config.FEE_RATE, + config.AFFILAITE_FEE, + 500 + ) + await market.createTask() + gelatoBlock = await ethers.provider.getBlock('latest') + + // Initialize the twoway market's uniswap + // token0 is USDC, token1 is rexSHIRT (supertokens) + await market.initializeUniswap( + config.UNISWAP_V3_ROUTER_ADDRESS, + config.UNISWAP_V3_FACTORY_ADDRESS, + [config.USDC_ADDRESS, config.REXSHIRT_ADDRESS], + 10000 + ) + + // Initialize Price Feed + // No pricefeed available for rexSHIRT + // await market.initializePriceFeed( + // config.CHAINLINK_MATIC_USDC_PRICE_FEED + // ); + + // Register the market with REXReferral + await referral.registerApp(market.address) + + rexshirtIDAIndex = { + token: ricochetRexSHIRT, + IDAIndex: 0, + } + ricIDAIndex = { + token: ricochetRIC, + IDAIndex: 1, + } + + await approveSubscriptions([rexshirtIDAIndex, ricIDAIndex], [adminSigner, aliceSigner, carlSigner]) // bobSigner + + // Alice opens a USDC stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: market.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc, + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['carl']), + shouldUseCallAgreement: true, + overrides, + }) + .exec(aliceSigner) + + // Advance time to allow for some tokens to accumulate in the market + await increaseTime(TEST_TRAVEL_TIME) + + // Bob opens a USDC stream to REXMarket, triggers a distribute + await sf.cfaV1 + .createFlow({ + sender: bobSigner.address, + receiver: market.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc, + shouldUseCallAgreement: true, + overrides, + }) + .exec(bobSigner) + + // Take a snapshot + snapshot = await provider.send('evm_snapshot', []) + }) + + beforeEach(async () => { + // Revert to the point REXMarket was just deployed + const success = await provider.send('evm_revert', [snapshot]) + // Take another snapshot to be able to revert again next time + snapshot = await provider.send('evm_snapshot', []) + expect(success).to.equal(true) + }) + + afterEach(async () => { + // Check the app isn't jailed + // expect(await market.isAppJailed()).to.equal(false); + await resetMeasurements() + }) + + after(async () => {}) + + it('#2.1 manual distribution', async () => { + // First try swap of RIC to USDC + + // Check balance + await takeMeasurements() + + // Fast forward an hour and distribute + await increaseTime(TEST_TRAVEL_TIME) + await market.distribute('0x', false) + // Fast forward an hour and distribute + await increaseTime(TEST_TRAVEL_TIME) + await market.distribute('0x', false) + // Fast forward an hour and distribute + await increaseTime(TEST_TRAVEL_TIME) + await market.distribute('0x', false) + + // Check balances again + await takeMeasurements() + + // get the price from the oracle to use in the test + let rexShirtOraclePrice = await market.getTwap() + + // Compute the delta + let deltaAlice = await delta(aliceSigner, aliceBalances) + let deltaBob = await delta(bobSigner, bobBalances) + let deltaCarl = await delta(carlSigner, carlBalances) + let deltaOwner = await delta(adminSigner, ownerBalances) + + // // Expect Alice and Bob got the right output less the 2% fee + 2% slippage (thin market) + expect(deltaAlice.rexshirt).to.be.above((deltaAlice.usdcx / rexShirtOraclePrice) * 1e18 * -1 * 0.95) + expect(deltaBob.rexshirt).to.be.above((deltaBob.usdcx / rexShirtOraclePrice) * 1e18 * -1 * 0.95) + + // // Expect Owner and Carl got their fee from Alice + let totalOutput = deltaAlice.rexshirt + deltaCarl.rexshirt + deltaBob.rexshirt + deltaOwner.rexshirt + expect(deltaCarl.rexshirt / totalOutput).to.within(0.00491, 0.0501) + expect(deltaOwner.rexshirt / totalOutput).to.within(0.00149, 0.01501) + + // Update Alices stream + await sf.cfaV1 + .updateFlow({ + sender: aliceSigner.address, + receiver: market.address, + flowRate: inflowRateUsdc10x, + superToken: ricochetUSDCx.address, + shouldUseCallAgreement: true, + overrides, + }) + .exec(aliceSigner) + + // Check balance + await takeMeasurements() + // Fast forward an hour and distribute + await increaseTime(60) + await market.distribute('0x', false) + await increaseTime(60) + await market.distribute('0x', false) + await increaseTime(60) + await market.distribute('0x', false) + + // Check balances again + await takeMeasurements() + + rexShirtOraclePrice = await market.getTwap() + + // Compute the delta + deltaAlice = await delta(aliceSigner, aliceBalances) + deltaBob = await delta(bobSigner, bobBalances) + deltaCarl = await delta(carlSigner, carlBalances) + deltaOwner = await delta(adminSigner, ownerBalances) + + // Expect Alice and Bob got the right output less the 2% fee + 1% slippage + expect(deltaBob.rexshirt).to.be.above((deltaBob.usdcx / rexShirtOraclePrice) * 1e18 * -1 * 0.97) + expect(deltaAlice.rexshirt).to.be.above((deltaAlice.usdcx / rexShirtOraclePrice) * 1e18 * -1 * 0.97) + // Expect Owner and Carl got their fee from Alice + totalOutput = deltaAlice.rexshirt + deltaCarl.rexshirt + deltaBob.rexshirt + deltaOwner.rexshirt + expect(deltaCarl.rexshirt / totalOutput).to.within(0.00491, 0.0501) + expect(deltaOwner.rexshirt / totalOutput).to.within(0.001499, 0.01501) + + // Delete alice and bobs flow + await sf.cfaV1 + .deleteFlow({ + sender: aliceSigner.address, + receiver: market.address, + superToken: ricochetUSDCx.address, + shouldUseCallAgreement: true, + overrides, + }) + .exec(aliceSigner) + // Delete Bob's flow + await sf.cfaV1 + .deleteFlow({ + sender: bobSigner.address, + receiver: market.address, + superToken: ricochetUSDCx.address, + shouldUseCallAgreement: true, + overrides, + }) + .exec(bobSigner) + }) + }) + + context('#3 - matic supertoken market with two', async () => { + before(async () => { + // Deploy RIC-USDC Rex Market + const registrationKey = await sfRegistrationKey(sf, adminSigner.address) + + market = await REXMarketFactory.deploy( + adminSigner.address, + sf.settings.config.hostAddress, + config.CFA_SUPERFLUID_ADDRESS, + config.IDA_SUPERFLUID_ADDRESS, + registrationKey, + referral.address, + GELATO_OPS, + adminSigner.address + ) + await market.initializeMATIC(config.WMATIC_ADDRESS, config.MATICX_ADDRESS) + await market.createTask() + await market.initializeMarket( + ricochetUSDCx.address, + ricochetMATICx.address, + ricochetRIC.address, + config.SHARE_SCALER, + config.FEE_RATE, + config.AFFILAITE_FEE, + config.RATE_TOLERANCE + ) + // Initialize the twoway market's uniswap + // token0 is USDC, token1 is rexSHIRT (supertokens) + await market.initializeUniswap( + config.UNISWAP_V3_ROUTER_ADDRESS, + config.UNISWAP_V3_FACTORY_ADDRESS, + [config.USDC_ADDRESS, config.WMATIC_ADDRESS], + 500 + ) + + // Initialize Price Feed + await market.initializePriceFeed(config.CHAINLINK_MATIC_USDC_PRICE_FEED, false) + + // Register the market with REXReferral + await referral.registerApp(market.address) + + maticxIDAIndex = { + token: ricochetMATICx, + IDAIndex: 0, + } + + ricIDAIndex = { + token: ricochetRIC, + IDAIndex: 1, + } + + await approveSubscriptions([maticxIDAIndex, ricIDAIndex], [adminSigner, aliceSigner, bobSigner, carlSigner]) + + // Alice opens a USDC stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: market.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc, + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['carl']), + shouldUseCallAgreement: true, + overrides, + }) + .exec(aliceSigner) + + // Fast forward 1 minute + await increaseTime(TEST_TRAVEL_TIME) + + await sf.cfaV1 + .createFlow({ + sender: bobSigner.address, + receiver: market.address, + superToken: ricochetUSDCx.address, + flowRate: inflowRateUsdc, + shouldUseCallAgreement: true, + overrides, + }) + .exec(bobSigner) + + // Take a snapshot + snapshot = await provider.send('evm_snapshot', []) + }) + + beforeEach(async () => { + // Revert to the point REXMarket was just deployed + const success = await provider.send('evm_revert', [snapshot]) + // Take another snapshot to be able to revert again next time + snapshot = await provider.send('evm_snapshot', []) + expect(success).to.equal(true) + }) + + afterEach(async () => { + await resetMeasurements() + }) + + after(async () => {}) + + it('#3.1 distribution', async () => { + // Increase rateTolerance to 2%, occasionally the price will be off by 1.5% + await market.setRateTolerance(300) + + // Check balance + await takeMeasurements() + + // Fast forward an hour and distribute + await increaseTime(TEST_TRAVEL_TIME) + await market.distribute('0x', false) + await increaseTime(TEST_TRAVEL_TIME) + await market.distribute('0x', false) + await increaseTime(TEST_TRAVEL_TIME) + await market.distribute('0x', false) + // Check balances again + await takeMeasurements() + + // get the price of matic from the oracle + maticOraclePrice = await market.getLatestPrice() + console.log('MATIC Oracle Price: ', maticOraclePrice.toString()) + + // Compute the delta + let deltaAlice = await delta(aliceSigner, aliceBalances) + let deltaBob = await delta(bobSigner, bobBalances) + let deltaCarl = await delta(carlSigner, carlBalances) + let deltaOwner = await delta(adminSigner, ownerBalances) + + // Expect Alice and Bob got the right output less fee + slippage + expect(deltaBob.maticx).to.be.above((deltaBob.usdcx / maticOraclePrice) * 1e8 * -1 * 0.98) + expect(deltaAlice.maticx).to.be.above((deltaAlice.usdcx / maticOraclePrice) * 1e8 * -1 * 0.98) + // Expect Owner and Carl got their fee from Alice + expect(deltaCarl.maticx / (deltaAlice.maticx + deltaBob.maticx + deltaCarl.maticx + deltaOwner.maticx)).to.within( + 0.0012499999, + 0.0012500001 + ) + expect( + deltaOwner.maticx / (deltaAlice.maticx + deltaBob.maticx + deltaCarl.maticx + deltaOwner.maticx) + ).to.within(0.0037499999, 0.0037500001) + + // Display exchange rates and deltas for visual inspection by the test engineers + console.log('Alice exchange rate:', (deltaAlice.usdcx / deltaAlice.maticx) * -1) + // Show the delte between the oracle price + console.log( + 'Alice oracle delta (%):', + (100 * ((deltaAlice.usdcx / deltaAlice.maticx) * -1 * 1e8 - maticOraclePrice)) / maticOraclePrice + ) + + // Display exchange rates and deltas for visual inspection by the test engineers + console.log('Bob exchange rate:', (deltaBob.usdcx / deltaBob.maticx) * -1) + // Show the delte between the oracle price + console.log( + 'Bob oracle delta (%):', + (100 * ((deltaBob.usdcx / deltaBob.maticx) * -1 * 1e8 - maticOraclePrice)) / maticOraclePrice + ) + + // Delete Alice's flow + // TODO: Move to afterEach() + await sf.cfaV1 + .deleteFlow({ + sender: aliceSigner.address, + receiver: market.address, + superToken: ricochetUSDCx.address, + shouldUseCallAgreement: true, + overrides, + }) + .exec(aliceSigner) + + // Delete Bob's flow + await sf.cfaV1 + .deleteFlow({ + sender: bobSigner.address, + receiver: market.address, + superToken: ricochetUSDCx.address, + shouldUseCallAgreement: true, + overrides, + }) + .exec(bobSigner) + }) + }) + + context('#4 - stablecoin output market with invertedPrice', async () => { + before(async () => { + // Deploy RIC-USDC Rex Market + const registrationKey = await sfRegistrationKey(sf, adminSigner.address) + + market = await REXMarketFactory.deploy( + adminSigner.address, + sf.settings.config.hostAddress, + config.CFA_SUPERFLUID_ADDRESS, + config.IDA_SUPERFLUID_ADDRESS, + registrationKey, + referral.address, + GELATO_OPS, + adminSigner.address + ) + await market.initializeMATIC(config.WMATIC_ADDRESS, config.MATICX_ADDRESS) + await market.createTask() + await market.initializeMarket( + ricochetMATICx.address, + ricochetUSDCx.address, + ricochetRIC.address, + config.SHARE_SCALER, + config.FEE_RATE, + config.AFFILAITE_FEE, + config.RATE_TOLERANCE + ) + // Initialize the twoway market's uniswap + // token0 is USDC, token1 is rexSHIRT (supertokens) + await market.initializeUniswap( + config.UNISWAP_V3_ROUTER_ADDRESS, + config.UNISWAP_V3_FACTORY_ADDRESS, + [config.WMATIC_ADDRESS, config.USDC_ADDRESS], + 3000 + ) + + // Initialize Price Feed + await market.initializePriceFeed(config.CHAINLINK_MATIC_USDC_PRICE_FEED, true) + + // Register the market with REXReferral + await referral.registerApp(market.address) + + usdcxIDAIndex = { + token: ricochetUSDCx, + IDAIndex: 0, + } + + ricIDAIndex = { + token: ricochetRIC, + IDAIndex: 1, + } + + await approveSubscriptions([usdcxIDAIndex, ricIDAIndex], [adminSigner, aliceSigner, bobSigner, carlSigner]) + + // Alice opens a USDC stream to REXMarket + await sf.cfaV1 + .createFlow({ + sender: aliceSigner.address, + receiver: market.address, + superToken: ricochetMATICx.address, + flowRate: inflowRateUsdc, + userData: ethers.utils.defaultAbiCoder.encode(['string'], ['carl']), + shouldUseCallAgreement: true, + overrides, + }) + .exec(aliceSigner) + + // Fast forward time to allow the stream to start + await increaseTime(TEST_TRAVEL_TIME) + + await sf.cfaV1 + .createFlow({ + sender: bobSigner.address, + receiver: market.address, + superToken: ricochetMATICx.address, + flowRate: '1000000000', + shouldUseCallAgreement: true, + overrides, + }) + .exec(bobSigner) + + // Take a snapshot + snapshot = await provider.send('evm_snapshot', []) + }) + + beforeEach(async () => { + // Revert to the point REXMarket was just deployed + const success = await provider.send('evm_revert', [snapshot]) + // Take another snapshot to be able to revert again next time + snapshot = await provider.send('evm_snapshot', []) + expect(success).to.equal(true) + }) + + afterEach(async () => { + await resetMeasurements() + }) + + after(async () => {}) + + it('#4.1 distribution', async () => { + // Increase rateTolerance to 2%, occasionally the price will be off by 1.5% + await market.setRateTolerance(200) + + // Check balance + await takeMeasurements() + + // Fast forward an hour and distribute + await increaseTime(TEST_TRAVEL_TIME) + await market.distribute('0x', false) + await increaseTime(TEST_TRAVEL_TIME) + await market.distribute('0x', false) + await increaseTime(TEST_TRAVEL_TIME) + await market.distribute('0x', false) + // Check balances again + await takeMeasurements() + + // get the price of matic from the oracle + maticOraclePrice = await market.getLatestPrice() + console.log('MATIC Oracle Price: ', maticOraclePrice.toString()) + + // Compute the delta + let deltaAlice = await delta(aliceSigner, aliceBalances) + let deltaBob = await delta(bobSigner, bobBalances) + let deltaCarl = await delta(carlSigner, carlBalances) + let deltaOwner = await delta(adminSigner, ownerBalances) + + // Expect Alice and Bob got the right output less fee + slippage + expect(deltaBob.usdcx).to.be.above(((deltaBob.maticx * maticOraclePrice) / 1e8) * -1 * 0.98) + expect(deltaAlice.usdcx).to.be.above(((deltaAlice.maticx * maticOraclePrice) / 1e8) * -1 * 0.98) + + // Display exchange rates and deltas for visual inspection by the test engineers + console.log('Alice exchange rate:', (deltaAlice.usdcx / deltaAlice.maticx) * -1) + // Show the delte between the oracle price + console.log( + 'Alice oracle delta (%):', + (100 * ((deltaAlice.usdcx / deltaAlice.maticx) * -1 * 1e8 - maticOraclePrice)) / maticOraclePrice + ) + + // Display exchange rates and deltas for visual inspection by the test engineers + console.log('Bob exchange rate:', (deltaBob.usdcx / deltaBob.maticx) * -1) + // Show the delte between the oracle price + console.log( + 'Bob oracle delta (%):', + (100 * ((deltaBob.usdcx / deltaBob.maticx) * -1 * 1e8 - maticOraclePrice)) / maticOraclePrice + ) + + // Delete Alice's flow + // TODO: Move to afterEach() + await sf.cfaV1 + .deleteFlow({ + sender: aliceSigner.address, + receiver: market.address, + superToken: ricochetMATICx.address, + shouldUseCallAgreement: true, + overrides, + }) + .exec(aliceSigner) + + // Delete Bob's flow + await sf.cfaV1 + .deleteFlow({ + sender: bobSigner.address, + receiver: market.address, + superToken: ricochetMATICx.address, + shouldUseCallAgreement: true, + overrides, + }) + .exec(bobSigner) + }) + }) +}) diff --git a/test/helpers.ts b/test/helpers.ts index 79b6a8a..ca0ca72 100644 --- a/test/helpers.ts +++ b/test/helpers.ts @@ -1,62 +1,61 @@ -import { BigNumberish } from "ethers"; -import { network, ethers } from "hardhat"; +import { BigNumberish } from 'ethers' +import { network, ethers } from 'hardhat' // import { network } from "hardhat"; -export const getBigNumber = (num: any) => ethers.BigNumber.from(num); +export const getBigNumber = (num: any) => ethers.BigNumber.from(num) -export const getTimeStamp = (date: number) => Math.floor(date / 1000); +export const getTimeStamp = (date: number) => Math.floor(date / 1000) -export const getTimeStampNow = () => Math.floor(Date.now() / 1000); +export const getTimeStampNow = () => Math.floor(Date.now() / 1000) -export const getDate = (timestamp: number) => new Date(timestamp * 1000).toDateString(); +export const getDate = (timestamp: number) => new Date(timestamp * 1000).toDateString() -export const getSeconds = (days: number) => 3600 * 24 * days; // Changes days to seconds +export const getSeconds = (days: number) => 3600 * 24 * days // Changes days to seconds export const impersonateAccount = async (account: string | any) => { - // export const impersonateAccount = async (account: string) => { - await network.provider.request({ - method: "hardhat_impersonateAccount", - params: account - }); + // export const impersonateAccount = async (account: string) => { + await network.provider.request({ + method: 'hardhat_impersonateAccount', + params: account, + }) } export const setBalance = async (account: string, balance: number) => { - const hexBalance = numberToHex(toWad(balance)); - await network.provider.request({ - method: "hardhat_setBalance", - params: [account, hexBalance], - }); + const hexBalance = numberToHex(toWad(balance)) + await network.provider.request({ + method: 'hardhat_setBalance', + params: [account, hexBalance], + }) } export const impersonateAndSetBalance = async (account: string) => { - await impersonateAccount(account); - await setBalance(account, 10000); + await impersonateAccount(account) + await setBalance(account, 10000) } // signers[i] = await ethers.getSigner(accounts[i]); // } export const currentBlockTimestamp = async () => { - const currentBlockNumber = await ethers.provider.getBlockNumber(); - return (await ethers.provider.getBlock(currentBlockNumber)).timestamp; -}; + const currentBlockNumber = await ethers.provider.getBlockNumber() + return (await ethers.provider.getBlock(currentBlockNumber)).timestamp +} export const increaseTime = async (seconds: any) => { - await network.provider.send("evm_increaseTime", [seconds]); - await network.provider.send("evm_mine"); -}; + await network.provider.send('evm_increaseTime', [seconds]) + await network.provider.send('evm_mine') +} export const setNextBlockTimestamp = async (timestamp: any) => { - await network.provider.send("evm_setNextBlockTimestamp", [timestamp]) - await network.provider.send("evm_mine") -}; + await network.provider.send('evm_setNextBlockTimestamp', [timestamp]) + await network.provider.send('evm_mine') +} // Function for converting amount from larger unit (like eth) to smaller unit (like wei) export function convertTo(amount: BigNumberish, decimals: number): string { - return ethers.utils.formatUnits(amount, decimals); // JR + return ethers.utils.formatUnits(amount, decimals) // JR } // Function for converting amoun export function convertFrom(amount: BigNumberish, decimals: number): string { - return ethers.utils.formatUnits(amount, decimals); // JR + return ethers.utils.formatUnits(amount, decimals) // JR } - diff --git a/yarn.lock b/yarn.lock index 4f79be9..0e1d5c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,45 +3,45 @@ "@babel/code-frame@^7.0.0", "@babel/code-frame@7.12.11": - "integrity" "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" - "version" "7.12.11" + version "7.12.11" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== dependencies: "@babel/highlight" "^7.10.4" "@babel/helper-validator-identifier@^7.15.7": - "integrity" "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz" - "version" "7.15.7" + version "7.15.7" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz" + integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== "@babel/highlight@^7.10.4": - "integrity" "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==" - "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz" - "version" "7.16.0" + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz" + integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== dependencies: "@babel/helper-validator-identifier" "^7.15.7" - "chalk" "^2.0.0" - "js-tokens" "^4.0.0" + chalk "^2.0.0" + js-tokens "^4.0.0" "@babel/runtime-corejs3@^7.10.2": - "integrity" "sha512-F1pMwvTiUNSAM8mc45kccMQxj31x3y3P+tA/X8hKNWp3/hUsxdGxZ3D3H8JIkxtfA8qGkaBTKvcmvStaYseAFw==" - "resolved" "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.5.tgz" - "version" "7.16.5" + version "7.16.5" + resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.5.tgz" + integrity sha512-F1pMwvTiUNSAM8mc45kccMQxj31x3y3P+tA/X8hKNWp3/hUsxdGxZ3D3H8JIkxtfA8qGkaBTKvcmvStaYseAFw== dependencies: - "core-js-pure" "^3.19.0" - "regenerator-runtime" "^0.13.4" + core-js-pure "^3.19.0" + regenerator-runtime "^0.13.4" "@babel/runtime@^7.10.2", "@babel/runtime@^7.16.3", "@babel/runtime@^7.4.4": - "integrity" "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz" - "version" "7.16.5" + version "7.16.5" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz" + integrity sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA== dependencies: - "regenerator-runtime" "^0.13.4" + regenerator-runtime "^0.13.4" "@chainlink/contracts@^0.6.1": - "integrity" "sha512-EuwijGexttw0UjfrW+HygwhQIrGAbqpf1ue28R55HhWMHBzphEH0PhWm8DQmFfj5OZNy8Io66N4L0nStkZ3QKQ==" - "resolved" "https://registry.npmjs.org/@chainlink/contracts/-/contracts-0.6.1.tgz" - "version" "0.6.1" + version "0.6.1" + resolved "https://registry.npmjs.org/@chainlink/contracts/-/contracts-0.6.1.tgz" + integrity sha512-EuwijGexttw0UjfrW+HygwhQIrGAbqpf1ue28R55HhWMHBzphEH0PhWm8DQmFfj5OZNy8Io66N4L0nStkZ3QKQ== dependencies: "@eth-optimism/contracts" "^0.5.21" "@openzeppelin/contracts" "~4.3.3" @@ -49,100 +49,100 @@ "@openzeppelin/contracts-v0.7" "npm:@openzeppelin/contracts@v3.4.2" "@colors/colors@1.5.0": - "integrity" "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" - "resolved" "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" - "version" "1.5.0" + version "1.5.0" + resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== "@cspotcode/source-map-consumer@0.8.0": - "integrity" "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==" - "resolved" "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz" - "version" "0.8.0" + version "0.8.0" + resolved "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz" + integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg== "@cspotcode/source-map-support@0.7.0": - "integrity" "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==" - "resolved" "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz" - "version" "0.7.0" + version "0.7.0" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz" + integrity sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA== dependencies: "@cspotcode/source-map-consumer" "0.8.0" "@decentral.ee/web3-helpers@0.5.3": - "integrity" "sha512-6ZS2zpAUdWXhyZ8U7A4HzianIk3v5n051+QEezNdF3uOI7hJ7ty/MjNhxL3QqfiR+4cxKEz20UiAyZkU6/e2jA==" - "resolved" "https://registry.npmjs.org/@decentral.ee/web3-helpers/-/web3-helpers-0.5.3.tgz" - "version" "0.5.3" + version "0.5.3" + resolved "https://registry.npmjs.org/@decentral.ee/web3-helpers/-/web3-helpers-0.5.3.tgz" + integrity sha512-6ZS2zpAUdWXhyZ8U7A4HzianIk3v5n051+QEezNdF3uOI7hJ7ty/MjNhxL3QqfiR+4cxKEz20UiAyZkU6/e2jA== dependencies: - "web3-utils" "^1.3.4" + web3-utils "^1.3.4" "@ensdomains/address-encoder@^0.1.7": - "integrity" "sha512-E2d2gP4uxJQnDu2Kfg1tHNspefzbLT8Tyjrm5sEuim32UkU2sm5xL4VXtgc2X33fmPEw9+jUMpGs4veMbf+PYg==" - "resolved" "https://registry.npmjs.org/@ensdomains/address-encoder/-/address-encoder-0.1.9.tgz" - "version" "0.1.9" - 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" + version "0.1.9" + resolved "https://registry.npmjs.org/@ensdomains/address-encoder/-/address-encoder-0.1.9.tgz" + integrity sha512-E2d2gP4uxJQnDu2Kfg1tHNspefzbLT8Tyjrm5sEuim32UkU2sm5xL4VXtgc2X33fmPEw9+jUMpGs4veMbf+PYg== + 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" "@ensdomains/ens@^0.4.4", "@ensdomains/ens@0.4.5": - "integrity" "sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw==" - "resolved" "https://registry.npmjs.org/@ensdomains/ens/-/ens-0.4.5.tgz" - "version" "0.4.5" + version "0.4.5" + resolved "https://registry.npmjs.org/@ensdomains/ens/-/ens-0.4.5.tgz" + integrity sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw== 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" + 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" "@ensdomains/ensjs@^2.0.1", "@ensdomains/ensjs@^2.1.0": - "integrity" "sha512-GRbGPT8Z/OJMDuxs75U/jUNEC0tbL0aj7/L/QQznGYKm/tiasp+ndLOaoULy9kKJFC0TBByqfFliEHDgoLhyog==" - "resolved" "https://registry.npmjs.org/@ensdomains/ensjs/-/ensjs-2.1.0.tgz" - "version" "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/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" + content-hash "^2.5.2" + eth-ens-namehash "^2.0.8" + ethers "^5.0.13" + js-sha3 "^0.8.0" "@ensdomains/resolver@^0.2.4", "@ensdomains/resolver@0.2.4": - "integrity" "sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA==" - "resolved" "https://registry.npmjs.org/@ensdomains/resolver/-/resolver-0.2.4.tgz" - "version" "0.2.4" + version "0.2.4" + resolved "https://registry.npmjs.org/@ensdomains/resolver/-/resolver-0.2.4.tgz" + integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== "@eslint/eslintrc@^0.4.3": - "integrity" "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==" - "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz" - "version" "0.4.3" - 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" + version "0.4.3" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" "@eth-optimism/contracts@^0.5.21": - "integrity" "sha512-MrzV0nvsymfO/fursTB7m/KunkPsCndltVgfdHaT1Aj5Vi6R/doKIGGkOofHX+8B6VMZpuZosKCMQ5lQuqjt8w==" - "resolved" "https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.40.tgz" - "version" "0.5.40" + version "0.5.40" + resolved "https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.40.tgz" + integrity sha512-MrzV0nvsymfO/fursTB7m/KunkPsCndltVgfdHaT1Aj5Vi6R/doKIGGkOofHX+8B6VMZpuZosKCMQ5lQuqjt8w== dependencies: "@eth-optimism/core-utils" "0.12.0" "@ethersproject/abstract-provider" "^5.7.0" "@ethersproject/abstract-signer" "^5.7.0" "@eth-optimism/core-utils@0.12.0": - "integrity" "sha512-qW+7LZYCz7i8dRa7SRlUKIo1VBU8lvN0HeXCxJR+z+xtMzMQpPds20XJNCMclszxYQHkXY00fOT6GvFw9ZL6nw==" - "resolved" "https://registry.npmjs.org/@eth-optimism/core-utils/-/core-utils-0.12.0.tgz" - "version" "0.12.0" + version "0.12.0" + resolved "https://registry.npmjs.org/@eth-optimism/core-utils/-/core-utils-0.12.0.tgz" + integrity sha512-qW+7LZYCz7i8dRa7SRlUKIo1VBU8lvN0HeXCxJR+z+xtMzMQpPds20XJNCMclszxYQHkXY00fOT6GvFw9ZL6nw== dependencies: "@ethersproject/abi" "^5.7.0" "@ethersproject/abstract-provider" "^5.7.0" @@ -158,82 +158,82 @@ "@ethersproject/rlp" "^5.7.0" "@ethersproject/transactions" "^5.7.0" "@ethersproject/web" "^5.7.0" - "bufio" "^1.0.7" - "chai" "^4.3.4" + bufio "^1.0.7" + chai "^4.3.4" "@ethereum-waffle/chai@^3.4.0": - "integrity" "sha512-8mjgjWCe8XSCWuyJgVtJY8sm00VTczGBTDxBejgEBWN/J9x7QD8jdmWW8bfxdnqZbxiDCTvRFL58Wmd254BEqQ==" - "resolved" "https://registry.npmjs.org/@ethereum-waffle/chai/-/chai-3.4.1.tgz" - "version" "3.4.1" + version "3.4.1" + resolved "https://registry.npmjs.org/@ethereum-waffle/chai/-/chai-3.4.1.tgz" + integrity sha512-8mjgjWCe8XSCWuyJgVtJY8sm00VTczGBTDxBejgEBWN/J9x7QD8jdmWW8bfxdnqZbxiDCTvRFL58Wmd254BEqQ== dependencies: "@ethereum-waffle/provider" "^3.4.0" - "ethers" "^5.4.7" + ethers "^5.4.7" "@ethereum-waffle/compiler@^3.4.0": - "integrity" "sha512-a2wxGOoB9F1QFRE+Om7Cz2wn+pxM/o7a0a6cbwhaS2lECJgFzeN9xEkVrKahRkF4gEfXGcuORg4msP0Asxezlw==" - "resolved" "https://registry.npmjs.org/@ethereum-waffle/compiler/-/compiler-3.4.0.tgz" - "version" "3.4.0" + version "3.4.0" + resolved "https://registry.npmjs.org/@ethereum-waffle/compiler/-/compiler-3.4.0.tgz" + integrity sha512-a2wxGOoB9F1QFRE+Om7Cz2wn+pxM/o7a0a6cbwhaS2lECJgFzeN9xEkVrKahRkF4gEfXGcuORg4msP0Asxezlw== 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" + 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" "@ethereum-waffle/ens@^3.3.0": - "integrity" "sha512-zVIH/5cQnIEgJPg1aV8+ehYicpcfuAisfrtzYh1pN3UbfeqPylFBeBaIZ7xj/xYzlJjkrek/h9VfULl6EX9Aqw==" - "resolved" "https://registry.npmjs.org/@ethereum-waffle/ens/-/ens-3.3.0.tgz" - "version" "3.3.0" + version "3.3.0" + resolved "https://registry.npmjs.org/@ethereum-waffle/ens/-/ens-3.3.0.tgz" + integrity sha512-zVIH/5cQnIEgJPg1aV8+ehYicpcfuAisfrtzYh1pN3UbfeqPylFBeBaIZ7xj/xYzlJjkrek/h9VfULl6EX9Aqw== dependencies: "@ensdomains/ens" "^0.4.4" "@ensdomains/resolver" "^0.2.4" - "ethers" "^5.0.1" + ethers "^5.0.1" "@ethereum-waffle/mock-contract@^3.3.0": - "integrity" "sha512-apwq0d+2nQxaNwsyLkE+BNMBhZ1MKGV28BtI9WjD3QD2Ztdt1q9II4sKA4VrLTUneYSmkYbJZJxw89f+OpJGyw==" - "resolved" "https://registry.npmjs.org/@ethereum-waffle/mock-contract/-/mock-contract-3.3.0.tgz" - "version" "3.3.0" + version "3.3.0" + resolved "https://registry.npmjs.org/@ethereum-waffle/mock-contract/-/mock-contract-3.3.0.tgz" + integrity sha512-apwq0d+2nQxaNwsyLkE+BNMBhZ1MKGV28BtI9WjD3QD2Ztdt1q9II4sKA4VrLTUneYSmkYbJZJxw89f+OpJGyw== dependencies: "@ethersproject/abi" "^5.0.1" - "ethers" "^5.0.1" + ethers "^5.0.1" "@ethereum-waffle/provider@^3.4.0": - "integrity" "sha512-QgseGzpwlzmaHXhqfdzthCGu5a6P1SBF955jQHf/rBkK1Y7gGo2ukt3rXgxgfg/O5eHqRU+r8xw5MzVyVaBscQ==" - "resolved" "https://registry.npmjs.org/@ethereum-waffle/provider/-/provider-3.4.0.tgz" - "version" "3.4.0" + version "3.4.0" + resolved "https://registry.npmjs.org/@ethereum-waffle/provider/-/provider-3.4.0.tgz" + integrity sha512-QgseGzpwlzmaHXhqfdzthCGu5a6P1SBF955jQHf/rBkK1Y7gGo2ukt3rXgxgfg/O5eHqRU+r8xw5MzVyVaBscQ== dependencies: "@ethereum-waffle/ens" "^3.3.0" - "ethers" "^5.0.1" - "ganache-core" "^2.13.2" - "patch-package" "^6.2.2" - "postinstall-postinstall" "^2.1.0" + ethers "^5.0.1" + ganache-core "^2.13.2" + patch-package "^6.2.2" + postinstall-postinstall "^2.1.0" "@ethereumjs/common@^2.3.0", "@ethereumjs/common@^2.4.0", "@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.0": - "integrity" "sha512-Cq2qS0FTu6O2VU1sgg+WyU9Ps0M6j/BEMHN+hRaECXCV/r0aI78u4N6p52QW/BDVhwWZpCdrvG8X7NJdzlpNUA==" - "resolved" "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.0.tgz" - "version" "2.6.0" + version "2.6.0" + resolved "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.0.tgz" + integrity sha512-Cq2qS0FTu6O2VU1sgg+WyU9Ps0M6j/BEMHN+hRaECXCV/r0aI78u4N6p52QW/BDVhwWZpCdrvG8X7NJdzlpNUA== dependencies: - "crc-32" "^1.2.0" - "ethereumjs-util" "^7.1.3" + crc-32 "^1.2.0" + ethereumjs-util "^7.1.3" "@ethereumjs/tx@^3.2.1", "@ethereumjs/tx@^3.3.2": - "integrity" "sha512-WWUwg1PdjHKZZxPPo274ZuPsJCWV3SqATrEKQP1n2DrVYVP1aZIYpo/mFaA0BDoE0tIQmBeimRCEA0Lgil+yYw==" - "resolved" "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.4.0.tgz" - "version" "3.4.0" + version "3.4.0" + resolved "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.4.0.tgz" + integrity sha512-WWUwg1PdjHKZZxPPo274ZuPsJCWV3SqATrEKQP1n2DrVYVP1aZIYpo/mFaA0BDoE0tIQmBeimRCEA0Lgil+yYw== dependencies: "@ethereumjs/common" "^2.6.0" - "ethereumjs-util" "^7.1.3" + ethereumjs-util "^7.1.3" "@ethersproject/abi@^5.0.0", "@ethersproject/abi@^5.0.0-beta.146", "@ethersproject/abi@^5.0.1", "@ethersproject/abi@^5.0.12", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0", "@ethersproject/abi@5.7.0": - "integrity" "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==" - "resolved" "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz" - "version" "5.7.0" + 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" @@ -246,9 +246,9 @@ "@ethersproject/strings" "^5.7.0" "@ethersproject/abi@5.0.0-beta.153": - "integrity" "sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg==" - "resolved" "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz" - "version" "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" @@ -261,9 +261,9 @@ "@ethersproject/strings" ">=5.0.0-beta.130" "@ethersproject/abi@5.0.7": - "integrity" "sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw==" - "resolved" "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz" - "version" "5.0.7" + version "5.0.7" + resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz" + integrity sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw== dependencies: "@ethersproject/address" "^5.0.4" "@ethersproject/bignumber" "^5.0.7" @@ -276,7 +276,7 @@ "@ethersproject/strings" "^5.0.4" "@ethersproject/abstract-provider@^5.0.8": - "version" "5.0.8" + version "5.0.8" dependencies: "@ethersproject/bignumber" "^5.0.13" "@ethersproject/bytes" "^5.0.9" @@ -287,9 +287,9 @@ "@ethersproject/web" "^5.0.12" "@ethersproject/abstract-provider@^5.7.0", "@ethersproject/abstract-provider@5.7.0": - "integrity" "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==" - "resolved" "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz" - "version" "5.7.0" + 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" @@ -300,7 +300,7 @@ "@ethersproject/web" "^5.7.0" "@ethersproject/abstract-signer@^5.0.10": - "version" "5.0.10" + version "5.0.10" dependencies: "@ethersproject/abstract-provider" "^5.0.8" "@ethersproject/bignumber" "^5.0.13" @@ -309,9 +309,9 @@ "@ethersproject/properties" "^5.0.7" "@ethersproject/abstract-signer@^5.7.0", "@ethersproject/abstract-signer@5.7.0": - "integrity" "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==" - "resolved" "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz" - "version" "5.7.0" + 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" @@ -320,9 +320,9 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/address@^5.0.0", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.0.4", "@ethersproject/address@^5.7.0", "@ethersproject/address@5.7.0": - "integrity" "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==" - "resolved" "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz" - "version" "5.7.0" + 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" @@ -331,7 +331,7 @@ "@ethersproject/rlp" "^5.7.0" "@ethersproject/address@^5.0.9", "@ethersproject/address@>=5.0.0-beta.128": - "version" "5.0.9" + version "5.0.9" dependencies: "@ethersproject/bignumber" "^5.0.13" "@ethersproject/bytes" "^5.0.9" @@ -340,69 +340,69 @@ "@ethersproject/rlp" "^5.0.7" "@ethersproject/base64@^5.0.7": - "version" "5.0.7" + version "5.0.7" dependencies: "@ethersproject/bytes" "^5.0.9" "@ethersproject/base64@^5.7.0", "@ethersproject/base64@5.7.0": - "integrity" "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==" - "resolved" "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz" - "version" "5.7.0" + 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: "@ethersproject/bytes" "^5.7.0" "@ethersproject/basex@^5.7.0", "@ethersproject/basex@5.7.0": - "integrity" "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==" - "resolved" "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz" - "version" "5.7.0" + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== dependencies: "@ethersproject/bytes" "^5.7.0" "@ethersproject/properties" "^5.7.0" "@ethersproject/bignumber@^5.0.13", "@ethersproject/bignumber@>=5.0.0-beta.130": - "version" "5.0.13" + version "5.0.13" dependencies: "@ethersproject/bytes" "^5.0.9" "@ethersproject/logger" "^5.0.8" - "bn.js" "^4.4.0" + bn.js "^4.4.0" "@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.7.0", "@ethersproject/bignumber@5.7.0": - "integrity" "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==" - "resolved" "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz" - "version" "5.7.0" + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== dependencies: "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" - "bn.js" "^5.2.1" + bn.js "^5.2.1" "@ethersproject/bytes@^5.0.0", "@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.7.0", "@ethersproject/bytes@5.7.0": - "integrity" "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==" - "resolved" "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz" - "version" "5.7.0" + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== dependencies: "@ethersproject/logger" "^5.7.0" "@ethersproject/bytes@^5.0.9", "@ethersproject/bytes@>=5.0.0-beta.129": - "version" "5.0.9" + version "5.0.9" dependencies: "@ethersproject/logger" "^5.0.8" "@ethersproject/constants@^5.0.4", "@ethersproject/constants@^5.7.0", "@ethersproject/constants@5.7.0": - "integrity" "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==" - "resolved" "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz" - "version" "5.7.0" + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== dependencies: "@ethersproject/bignumber" "^5.7.0" "@ethersproject/constants@^5.0.8", "@ethersproject/constants@>=5.0.0-beta.128": - "version" "5.0.8" + version "5.0.8" dependencies: "@ethersproject/bignumber" "^5.0.13" "@ethersproject/contracts@^5.0.0", "@ethersproject/contracts@^5.7.0", "@ethersproject/contracts@5.7.0": - "integrity" "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==" - "resolved" "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz" - "version" "5.7.0" + 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: "@ethersproject/abi" "^5.7.0" "@ethersproject/abstract-provider" "^5.7.0" @@ -416,9 +416,9 @@ "@ethersproject/transactions" "^5.7.0" "@ethersproject/hash@^5.0.4", "@ethersproject/hash@^5.5.0", "@ethersproject/hash@^5.7.0", "@ethersproject/hash@5.7.0": - "integrity" "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==" - "resolved" "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz" - "version" "5.7.0" + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== dependencies: "@ethersproject/abstract-signer" "^5.7.0" "@ethersproject/address" "^5.7.0" @@ -431,7 +431,7 @@ "@ethersproject/strings" "^5.7.0" "@ethersproject/hash@>=5.0.0-beta.128": - "version" "5.0.10" + version "5.0.10" dependencies: "@ethersproject/abstract-signer" "^5.0.10" "@ethersproject/address" "^5.0.9" @@ -443,9 +443,9 @@ "@ethersproject/strings" "^5.0.8" "@ethersproject/hdnode@^5.7.0", "@ethersproject/hdnode@5.7.0": - "integrity" "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==" - "resolved" "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz" - "version" "5.7.0" + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== dependencies: "@ethersproject/abstract-signer" "^5.7.0" "@ethersproject/basex" "^5.7.0" @@ -461,9 +461,9 @@ "@ethersproject/wordlists" "^5.7.0" "@ethersproject/json-wallets@^5.7.0", "@ethersproject/json-wallets@5.7.0": - "integrity" "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==" - "resolved" "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz" - "version" "5.7.0" + 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: "@ethersproject/abstract-signer" "^5.7.0" "@ethersproject/address" "^5.7.0" @@ -476,67 +476,67 @@ "@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" + aes-js "3.0.0" + scrypt-js "3.0.1" "@ethersproject/keccak256@^5.0.3", "@ethersproject/keccak256@^5.7.0", "@ethersproject/keccak256@5.7.0": - "integrity" "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==" - "resolved" "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz" - "version" "5.7.0" + 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: "@ethersproject/bytes" "^5.7.0" - "js-sha3" "0.8.0" + js-sha3 "0.8.0" "@ethersproject/keccak256@^5.0.7", "@ethersproject/keccak256@>=5.0.0-beta.127": - "version" "5.0.7" + version "5.0.7" dependencies: "@ethersproject/bytes" "^5.0.9" - "js-sha3" "0.5.7" + js-sha3 "0.5.7" "@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.7.0", "@ethersproject/logger@5.7.0": - "integrity" "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" - "resolved" "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz" - "version" "5.7.0" + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== "@ethersproject/logger@^5.0.8", "@ethersproject/logger@>=5.0.0-beta.129": - "version" "5.0.8" + version "5.0.8" "@ethersproject/networks@^5.0.7": - "version" "5.0.7" + version "5.0.7" dependencies: "@ethersproject/logger" "^5.0.8" "@ethersproject/networks@^5.7.0", "@ethersproject/networks@5.7.1": - "integrity" "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==" - "resolved" "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz" - "version" "5.7.1" + version "5.7.1" + resolved "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== dependencies: "@ethersproject/logger" "^5.7.0" "@ethersproject/pbkdf2@^5.7.0", "@ethersproject/pbkdf2@5.7.0": - "integrity" "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==" - "resolved" "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz" - "version" "5.7.0" + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== dependencies: "@ethersproject/bytes" "^5.7.0" "@ethersproject/sha2" "^5.7.0" "@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.7.0", "@ethersproject/properties@5.7.0": - "integrity" "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==" - "resolved" "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz" - "version" "5.7.0" + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== dependencies: "@ethersproject/logger" "^5.7.0" "@ethersproject/properties@^5.0.7", "@ethersproject/properties@>=5.0.0-beta.131": - "version" "5.0.7" + version "5.0.7" dependencies: "@ethersproject/logger" "^5.0.8" "@ethersproject/providers@^5.0.0", "@ethersproject/providers@^5.7.0", "@ethersproject/providers@5.7.2": - "integrity" "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==" - "resolved" "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz" - "version" "5.7.2" + version "5.7.2" + resolved "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== dependencies: "@ethersproject/abstract-provider" "^5.7.0" "@ethersproject/abstract-signer" "^5.7.0" @@ -556,64 +556,64 @@ "@ethersproject/strings" "^5.7.0" "@ethersproject/transactions" "^5.7.0" "@ethersproject/web" "^5.7.0" - "bech32" "1.1.4" - "ws" "7.4.6" + bech32 "1.1.4" + ws "7.4.6" "@ethersproject/random@^5.7.0", "@ethersproject/random@5.7.0": - "integrity" "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==" - "resolved" "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz" - "version" "5.7.0" + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== dependencies: "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" "@ethersproject/rlp@^5.0.7": - "version" "5.0.7" + version "5.0.7" dependencies: "@ethersproject/bytes" "^5.0.9" "@ethersproject/logger" "^5.0.8" "@ethersproject/rlp@^5.7.0", "@ethersproject/rlp@5.7.0": - "integrity" "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==" - "resolved" "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz" - "version" "5.7.0" + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== dependencies: "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" "@ethersproject/sha2@^5.7.0", "@ethersproject/sha2@5.7.0": - "integrity" "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==" - "resolved" "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz" - "version" "5.7.0" + 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" + hash.js "1.1.7" "@ethersproject/signing-key@^5.0.8": - "version" "5.0.8" + version "5.0.8" dependencies: "@ethersproject/bytes" "^5.0.9" "@ethersproject/logger" "^5.0.8" "@ethersproject/properties" "^5.0.7" - "elliptic" "6.5.3" + elliptic "6.5.3" "@ethersproject/signing-key@^5.7.0", "@ethersproject/signing-key@5.7.0": - "integrity" "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==" - "resolved" "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz" - "version" "5.7.0" + 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" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" "@ethersproject/solidity@^5.0.0", "@ethersproject/solidity@^5.0.9", "@ethersproject/solidity@5.7.0": - "integrity" "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==" - "resolved" "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz" - "version" "5.7.0" + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== dependencies: "@ethersproject/bignumber" "^5.7.0" "@ethersproject/bytes" "^5.7.0" @@ -623,25 +623,25 @@ "@ethersproject/strings" "^5.7.0" "@ethersproject/strings@^5.0.4", "@ethersproject/strings@^5.7.0", "@ethersproject/strings@5.7.0": - "integrity" "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==" - "resolved" "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz" - "version" "5.7.0" + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== dependencies: "@ethersproject/bytes" "^5.7.0" "@ethersproject/constants" "^5.7.0" "@ethersproject/logger" "^5.7.0" "@ethersproject/strings@^5.0.8", "@ethersproject/strings@>=5.0.0-beta.130": - "version" "5.0.8" + version "5.0.8" dependencies: "@ethersproject/bytes" "^5.0.9" "@ethersproject/constants" "^5.0.8" "@ethersproject/logger" "^5.0.8" "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0", "@ethersproject/transactions@5.7.0": - "integrity" "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==" - "resolved" "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz" - "version" "5.7.0" + 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" @@ -654,7 +654,7 @@ "@ethersproject/signing-key" "^5.7.0" "@ethersproject/transactions@^5.0.9": - "version" "5.0.9" + version "5.0.9" dependencies: "@ethersproject/address" "^5.0.9" "@ethersproject/bignumber" "^5.0.13" @@ -667,18 +667,18 @@ "@ethersproject/signing-key" "^5.0.8" "@ethersproject/units@5.7.0": - "integrity" "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==" - "resolved" "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz" - "version" "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: "@ethersproject/bignumber" "^5.7.0" "@ethersproject/constants" "^5.7.0" "@ethersproject/logger" "^5.7.0" "@ethersproject/wallet@5.7.0": - "integrity" "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==" - "resolved" "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz" - "version" "5.7.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: "@ethersproject/abstract-provider" "^5.7.0" "@ethersproject/abstract-signer" "^5.7.0" @@ -697,7 +697,7 @@ "@ethersproject/wordlists" "^5.7.0" "@ethersproject/web@^5.0.12": - "version" "5.0.12" + version "5.0.12" dependencies: "@ethersproject/base64" "^5.0.7" "@ethersproject/bytes" "^5.0.9" @@ -706,9 +706,9 @@ "@ethersproject/strings" "^5.0.8" "@ethersproject/web@^5.7.0", "@ethersproject/web@5.7.1": - "integrity" "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==" - "resolved" "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz" - "version" "5.7.1" + version "5.7.1" + resolved "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== dependencies: "@ethersproject/base64" "^5.7.0" "@ethersproject/bytes" "^5.7.0" @@ -717,9 +717,9 @@ "@ethersproject/strings" "^5.7.0" "@ethersproject/wordlists@^5.7.0", "@ethersproject/wordlists@5.7.0": - "integrity" "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==" - "resolved" "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz" - "version" "5.7.0" + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== dependencies: "@ethersproject/bytes" "^5.7.0" "@ethersproject/hash" "^5.7.0" @@ -728,77 +728,77 @@ "@ethersproject/strings" "^5.7.0" "@humanwhocodes/config-array@^0.5.0": - "integrity" "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz" - "version" "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: "@humanwhocodes/object-schema" "^1.2.0" - "debug" "^4.1.1" - "minimatch" "^3.0.4" + debug "^4.1.1" + minimatch "^3.0.4" "@humanwhocodes/object-schema@^1.2.0": - "integrity" "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" - "version" "1.2.1" + 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== "@metamask/eth-sig-util@^4.0.0": - "integrity" "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==" - "resolved" "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz" - "version" "4.0.1" + 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: - "ethereumjs-abi" "^0.6.8" - "ethereumjs-util" "^6.2.1" - "ethjs-util" "^0.1.6" - "tweetnacl" "^1.0.3" - "tweetnacl-util" "^0.15.1" + ethereumjs-abi "^0.6.8" + ethereumjs-util "^6.2.1" + ethjs-util "^0.1.6" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" "@noble/hashes@~1.2.0", "@noble/hashes@1.2.0": - "integrity" "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==" - "resolved" "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz" - "version" "1.2.0" + version "1.2.0" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz" + integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== "@noble/secp256k1@~1.7.0", "@noble/secp256k1@1.7.1": - "integrity" "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==" - "resolved" "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz" - "version" "1.7.1" + version "1.7.1" + resolved "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== "@nodelib/fs.scandir@2.1.5": - "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" - "version" "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: "@nodelib/fs.stat" "2.0.5" - "run-parallel" "^1.1.9" + run-parallel "^1.1.9" "@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": - "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" - "version" "2.0.5" + 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": - "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" - "version" "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: "@nodelib/fs.scandir" "2.1.5" - "fastq" "^1.6.0" + fastq "^1.6.0" "@nomicfoundation/ethereumjs-block@^4.0.0": - "integrity" "sha512-bk8uP8VuexLgyIZAHExH1QEovqx0Lzhc9Ntm63nCRKLHXIZkobaFaeCVwTESV7YkPKUk7NiK11s8ryed4CS9yA==" - "resolved" "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-4.0.0.tgz" - "version" "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" + ethereum-cryptography "0.1.3" "@nomicfoundation/ethereumjs-blockchain@^6.0.0": - "integrity" "sha512-pLFEoea6MWd81QQYSReLlLfH7N9v7lH66JC/NMPN848ySPPQA5renWnE7wPByfQFzNrPBuDDRFFULMDmj1C0xw==" - "resolved" "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-6.0.0.tgz" - "version" "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" @@ -806,97 +806,97 @@ "@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" + 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" "@nomicfoundation/ethereumjs-common@^3.0.0": - "integrity" "sha512-WS7qSshQfxoZOpHG/XqlHEGRG1zmyjYrvmATvc4c62+gZXgre1ymYP8ZNgx/3FyZY0TWe9OjFlKOfLqmgOeYwA==" - "resolved" "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-3.0.0.tgz" - "version" "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: "@nomicfoundation/ethereumjs-util" "^8.0.0" - "crc-32" "^1.2.0" + crc-32 "^1.2.0" "@nomicfoundation/ethereumjs-ethash@^2.0.0": - "integrity" "sha512-WpDvnRncfDUuXdsAXlI4lXbqUDOA+adYRQaEezIkxqDkc+LDyYDbd/xairmY98GnQzo1zIqsIL6GB5MoMSJDew==" - "resolved" "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-2.0.0.tgz" - "version" "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: "@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" + abstract-level "^1.0.3" + bigint-crypto-utils "^3.0.23" + ethereum-cryptography "0.1.3" "@nomicfoundation/ethereumjs-evm@^1.0.0": - "integrity" "sha512-hVS6qRo3V1PLKCO210UfcEQHvlG7GqR8iFzp0yyjTg2TmJQizcChKgWo8KFsdMw6AyoLgLhHGHw4HdlP8a4i+Q==" - "resolved" "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-1.0.0.tgz" - "version" "1.0.0" + version "1.0.0" + resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-1.0.0.tgz" + integrity sha512-hVS6qRo3V1PLKCO210UfcEQHvlG7GqR8iFzp0yyjTg2TmJQizcChKgWo8KFsdMw6AyoLgLhHGHw4HdlP8a4i+Q== 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" + 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": - "integrity" "sha512-GaSOGk5QbUk4eBP5qFbpXoZoZUj/NrW7MRa0tKY4Ew4c2HAS0GXArEMAamtFrkazp0BO4K5p2ZCG3b2FmbShmw==" - "resolved" "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-4.0.0.tgz" - "version" "4.0.0" + version "4.0.0" + resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-4.0.0.tgz" + integrity sha512-GaSOGk5QbUk4eBP5qFbpXoZoZUj/NrW7MRa0tKY4Ew4c2HAS0GXArEMAamtFrkazp0BO4K5p2ZCG3b2FmbShmw== "@nomicfoundation/ethereumjs-statemanager@^1.0.0": - "integrity" "sha512-jCtqFjcd2QejtuAMjQzbil/4NHf5aAWxUc+CvS0JclQpl+7M0bxMofR2AJdtz+P3u0ke2euhYREDiE7iSO31vQ==" - "resolved" "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-1.0.0.tgz" - "version" "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: "@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" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + functional-red-black-tree "^1.0.1" "@nomicfoundation/ethereumjs-trie@^5.0.0": - "integrity" "sha512-LIj5XdE+s+t6WSuq/ttegJzZ1vliwg6wlb+Y9f4RlBpuK35B9K02bO7xU+E6Rgg9RGptkWd6TVLdedTI4eNc2A==" - "resolved" "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-5.0.0.tgz" - "version" "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: "@nomicfoundation/ethereumjs-rlp" "^4.0.0" "@nomicfoundation/ethereumjs-util" "^8.0.0" - "ethereum-cryptography" "0.1.3" - "readable-stream" "^3.6.0" + ethereum-cryptography "0.1.3" + readable-stream "^3.6.0" "@nomicfoundation/ethereumjs-tx@^4.0.0": - "integrity" "sha512-Gg3Lir2lNUck43Kp/3x6TfBNwcWC9Z1wYue9Nz3v4xjdcv6oDW9QSMJxqsKw9QEGoBBZ+gqwpW7+F05/rs/g1w==" - "resolved" "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-4.0.0.tgz" - "version" "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" + ethereum-cryptography "0.1.3" "@nomicfoundation/ethereumjs-util@^8.0.0": - "integrity" "sha512-2emi0NJ/HmTG+CGY58fa+DQuAoroFeSH9gKu9O6JnwTtlzJtgfTixuoOqLEgyyzZVvwfIpRueuePb8TonL1y+A==" - "resolved" "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-8.0.0.tgz" - "version" "8.0.0" + 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" + ethereum-cryptography "0.1.3" "@nomicfoundation/ethereumjs-vm@^6.0.0": - "integrity" "sha512-JMPxvPQ3fzD063Sg3Tp+UdwUkVxMoo1uML6KSzFhMH3hoQi/LMuXBoEHAoW83/vyNS9BxEe6jm6LmT5xdeEJ6w==" - "resolved" "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-6.0.0.tgz" - "version" "6.0.0" + 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: "@nomicfoundation/ethereumjs-block" "^4.0.0" "@nomicfoundation/ethereumjs-blockchain" "^6.0.0" @@ -908,22 +908,22 @@ "@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" - -"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.0": - "integrity" "sha512-dlHeIg0pTL4dB1l9JDwbi/JG6dHQaU1xpDK+ugYO8eJ1kxx9Dh2isEUtA4d02cQAl22cjOHTvifAk96A+ItEHA==" - "resolved" "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.0.tgz" - "version" "0.1.0" + 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" + +"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.0": + version "0.1.0" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.0.tgz" + integrity sha512-xCuybjY0sLJQnJhupiFAXaek2EqF0AP0eBjgzaalPXSNvCEN6ZYHvUzdA50ENDVeSYFXcUsYf3+FsD3XKaeptA== "@nomicfoundation/solidity-analyzer@^0.1.0": - "integrity" "sha512-xGWAiVCGOycvGiP/qrlf9f9eOn7fpNbyJygcB0P21a1MDuVPlKt0Srp7rvtBEutYQ48ouYnRXm33zlRnlTOPHg==" - "resolved" "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.0.tgz" - "version" "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" @@ -936,416 +936,418 @@ "@nomicfoundation/solidity-analyzer-win32-ia32-msvc" "0.1.0" "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.0" -"@nomiclabs/hardhat-ethers@^2.0.0", "@nomiclabs/hardhat-ethers@npm:hardhat-deploy-ethers@^0.3.0-beta.13": - "integrity" "sha512-PdWVcKB9coqWV1L7JTpfXRCI91Cgwsm7KLmBcwZ8f0COSm1xtABHZTyz3fvF6p42cTnz1VM0QnfDvMFlIRkSNw==" - "resolved" "https://registry.npmjs.org/hardhat-deploy-ethers/-/hardhat-deploy-ethers-0.3.0-beta.13.tgz" - "version" "0.3.0-beta.13" - -"@nomiclabs/hardhat-ethers@^2.1.1": - "integrity" "sha512-NLDlDFL2us07C0jB/9wzvR0kuLivChJWCXTKcj3yqjZqMoYp7g7wwS157F70VHx/+9gHIBGzak5pKDwG8gEefA==" - "resolved" "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.2.tgz" - "version" "2.2.2" +"@nomiclabs/hardhat-ethers@^2.0.0", "@nomiclabs/hardhat-ethers@^2.1.1", "@nomiclabs/hardhat-ethers@^2.2.3": + version "2.2.3" + resolved "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz" + integrity sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg== "@nomiclabs/hardhat-etherscan@^2.1.8": - "integrity" "sha512-0+rj0SsZotVOcTLyDOxnOc3Gulo8upo0rsw/h+gBPcmtj91YqYJNhdARHoBxOhhE8z+5IUQPx+Dii04lXT14PA==" - "resolved" "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-2.1.8.tgz" - "version" "2.1.8" + version "2.1.8" + resolved "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-2.1.8.tgz" + integrity sha512-0+rj0SsZotVOcTLyDOxnOc3Gulo8upo0rsw/h+gBPcmtj91YqYJNhdARHoBxOhhE8z+5IUQPx+Dii04lXT14PA== dependencies: "@ethersproject/abi" "^5.1.2" "@ethersproject/address" "^5.0.2" - "cbor" "^5.0.2" - "debug" "^4.1.1" - "fs-extra" "^7.0.1" - "node-fetch" "^2.6.0" - "semver" "^6.3.0" + cbor "^5.0.2" + debug "^4.1.1" + fs-extra "^7.0.1" + node-fetch "^2.6.0" + semver "^6.3.0" + +"@nomiclabs/hardhat-solhint@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@nomiclabs/hardhat-solhint/-/hardhat-solhint-3.0.1.tgz" + integrity sha512-GqDoStxL1aA9hZul9HRdk+3eEZ/XLBwvIlz3/EJUusUsoadNYEnio9aYOsBeNeZWo+B/Fd3EgMXgbf9wWQLyRA== + dependencies: + solhint "^3.4.0" "@nomiclabs/hardhat-waffle@^2.0.1": - "integrity" "sha512-2YR2V5zTiztSH9n8BYWgtv3Q+EL0N5Ltm1PAr5z20uAY4SkkfylJ98CIqt18XFvxTD5x4K2wKBzddjV9ViDAZQ==" - "resolved" "https://registry.npmjs.org/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.1.tgz" - "version" "2.0.1" + version "2.0.1" + resolved "https://registry.npmjs.org/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.1.tgz" + integrity sha512-2YR2V5zTiztSH9n8BYWgtv3Q+EL0N5Ltm1PAr5z20uAY4SkkfylJ98CIqt18XFvxTD5x4K2wKBzddjV9ViDAZQ== dependencies: "@types/sinon-chai" "^3.2.3" "@types/web3" "1.0.19" "@nomiclabs/hardhat-web3@^2.0.0": - "integrity" "sha512-zt4xN+D+fKl3wW2YlTX3k9APR3XZgPkxJYf36AcliJn3oujnKEVRZaHu0PhgLjO+gR+F/kiYayo9fgd2L8970Q==" - "resolved" "https://registry.npmjs.org/@nomiclabs/hardhat-web3/-/hardhat-web3-2.0.0.tgz" - "version" "2.0.0" + version "2.0.0" + resolved "https://registry.npmjs.org/@nomiclabs/hardhat-web3/-/hardhat-web3-2.0.0.tgz" + integrity sha512-zt4xN+D+fKl3wW2YlTX3k9APR3XZgPkxJYf36AcliJn3oujnKEVRZaHu0PhgLjO+gR+F/kiYayo9fgd2L8970Q== dependencies: "@types/bignumber.js" "^5.0.0" "@openzeppelin/contract-loader@^0.6.2": - "integrity" "sha512-cOFIjBjwbGgZhDZsitNgJl0Ye1rd5yu/Yx5LMgeq3u0ZYzldm4uObzHDFq4gjDdoypvyORjjJa3BlFA7eAnVIg==" - "resolved" "https://registry.npmjs.org/@openzeppelin/contract-loader/-/contract-loader-0.6.3.tgz" - "version" "0.6.3" + version "0.6.3" + resolved "https://registry.npmjs.org/@openzeppelin/contract-loader/-/contract-loader-0.6.3.tgz" + integrity sha512-cOFIjBjwbGgZhDZsitNgJl0Ye1rd5yu/Yx5LMgeq3u0ZYzldm4uObzHDFq4gjDdoypvyORjjJa3BlFA7eAnVIg== dependencies: - "find-up" "^4.1.0" - "fs-extra" "^8.1.0" + find-up "^4.1.0" + fs-extra "^8.1.0" "@openzeppelin/contracts-upgradeable@^4.1.0", "@openzeppelin/contracts-upgradeable@^4.7.3": - "integrity" "sha512-zIggnBwemUmmt9IS73qxi+tumALxCY4QEs3zLCII78k0Gfse2hAOdAkuAeLUzvWUpneMUfFE5sGHzEUSTvn4Ag==" - "resolved" "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.8.2.tgz" - "version" "4.8.2" + version "4.8.2" + resolved "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.8.2.tgz" + integrity sha512-zIggnBwemUmmt9IS73qxi+tumALxCY4QEs3zLCII78k0Gfse2hAOdAkuAeLUzvWUpneMUfFE5sGHzEUSTvn4Ag== "@openzeppelin/contracts-v0.7@npm:@openzeppelin/contracts@v3.4.2": - "integrity" "sha512-z0zMCjyhhp4y7XKAcDAi3Vgms4T2PstwBdahiO0+9NaGICQKjynK3wduSRplTgk4LXmoO1yfDGO5RbjKYxtuxA==" - "resolved" "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.4.2.tgz" - "version" "3.4.2" + version "3.4.2" + resolved "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.4.2.tgz" + integrity sha512-z0zMCjyhhp4y7XKAcDAi3Vgms4T2PstwBdahiO0+9NaGICQKjynK3wduSRplTgk4LXmoO1yfDGO5RbjKYxtuxA== "@openzeppelin/contracts@^4.0.0", "@openzeppelin/contracts@4.7.3": - "integrity" "sha512-dGRS0agJzu8ybo44pCIf3xBaPQN/65AIXNgK8+4gzKd5kbvlqyxryUYVLJv7fK98Seyd2hDZzVEHSWAh0Bt1Yw==" - "resolved" "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.7.3.tgz" - "version" "4.7.3" + version "4.7.3" + resolved "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.7.3.tgz" + integrity sha512-dGRS0agJzu8ybo44pCIf3xBaPQN/65AIXNgK8+4gzKd5kbvlqyxryUYVLJv7fK98Seyd2hDZzVEHSWAh0Bt1Yw== "@openzeppelin/contracts@~4.3.3": - "integrity" "sha512-tDBopO1c98Yk7Cv/PZlHqrvtVjlgK5R4J6jxLwoO7qxK4xqOiZG+zSkIvGFpPZ0ikc3QOED3plgdqjgNTnBc7g==" - "resolved" "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.3.3.tgz" - "version" "4.3.3" + version "4.3.3" + resolved "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.3.3.tgz" + integrity sha512-tDBopO1c98Yk7Cv/PZlHqrvtVjlgK5R4J6jxLwoO7qxK4xqOiZG+zSkIvGFpPZ0ikc3QOED3plgdqjgNTnBc7g== "@openzeppelin/contracts@3.4.1-solc-0.7-2": - "integrity" "sha512-tAG9LWg8+M2CMu7hIsqHPaTyG4uDzjr6mhvH96LvOpLZZj6tgzTluBt+LsCf1/QaYrlis6pITvpIaIhE+iZB+Q==" - "resolved" "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.4.1-solc-0.7-2.tgz" - "version" "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== "@openzeppelin/contracts@3.4.2-solc-0.7": - "integrity" "sha512-W6QmqgkADuFcTLzHL8vVoNBtkwjvQRpYIAom7KiUNoLKghyx3FgH0GBjt8NRvigV1ZmMOBllvE1By1C+bi8WpA==" - "resolved" "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.4.2-solc-0.7.tgz" - "version" "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== "@openzeppelin/hardhat-upgrades@^1.9.0": - "integrity" "sha512-C5eOSt01zHKYUaRRDunqCsP5fXLpqFatIEs+NywVKLfVV6LNatugaNiRC4oHT8FF8wnr38uSoWrJJVTRoXUECw==" - "resolved" "https://registry.npmjs.org/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-1.12.0.tgz" - "version" "1.12.0" + version "1.12.0" + resolved "https://registry.npmjs.org/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-1.12.0.tgz" + integrity sha512-C5eOSt01zHKYUaRRDunqCsP5fXLpqFatIEs+NywVKLfVV6LNatugaNiRC4oHT8FF8wnr38uSoWrJJVTRoXUECw== dependencies: "@openzeppelin/upgrades-core" "^1.10.0" "@openzeppelin/test-helpers@^0.5.10", "@openzeppelin/test-helpers@^0.5.13": - "integrity" "sha512-10fS0kyOjc/UObo9iEWPNbC6MCeiQ7z97LDOJBj68g+AAs5pIGEI2h3V6G9TYTIq8VxOdwMQbfjKrx7Y3YZJtA==" - "resolved" "https://registry.npmjs.org/@openzeppelin/test-helpers/-/test-helpers-0.5.15.tgz" - "version" "0.5.15" + version "0.5.15" + resolved "https://registry.npmjs.org/@openzeppelin/test-helpers/-/test-helpers-0.5.15.tgz" + integrity sha512-10fS0kyOjc/UObo9iEWPNbC6MCeiQ7z97LDOJBj68g+AAs5pIGEI2h3V6G9TYTIq8VxOdwMQbfjKrx7Y3YZJtA== 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" + 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" "@openzeppelin/upgrades-core@^1.10.0": - "integrity" "sha512-N20t1i1wlHrVmu3etVZLiaRxT6XLkCrO9gIo4mUZNpsaVftl8V+WBu8o940AjoYXvzTEqj7O0re2DSFzjpkRBw==" - "resolved" "https://registry.npmjs.org/@openzeppelin/upgrades-core/-/upgrades-core-1.10.0.tgz" - "version" "1.10.0" - dependencies: - "bn.js" "^5.1.2" - "cbor" "^8.0.0" - "chalk" "^4.1.0" - "compare-versions" "^3.6.0" - "debug" "^4.1.1" - "ethereumjs-util" "^7.0.3" - "proper-lockfile" "^4.1.1" - "solidity-ast" "^0.4.15" + version "1.10.0" + resolved "https://registry.npmjs.org/@openzeppelin/upgrades-core/-/upgrades-core-1.10.0.tgz" + integrity sha512-N20t1i1wlHrVmu3etVZLiaRxT6XLkCrO9gIo4mUZNpsaVftl8V+WBu8o940AjoYXvzTEqj7O0re2DSFzjpkRBw== + dependencies: + bn.js "^5.1.2" + cbor "^8.0.0" + chalk "^4.1.0" + compare-versions "^3.6.0" + debug "^4.1.1" + ethereumjs-util "^7.0.3" + proper-lockfile "^4.1.1" + solidity-ast "^0.4.15" "@resolver-engine/core@^0.3.3": - "integrity" "sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ==" - "resolved" "https://registry.npmjs.org/@resolver-engine/core/-/core-0.3.3.tgz" - "version" "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: - "debug" "^3.1.0" - "is-url" "^1.2.4" - "request" "^2.85.0" + debug "^3.1.0" + is-url "^1.2.4" + request "^2.85.0" "@resolver-engine/fs@^0.3.3": - "integrity" "sha512-wQ9RhPUcny02Wm0IuJwYMyAG8fXVeKdmhm8xizNByD4ryZlx6PP6kRen+t/haF43cMfmaV7T3Cx6ChOdHEhFUQ==" - "resolved" "https://registry.npmjs.org/@resolver-engine/fs/-/fs-0.3.3.tgz" - "version" "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" + debug "^3.1.0" "@resolver-engine/imports-fs@^0.3.3": - "integrity" "sha512-7Pjg/ZAZtxpeyCFlZR5zqYkz+Wdo84ugB5LApwriT8XFeQoLwGUj4tZFFvvCuxaNCcqZzCYbonJgmGObYBzyCA==" - "resolved" "https://registry.npmjs.org/@resolver-engine/imports-fs/-/imports-fs-0.3.3.tgz" - "version" "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: "@resolver-engine/fs" "^0.3.3" "@resolver-engine/imports" "^0.3.3" - "debug" "^3.1.0" + debug "^3.1.0" "@resolver-engine/imports@^0.3.3": - "integrity" "sha512-anHpS4wN4sRMwsAbMXhMfOD/y4a4Oo0Cw/5+rue7hSwGWsDOQaAU1ClK1OxjUC35/peazxEl8JaSRRS+Xb8t3Q==" - "resolved" "https://registry.npmjs.org/@resolver-engine/imports/-/imports-0.3.3.tgz" - "version" "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: "@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" + debug "^3.1.0" + hosted-git-info "^2.6.0" + path-browserify "^1.0.0" + url "^0.11.0" "@scure/base@~1.1.0": - "integrity" "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==" - "resolved" "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz" - "version" "1.1.1" + 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.5": - "integrity" "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==" - "resolved" "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz" - "version" "1.1.5" + version "1.1.5" + resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz" + integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== dependencies: "@noble/hashes" "~1.2.0" "@noble/secp256k1" "~1.7.0" "@scure/base" "~1.1.0" "@scure/bip39@1.1.1": - "integrity" "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==" - "resolved" "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz" - "version" "1.1.1" + version "1.1.1" + resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz" + integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== dependencies: "@noble/hashes" "~1.2.0" "@scure/base" "~1.1.0" "@sentry/core@5.30.0": - "integrity" "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==" - "resolved" "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz" - "version" "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: "@sentry/hub" "5.30.0" "@sentry/minimal" "5.30.0" "@sentry/types" "5.30.0" "@sentry/utils" "5.30.0" - "tslib" "^1.9.3" + tslib "^1.9.3" "@sentry/hub@5.30.0": - "integrity" "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==" - "resolved" "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz" - "version" "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" + tslib "^1.9.3" "@sentry/minimal@5.30.0": - "integrity" "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==" - "resolved" "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz" - "version" "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: "@sentry/hub" "5.30.0" "@sentry/types" "5.30.0" - "tslib" "^1.9.3" + tslib "^1.9.3" "@sentry/node@^5.18.1": - "integrity" "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==" - "resolved" "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz" - "version" "5.30.0" + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz" + integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== 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" + cookie "^0.4.1" + https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^1.9.3" "@sentry/tracing@5.30.0": - "integrity" "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==" - "resolved" "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz" - "version" "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" + tslib "^1.9.3" "@sentry/types@5.30.0": - "integrity" "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==" - "resolved" "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz" - "version" "5.30.0" + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz" + integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== "@sentry/utils@5.30.0": - "integrity" "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==" - "resolved" "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz" - "version" "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" + tslib "^1.9.3" "@sindresorhus/is@^0.14.0": - "integrity" "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" - "version" "0.14.0" + version "0.14.0" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== "@sinonjs/commons@^1.7.0": - "integrity" "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==" - "resolved" "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz" - "version" "1.8.3" + version "1.8.3" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz" + integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== dependencies: - "type-detect" "4.0.8" + type-detect "4.0.8" "@sinonjs/fake-timers@^7.1.0": - "integrity" "sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==" - "resolved" "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz" - "version" "7.1.2" + version "7.1.2" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz" + integrity sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg== dependencies: "@sinonjs/commons" "^1.7.0" -"@solidity-parser/parser@^0.13.2": - "integrity" "sha512-RwHnpRnfrnD2MSPveYoPh8nhofEvX7fgjHk1Oq+NNvCcLx4r1js91CO9o+F/F3fBzOCyvm8kKRTriFICX/odWw==" - "resolved" "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.13.2.tgz" - "version" "0.13.2" +"@solidity-parser/parser@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.0.tgz" + integrity sha512-cX0JJRcmPtNUJpzD2K7FdA7qQsTOk1UZnFx2k7qAg9ZRvuaH5NBe5IEdBMXGlmf2+FmjhqbygJ26H8l2SV7aKQ== dependencies: - "antlr4ts" "^0.5.0-alpha.4" + antlr4ts "^0.5.0-alpha.4" -"@solidity-parser/parser@^0.14.0": - "integrity" "sha512-cX0JJRcmPtNUJpzD2K7FdA7qQsTOk1UZnFx2k7qAg9ZRvuaH5NBe5IEdBMXGlmf2+FmjhqbygJ26H8l2SV7aKQ==" - "resolved" "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.0.tgz" - "version" "0.14.0" +"@solidity-parser/parser@^0.16.0": + version "0.16.0" + resolved "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.0.tgz" + integrity sha512-ESipEcHyRHg4Np4SqBCfcXwyxxna1DgFVz69bgpLV8vzl/NP1DtcKsJ4dJZXWQhY/Z4J2LeKBiOkOVZn9ct33Q== dependencies: - "antlr4ts" "^0.5.0-alpha.4" + antlr4ts "^0.5.0-alpha.4" "@superfluid-finance/ethereum-contracts@^1.0.0-rc.8", "@superfluid-finance/ethereum-contracts@1.4.3": - "integrity" "sha512-QKycgANL6/+09+JbSLF7PaHFHbYKRWSKb4vpVWsXMSR44ozxWkS8ebld72+iG7qxzybw4XIxzKyzLce5h4PE+A==" - "resolved" "https://registry.npmjs.org/@superfluid-finance/ethereum-contracts/-/ethereum-contracts-1.4.3.tgz" - "version" "1.4.3" + version "1.4.3" + resolved "https://registry.npmjs.org/@superfluid-finance/ethereum-contracts/-/ethereum-contracts-1.4.3.tgz" + integrity sha512-QKycgANL6/+09+JbSLF7PaHFHbYKRWSKb4vpVWsXMSR44ozxWkS8ebld72+iG7qxzybw4XIxzKyzLce5h4PE+A== dependencies: "@decentral.ee/web3-helpers" "0.5.3" "@openzeppelin/contracts" "4.7.3" "@superfluid-finance/js-sdk" "0.6.3" "@truffle/contract" "4.5.23" - "ethereumjs-tx" "2.1.2" - "ethereumjs-util" "7.1.5" - "stack-trace" "0.0.10" + ethereumjs-tx "2.1.2" + ethereumjs-util "7.1.5" + stack-trace "0.0.10" "@superfluid-finance/js-sdk@^0.5.8": - "integrity" "sha512-KLjEF70u6jzQrPrYg0CYukrnMDE9FcOoZbgkIos41zdPrpsALITkM2uPpSOYwE2fifwZrNn7wMKH7WHBk/PULw==" - "resolved" "https://registry.npmjs.org/@superfluid-finance/js-sdk/-/js-sdk-0.5.8.tgz" - "version" "0.5.8" + version "0.5.8" + resolved "https://registry.npmjs.org/@superfluid-finance/js-sdk/-/js-sdk-0.5.8.tgz" + integrity sha512-KLjEF70u6jzQrPrYg0CYukrnMDE9FcOoZbgkIos41zdPrpsALITkM2uPpSOYwE2fifwZrNn7wMKH7WHBk/PULw== dependencies: "@ethersproject/abi" "^5.5.0" "@ethersproject/hash" "^5.5.0" "@truffle/contract" "4.3.42" - "auto-bind" "^4.0.0" - "node-fetch" "^2.6.5" + auto-bind "^4.0.0" + node-fetch "^2.6.5" "@superfluid-finance/js-sdk@0.6.3": - "integrity" "sha512-bSeV//KLAyseYwFVMGwrZmmS0iIZWx5FLGEEjXfi0oS42NFomD0MEt+iRyF7o/Jx6/8bfHGMH9I4s8LAWR27bQ==" - "resolved" "https://registry.npmjs.org/@superfluid-finance/js-sdk/-/js-sdk-0.6.3.tgz" - "version" "0.6.3" + version "0.6.3" + resolved "https://registry.npmjs.org/@superfluid-finance/js-sdk/-/js-sdk-0.6.3.tgz" + integrity sha512-bSeV//KLAyseYwFVMGwrZmmS0iIZWx5FLGEEjXfi0oS42NFomD0MEt+iRyF7o/Jx6/8bfHGMH9I4s8LAWR27bQ== dependencies: "@superfluid-finance/metadata" "git+https://github.com/superfluid-finance/metadata.git" "@truffle/contract" "4.5.23" - "auto-bind" "^4.0.0" - "node-fetch" "^2.6.7" + auto-bind "^4.0.0" + node-fetch "^2.6.7" "@superfluid-finance/metadata@git+https://github.com/superfluid-finance/metadata.git": - "resolved" "git+ssh://git@github.com/superfluid-finance/metadata.git#edd18b65e170417d2abff336fc14b6683fcf5e94" - "version" "1.1.0" + version "1.1.0" + resolved "git+ssh://git@github.com/superfluid-finance/metadata.git#edd18b65e170417d2abff336fc14b6683fcf5e94" "@superfluid-finance/sdk-core@^0.5.9": - "integrity" "sha512-4O4RBw4Wf7BlMdW7XceuI/7oX9GGsnir9nUaY4pQOrYd5++RGkakF/Bh98vOgBuvfCi/YkoVofeWmBxM1aFxGA==" - "resolved" "https://registry.npmjs.org/@superfluid-finance/sdk-core/-/sdk-core-0.5.9.tgz" - "version" "0.5.9" + version "0.5.9" + resolved "https://registry.npmjs.org/@superfluid-finance/sdk-core/-/sdk-core-0.5.9.tgz" + integrity sha512-4O4RBw4Wf7BlMdW7XceuI/7oX9GGsnir9nUaY4pQOrYd5++RGkakF/Bh98vOgBuvfCi/YkoVofeWmBxM1aFxGA== dependencies: "@superfluid-finance/ethereum-contracts" "1.4.3" "@superfluid-finance/metadata" "git+https://github.com/superfluid-finance/metadata.git" - "browserify" "^17.0.0" - "graphql-request" "^4.3.0" - "lodash" "^4.17.21" - "tsify" "^5.0.4" + browserify "^17.0.0" + graphql-request "^4.3.0" + lodash "^4.17.21" + tsify "^5.0.4" "@szmarczak/http-timer@^1.1.2": - "integrity" "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==" - "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" - "version" "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" + defer-to-connect "^1.0.1" "@tenderly/hardhat-tenderly@^1.5.3": - "integrity" "sha512-DuWp8Lm2lHQeDujM6szvMmE+wx1dE7PLILgtBnfGfhJy4Hv3SJHZDCOiP/V3X3InYPoKjMxNL/TN1jQbT+AXQA==" - "resolved" "https://registry.npmjs.org/@tenderly/hardhat-tenderly/-/hardhat-tenderly-1.5.3.tgz" - "version" "1.5.3" + version "1.5.3" + resolved "https://registry.npmjs.org/@tenderly/hardhat-tenderly/-/hardhat-tenderly-1.5.3.tgz" + integrity sha512-DuWp8Lm2lHQeDujM6szvMmE+wx1dE7PLILgtBnfGfhJy4Hv3SJHZDCOiP/V3X3InYPoKjMxNL/TN1jQbT+AXQA== dependencies: "@ethersproject/bignumber" "^5.7.0" "@nomiclabs/hardhat-ethers" "^2.1.1" - "axios" "^0.27.2" - "ethers" "^5.7.0" - "fs-extra" "^10.1.0" - "hardhat" "^2.10.2" - "hardhat-deploy" "^0.11.14" - "js-yaml" "^4.1.0" - "tenderly" "^0.3.0" - "tslog" "^4.3.1" + axios "^0.27.2" + ethers "^5.7.0" + fs-extra "^10.1.0" + hardhat "^2.10.2" + hardhat-deploy "^0.11.14" + js-yaml "^4.1.0" + tenderly "^0.3.0" + tslog "^4.3.1" "@truffle/abi-utils@^0.2.3": - "integrity" "sha512-ICr5Sger6r5uj2G5GN9Zp9OQDCaCqe2ZyAEyvavDoFB+jX0zZFUCfDnv5jllGRhgzdYJ3mec2390mjUyz9jSZA==" - "resolved" "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-0.2.4.tgz" - "version" "0.2.4" + version "0.2.4" + resolved "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-0.2.4.tgz" + integrity sha512-ICr5Sger6r5uj2G5GN9Zp9OQDCaCqe2ZyAEyvavDoFB+jX0zZFUCfDnv5jllGRhgzdYJ3mec2390mjUyz9jSZA== dependencies: - "change-case" "3.0.2" - "faker" "^5.3.1" - "fast-check" "^2.12.1" + change-case "3.0.2" + faker "^5.3.1" + fast-check "^2.12.1" "@truffle/abi-utils@^0.3.5": - "integrity" "sha512-nGIMNDjl1NhTxI5lSecOWoLFH8A+aDRPrMejke6Cb2ok8FWyTPCaHmlC8S0Kdi/Egp9m3CNI1TYsy9w9Y3E3jA==" - "resolved" "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-0.3.5.tgz" - "version" "0.3.5" + version "0.3.5" + resolved "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-0.3.5.tgz" + integrity sha512-nGIMNDjl1NhTxI5lSecOWoLFH8A+aDRPrMejke6Cb2ok8FWyTPCaHmlC8S0Kdi/Egp9m3CNI1TYsy9w9Y3E3jA== dependencies: - "change-case" "3.0.2" - "fast-check" "3.1.1" - "web3-utils" "1.7.4" + change-case "3.0.2" + fast-check "3.1.1" + web3-utils "1.7.4" "@truffle/blockchain-utils@^0.0.31": - "integrity" "sha512-BFo/nyxwhoHqPrqBQA1EAmSxeNnspGLiOCMa9pAL7WYSjyNBlrHaqCMO/F2O87G+NUK/u06E70DiSP2BFP0ZZw==" - "resolved" "https://registry.npmjs.org/@truffle/blockchain-utils/-/blockchain-utils-0.0.31.tgz" - "version" "0.0.31" + version "0.0.31" + resolved "https://registry.npmjs.org/@truffle/blockchain-utils/-/blockchain-utils-0.0.31.tgz" + integrity sha512-BFo/nyxwhoHqPrqBQA1EAmSxeNnspGLiOCMa9pAL7WYSjyNBlrHaqCMO/F2O87G+NUK/u06E70DiSP2BFP0ZZw== "@truffle/blockchain-utils@^0.1.4": - "integrity" "sha512-SldoNRIFSm3+HMBnSc2jFsu5TWDkCN4X6vL3wrd0t6DIeF7nD6EoPPjxwbFSoqCnkkRxMuZeL6sUx7UMJS/wSA==" - "resolved" "https://registry.npmjs.org/@truffle/blockchain-utils/-/blockchain-utils-0.1.6.tgz" - "version" "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.10": - "integrity" "sha512-+uPnImtjNUzRhWOp5GG9AeSEuG1o9iVRpCsodQ04podKqYagtjNOKSe7jqNLJCbZ1Vpbvztmb9KzbwOJTLZS9A==" - "resolved" "https://registry.npmjs.org/@truffle/codec/-/codec-0.14.10.tgz" - "version" "0.14.10" + version "0.14.10" + resolved "https://registry.npmjs.org/@truffle/codec/-/codec-0.14.10.tgz" + integrity sha512-+uPnImtjNUzRhWOp5GG9AeSEuG1o9iVRpCsodQ04podKqYagtjNOKSe7jqNLJCbZ1Vpbvztmb9KzbwOJTLZS9A== dependencies: "@truffle/abi-utils" "^0.3.5" "@truffle/compile-common" "^0.9.1" - "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.7.4" + 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.7.4" "@truffle/compile-common@^0.9.1": - "integrity" "sha512-mhdkX6ExZImHSBO3jGm6aAn8NpVtMTdjq50jRXY/O59/ZNC0J9WpRapxrAKUVNc+XydMdBlfeEpXoqTJg7cbXw==" - "resolved" "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.1.tgz" - "version" "0.9.1" + version "0.9.1" + resolved "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.1.tgz" + integrity sha512-mhdkX6ExZImHSBO3jGm6aAn8NpVtMTdjq50jRXY/O59/ZNC0J9WpRapxrAKUVNc+XydMdBlfeEpXoqTJg7cbXw== dependencies: "@truffle/error" "^0.1.1" - "colors" "1.4.0" + colors "1.4.0" "@truffle/contract-schema@^3.4.3", "@truffle/contract-schema@^3.4.9": - "integrity" "sha512-wReyVZUPyU9Zy5PSCugBLG1nnruBmRAJ/gmoirQiJ9N2n+s1iGBTY49tkDqFMz3XUUE0kplfdb9YKZJlLkTWzQ==" - "resolved" "https://registry.npmjs.org/@truffle/contract-schema/-/contract-schema-3.4.11.tgz" - "version" "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: - "ajv" "^6.10.0" - "debug" "^4.3.1" + ajv "^6.10.0" + debug "^4.3.1" "@truffle/contract@^4.0.35", "@truffle/contract@^4.3.23", "@truffle/contract@4.5.23": - "integrity" "sha512-ni/RzBdDFo60jaCb8ETCPBfPHRr1WVH5Y27EKmfEyrNg8TC7WZ28SQylMBkwdrgLjqAyPw3Pq7Y5us1f9tcyMQ==" - "resolved" "https://registry.npmjs.org/@truffle/contract/-/contract-4.5.23.tgz" - "version" "4.5.23" + version "4.5.23" + resolved "https://registry.npmjs.org/@truffle/contract/-/contract-4.5.23.tgz" + integrity sha512-ni/RzBdDFo60jaCb8ETCPBfPHRr1WVH5Y27EKmfEyrNg8TC7WZ28SQylMBkwdrgLjqAyPw3Pq7Y5us1f9tcyMQ== dependencies: "@ensdomains/ensjs" "^2.1.0" "@truffle/blockchain-utils" "^0.1.4" @@ -1353,19 +1355,19 @@ "@truffle/debug-utils" "^6.0.33" "@truffle/error" "^0.1.1" "@truffle/interface-adapter" "^0.5.21" - "bignumber.js" "^7.2.1" - "debug" "^4.3.1" - "ethers" "^4.0.32" - "web3" "1.7.4" - "web3-core-helpers" "1.7.4" - "web3-core-promievent" "1.7.4" - "web3-eth-abi" "1.7.4" - "web3-utils" "1.7.4" + bignumber.js "^7.2.1" + debug "^4.3.1" + ethers "^4.0.32" + web3 "1.7.4" + web3-core-helpers "1.7.4" + web3-core-promievent "1.7.4" + web3-eth-abi "1.7.4" + web3-utils "1.7.4" "@truffle/contract@4.3.42": - "integrity" "sha512-CWbKz3L6ldAoh0JX14nNzOyXxWsLiGX5PYpswrwOy0Uk4JYpbVtpSzoQxJbnDTfLUciowfCdG/4QMZ+zo2WVqA==" - "resolved" "https://registry.npmjs.org/@truffle/contract/-/contract-4.3.42.tgz" - "version" "4.3.42" + version "4.3.42" + resolved "https://registry.npmjs.org/@truffle/contract/-/contract-4.3.42.tgz" + integrity sha512-CWbKz3L6ldAoh0JX14nNzOyXxWsLiGX5PYpswrwOy0Uk4JYpbVtpSzoQxJbnDTfLUciowfCdG/4QMZ+zo2WVqA== dependencies: "@ensdomains/ensjs" "^2.0.1" "@truffle/blockchain-utils" "^0.0.31" @@ -1373,384 +1375,384 @@ "@truffle/debug-utils" "^6.0.0" "@truffle/error" "^0.0.14" "@truffle/interface-adapter" "^0.5.8" - "bignumber.js" "^7.2.1" - "debug" "^4.3.1" - "ethers" "^4.0.32" - "web3" "1.5.3" - "web3-core-helpers" "1.5.3" - "web3-core-promievent" "1.5.3" - "web3-eth-abi" "1.5.3" - "web3-utils" "1.5.3" + bignumber.js "^7.2.1" + debug "^4.3.1" + ethers "^4.0.32" + web3 "1.5.3" + web3-core-helpers "1.5.3" + web3-core-promievent "1.5.3" + web3-eth-abi "1.5.3" + web3-utils "1.5.3" "@truffle/debug-utils@^6.0.0", "@truffle/debug-utils@^6.0.33": - "integrity" "sha512-8sk0fmcN3s11cvAJyODoDPWK9W730c6UAreyeHNj03PWg04D+YUqHpRlV2evdqAx2om1p+Xp03eQag15mg//jQ==" - "resolved" "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-6.0.41.tgz" - "version" "6.0.41" + version "6.0.41" + resolved "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-6.0.41.tgz" + integrity sha512-8sk0fmcN3s11cvAJyODoDPWK9W730c6UAreyeHNj03PWg04D+YUqHpRlV2evdqAx2om1p+Xp03eQag15mg//jQ== dependencies: "@truffle/codec" "^0.14.10" "@trufflesuite/chromafi" "^3.0.0" - "bn.js" "^5.1.3" - "chalk" "^2.4.2" - "debug" "^4.3.1" - "highlightjs-solidity" "^2.0.5" + bn.js "^5.1.3" + chalk "^2.4.2" + debug "^4.3.1" + highlightjs-solidity "^2.0.5" "@truffle/error@^0.0.14": - "integrity" "sha512-utJx+SZYoMqk8wldQG4gCVKhV8GwMJbWY7sLXFT/D8wWZTnE2peX7URFJh/cxkjTRCO328z1s2qewkhyVsu2HA==" - "resolved" "https://registry.npmjs.org/@truffle/error/-/error-0.0.14.tgz" - "version" "0.0.14" + version "0.0.14" + resolved "https://registry.npmjs.org/@truffle/error/-/error-0.0.14.tgz" + integrity sha512-utJx+SZYoMqk8wldQG4gCVKhV8GwMJbWY7sLXFT/D8wWZTnE2peX7URFJh/cxkjTRCO328z1s2qewkhyVsu2HA== "@truffle/error@^0.1.1": - "integrity" "sha512-sE7c9IHIGdbK4YayH4BC8i8qMjoAOeg6nUXUDZZp8wlU21/EMpaG+CLx+KqcIPyR+GSWIW3Dm0PXkr2nlggFDA==" - "resolved" "https://registry.npmjs.org/@truffle/error/-/error-0.1.1.tgz" - "version" "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/interface-adapter@^0.5.21", "@truffle/interface-adapter@^0.5.8": - "integrity" "sha512-7EpA9Tyq9It2z7GaLPHljEdmCtVFAkYko6vxXbN+H5PdL6zjEOw66bzMbKisKkh3px5dUd1OlRwPljjs34dpAQ==" - "resolved" "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.5.25.tgz" - "version" "0.5.25" + version "0.5.25" + resolved "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.5.25.tgz" + integrity sha512-7EpA9Tyq9It2z7GaLPHljEdmCtVFAkYko6vxXbN+H5PdL6zjEOw66bzMbKisKkh3px5dUd1OlRwPljjs34dpAQ== dependencies: - "bn.js" "^5.1.3" - "ethers" "^4.0.32" - "web3" "1.7.4" + bn.js "^5.1.3" + ethers "^4.0.32" + web3 "1.7.4" "@truffle/provider@^0.2.24": - "integrity" "sha512-ZNoglPho4alYIjJR+sLTgX0x6ho7m4OAUWuJ50RAWmoEqYc4AM6htdrI+lTSoRrOHHbmgasv22a7rFPMnmDrTg==" - "resolved" "https://registry.npmjs.org/@truffle/provider/-/provider-0.2.42.tgz" - "version" "0.2.42" + version "0.2.42" + resolved "https://registry.npmjs.org/@truffle/provider/-/provider-0.2.42.tgz" + integrity sha512-ZNoglPho4alYIjJR+sLTgX0x6ho7m4OAUWuJ50RAWmoEqYc4AM6htdrI+lTSoRrOHHbmgasv22a7rFPMnmDrTg== dependencies: "@truffle/error" "^0.0.14" "@truffle/interface-adapter" "^0.5.8" - "web3" "1.5.3" + web3 "1.5.3" "@trufflesuite/chromafi@^3.0.0": - "integrity" "sha512-oqWcOqn8nT1bwlPPfidfzS55vqcIDdpfzo3HbU9EnUmcSTX+I8z0UyUFI3tZQjByVJulbzxHxUGS3ZJPwK/GPQ==" - "resolved" "https://registry.npmjs.org/@trufflesuite/chromafi/-/chromafi-3.0.0.tgz" - "version" "3.0.0" - 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" + version "3.0.0" + resolved "https://registry.npmjs.org/@trufflesuite/chromafi/-/chromafi-3.0.0.tgz" + integrity sha512-oqWcOqn8nT1bwlPPfidfzS55vqcIDdpfzo3HbU9EnUmcSTX+I8z0UyUFI3tZQjByVJulbzxHxUGS3ZJPwK/GPQ== + 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" "@tsconfig/node10@^1.0.7": - "integrity" "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==" - "resolved" "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz" - "version" "1.0.8" + version "1.0.8" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz" + integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== "@tsconfig/node12@^1.0.7": - "integrity" "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==" - "resolved" "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz" - "version" "1.0.9" + version "1.0.9" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz" + integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== "@tsconfig/node14@^1.0.0": - "integrity" "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==" - "resolved" "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz" + integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== "@tsconfig/node16@^1.0.2": - "integrity" "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==" - "resolved" "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz" - "version" "1.0.2" + version "1.0.2" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz" + integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== "@typechain/ethers-v5@^2.0.0": - "integrity" "sha512-0xdCkyGOzdqh4h5JSf+zoWx85IusEjDcPIwNEHP8mrWSnCae4rvrqB+/gtpdNfX7zjlFlZiMeePn2r63EI3Lrw==" - "resolved" "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-2.0.0.tgz" - "version" "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: - "ethers" "^5.0.2" + ethers "^5.0.2" "@typechain/ethers-v5@^9.0.0": - "integrity" "sha512-bAanuPl1L2itaUdMvor/QvwnIH+TM/CmG00q17Ilv3ZZMeJ2j8HcarhgJUZ9pBY1teBb85P8cC03dz3mSSx+tQ==" - "resolved" "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-9.0.0.tgz" - "version" "9.0.0" + version "9.0.0" + resolved "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-9.0.0.tgz" + integrity sha512-bAanuPl1L2itaUdMvor/QvwnIH+TM/CmG00q17Ilv3ZZMeJ2j8HcarhgJUZ9pBY1teBb85P8cC03dz3mSSx+tQ== dependencies: - "lodash" "^4.17.15" - "ts-essentials" "^7.0.1" + lodash "^4.17.15" + ts-essentials "^7.0.1" "@typechain/hardhat@^4.0.0": - "integrity" "sha512-SeEKtiHu4Io3LHhE8VV3orJbsj7dwJZX8pzSTv7WQR38P18vOLm2M52GrykVinMpkLK0uVc88ICT58emvfn74w==" - "resolved" "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-4.0.0.tgz" - "version" "4.0.0" + version "4.0.0" + resolved "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-4.0.0.tgz" + integrity sha512-SeEKtiHu4Io3LHhE8VV3orJbsj7dwJZX8pzSTv7WQR38P18vOLm2M52GrykVinMpkLK0uVc88ICT58emvfn74w== dependencies: - "fs-extra" "^9.1.0" + fs-extra "^9.1.0" "@types/async-eventemitter@^0.2.1": - "integrity" "sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg==" - "resolved" "https://registry.npmjs.org/@types/async-eventemitter/-/async-eventemitter-0.2.1.tgz" - "version" "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/axios@^0.14.0": - "integrity" "sha1-7CMA++fX3d1+udOr+HmZlkyvzkY=" - "resolved" "https://registry.npmjs.org/@types/axios/-/axios-0.14.0.tgz" - "version" "0.14.0" + version "0.14.0" + resolved "https://registry.npmjs.org/@types/axios/-/axios-0.14.0.tgz" + integrity sha1-7CMA++fX3d1+udOr+HmZlkyvzkY= dependencies: - "axios" "*" + axios "*" "@types/bignumber.js@^5.0.0": - "integrity" "sha512-0DH7aPGCClywOFaxxjE6UwpN2kQYe9LwuDQMv+zYA97j5GkOMo8e66LYT+a8JYU7jfmUFRZLa9KycxHDsKXJCA==" - "resolved" "https://registry.npmjs.org/@types/bignumber.js/-/bignumber.js-5.0.0.tgz" - "version" "5.0.0" + version "5.0.0" + resolved "https://registry.npmjs.org/@types/bignumber.js/-/bignumber.js-5.0.0.tgz" + integrity sha512-0DH7aPGCClywOFaxxjE6UwpN2kQYe9LwuDQMv+zYA97j5GkOMo8e66LYT+a8JYU7jfmUFRZLa9KycxHDsKXJCA== dependencies: - "bignumber.js" "*" + bignumber.js "*" "@types/bn.js@*", "@types/bn.js@^5.1.0": - "integrity" "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==" - "resolved" "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz" - "version" "5.1.0" + version "5.1.0" + resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz" + integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== dependencies: "@types/node" "*" "@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5": - "integrity" "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==" - "resolved" "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz" - "version" "4.11.6" + 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: "@types/node" "*" "@types/chai@*", "@types/chai@^4.3.0": - "integrity" "sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==" - "resolved" "https://registry.npmjs.org/@types/chai/-/chai-4.3.0.tgz" - "version" "4.3.0" + version "4.3.0" + resolved "https://registry.npmjs.org/@types/chai/-/chai-4.3.0.tgz" + integrity sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw== "@types/concat-stream@^1.6.0": - "integrity" "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==" - "resolved" "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz" - "version" "1.6.1" + version "1.6.1" + resolved "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz" + integrity sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA== dependencies: "@types/node" "*" "@types/form-data@0.0.33": - "integrity" "sha1-yayFsqX9GENbjIXZ7LUObWyJP/g=" - "resolved" "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz" - "version" "0.0.33" + version "0.0.33" + resolved "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz" + integrity sha1-yayFsqX9GENbjIXZ7LUObWyJP/g= dependencies: "@types/node" "*" "@types/glob@^7.1.1": - "integrity" "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==" - "resolved" "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" - "version" "7.2.0" + 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" "*" "@types/json-schema@^7.0.9": - "integrity" "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" - "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz" - "version" "7.0.9" + version "7.0.9" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== "@types/json5@^0.0.29": - "integrity" "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" - "resolved" "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" - "version" "0.0.29" + version "0.0.29" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= "@types/lru-cache@^5.1.0": - "integrity" "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==" - "resolved" "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz" - "version" "5.1.1" + version "5.1.1" + resolved "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== "@types/minimatch@*": - "integrity" "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" - "resolved" "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz" - "version" "3.0.5" + version "3.0.5" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== "@types/mkdirp@^0.5.2": - "integrity" "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==" - "resolved" "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz" - "version" "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: "@types/node" "*" "@types/mocha@^9.1.0": - "integrity" "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==" - "resolved" "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz" - "version" "9.1.0" + version "9.1.0" + resolved "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz" + integrity sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg== "@types/node-fetch@^2.5.5": - "integrity" "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==" - "resolved" "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz" - "version" "2.5.12" + version "2.5.12" + resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz" + integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== dependencies: "@types/node" "*" - "form-data" "^3.0.0" + form-data "^3.0.0" "@types/node@*", "@types/node@^17.0.18": - "integrity" "sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-17.0.18.tgz" - "version" "17.0.18" + version "17.0.18" + resolved "https://registry.npmjs.org/@types/node/-/node-17.0.18.tgz" + integrity sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA== "@types/node@^10.0.3": - "integrity" "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz" - "version" "10.17.60" + version "10.17.60" + resolved "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== "@types/node@^12.12.6": - "integrity" "sha512-i1KGxqcvJaLQali+WuypQnXwcplhtNtjs66eNsZpp2P2FL/trJJxx/VWsM0YCL2iMoIJrbXje48lvIQAQ4p2ZA==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-12.20.37.tgz" - "version" "12.20.37" + version "12.20.37" + resolved "https://registry.npmjs.org/@types/node/-/node-12.20.37.tgz" + integrity sha512-i1KGxqcvJaLQali+WuypQnXwcplhtNtjs66eNsZpp2P2FL/trJJxx/VWsM0YCL2iMoIJrbXje48lvIQAQ4p2ZA== "@types/node@^8.0.0": - "integrity" "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz" - "version" "8.10.66" + version "8.10.66" + resolved "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz" + integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== "@types/pbkdf2@^3.0.0": - "integrity" "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==" - "resolved" "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz" - "version" "3.1.0" + version "3.1.0" + resolved "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz" + integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== dependencies: "@types/node" "*" "@types/prettier@^2.1.1": - "integrity" "sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==" - "resolved" "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.2.tgz" - "version" "2.4.2" + version "2.4.2" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.2.tgz" + integrity sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA== "@types/qs@^6.2.31", "@types/qs@^6.9.7": - "integrity" "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - "resolved" "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" - "version" "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== "@types/resolve@^0.0.8": - "integrity" "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==" - "resolved" "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz" - "version" "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/node" "*" "@types/secp256k1@^4.0.1": - "integrity" "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==" - "resolved" "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz" - "version" "4.0.3" + version "4.0.3" + resolved "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz" + integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== dependencies: "@types/node" "*" "@types/sinon-chai@^3.2.3": - "integrity" "sha512-Z57LprQ+yOQNu9d6mWdHNvnmncPXzDWGSeLj+8L075/QahToapC4Q13zAFRVKV4clyBmdJ5gz4xBfVkOso5lXw==" - "resolved" "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.6.tgz" - "version" "3.2.6" + version "3.2.6" + resolved "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.6.tgz" + integrity sha512-Z57LprQ+yOQNu9d6mWdHNvnmncPXzDWGSeLj+8L075/QahToapC4Q13zAFRVKV4clyBmdJ5gz4xBfVkOso5lXw== dependencies: "@types/chai" "*" "@types/sinon" "*" "@types/sinon@*": - "integrity" "sha512-6EF+wzMWvBNeGrfP3Nx60hhx+FfwSg1JJBLAAP/IdIUq0EYkqCYf70VT3PhuhPX9eLD+Dp+lNdpb/ZeHG8Yezg==" - "resolved" "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.6.tgz" - "version" "10.0.6" + version "10.0.6" + resolved "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.6.tgz" + integrity sha512-6EF+wzMWvBNeGrfP3Nx60hhx+FfwSg1JJBLAAP/IdIUq0EYkqCYf70VT3PhuhPX9eLD+Dp+lNdpb/ZeHG8Yezg== dependencies: "@sinonjs/fake-timers" "^7.1.0" "@types/underscore@*": - "integrity" "sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg==" - "resolved" "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.4.tgz" - "version" "1.11.4" + version "1.11.4" + resolved "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.4.tgz" + integrity sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg== "@types/web3@1.0.19": - "integrity" "sha512-fhZ9DyvDYDwHZUp5/STa9XW2re0E8GxoioYJ4pEUZ13YHpApSagixj7IAdoYH5uAK+UalGq6Ml8LYzmgRA/q+A==" - "resolved" "https://registry.npmjs.org/@types/web3/-/web3-1.0.19.tgz" - "version" "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: "@types/bn.js" "*" "@types/underscore" "*" "@typescript-eslint/eslint-plugin@^5.12.0": - "integrity" "sha512-fwCMkDimwHVeIOKeBHiZhRUfJXU8n6xW1FL9diDxAyGAFvKcH4csy0v7twivOQdQdA0KC8TDr7GGRd3L4Lv0rQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.0.tgz" - "version" "5.12.0" + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.0.tgz" + integrity sha512-fwCMkDimwHVeIOKeBHiZhRUfJXU8n6xW1FL9diDxAyGAFvKcH4csy0v7twivOQdQdA0KC8TDr7GGRd3L4Lv0rQ== dependencies: "@typescript-eslint/scope-manager" "5.12.0" "@typescript-eslint/type-utils" "5.12.0" "@typescript-eslint/utils" "5.12.0" - "debug" "^4.3.2" - "functional-red-black-tree" "^1.0.1" - "ignore" "^5.1.8" - "regexpp" "^3.2.0" - "semver" "^7.3.5" - "tsutils" "^3.21.0" + debug "^4.3.2" + functional-red-black-tree "^1.0.1" + ignore "^5.1.8" + regexpp "^3.2.0" + semver "^7.3.5" + tsutils "^3.21.0" "@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.12.0": - "integrity" "sha512-MfSwg9JMBojMUoGjUmX+D2stoQj1CBYTCP0qnnVtu9A+YQXVKNtLjasYh+jozOcrb/wau8TCfWOkQTiOAruBog==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.12.0.tgz" - "version" "5.12.0" + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.12.0.tgz" + integrity sha512-MfSwg9JMBojMUoGjUmX+D2stoQj1CBYTCP0qnnVtu9A+YQXVKNtLjasYh+jozOcrb/wau8TCfWOkQTiOAruBog== dependencies: "@typescript-eslint/scope-manager" "5.12.0" "@typescript-eslint/types" "5.12.0" "@typescript-eslint/typescript-estree" "5.12.0" - "debug" "^4.3.2" + debug "^4.3.2" "@typescript-eslint/scope-manager@5.12.0": - "integrity" "sha512-GAMobtIJI8FGf1sLlUWNUm2IOkIjvn7laFWyRx7CLrv6nLBI7su+B7lbStqVlK5NdLvHRFiJo2HhiDF7Ki01WQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.12.0.tgz" - "version" "5.12.0" + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.12.0.tgz" + integrity sha512-GAMobtIJI8FGf1sLlUWNUm2IOkIjvn7laFWyRx7CLrv6nLBI7su+B7lbStqVlK5NdLvHRFiJo2HhiDF7Ki01WQ== dependencies: "@typescript-eslint/types" "5.12.0" "@typescript-eslint/visitor-keys" "5.12.0" "@typescript-eslint/type-utils@5.12.0": - "integrity" "sha512-9j9rli3zEBV+ae7rlbBOotJcI6zfc6SHFMdKI9M3Nc0sy458LJ79Os+TPWeBBL96J9/e36rdJOfCuyRSgFAA0Q==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.12.0.tgz" - "version" "5.12.0" + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.12.0.tgz" + integrity sha512-9j9rli3zEBV+ae7rlbBOotJcI6zfc6SHFMdKI9M3Nc0sy458LJ79Os+TPWeBBL96J9/e36rdJOfCuyRSgFAA0Q== dependencies: "@typescript-eslint/utils" "5.12.0" - "debug" "^4.3.2" - "tsutils" "^3.21.0" + debug "^4.3.2" + tsutils "^3.21.0" "@typescript-eslint/types@5.12.0": - "integrity" "sha512-JowqbwPf93nvf8fZn5XrPGFBdIK8+yx5UEGs2QFAYFI8IWYfrzz+6zqlurGr2ctShMaJxqwsqmra3WXWjH1nRQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.12.0.tgz" - "version" "5.12.0" + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.12.0.tgz" + integrity sha512-JowqbwPf93nvf8fZn5XrPGFBdIK8+yx5UEGs2QFAYFI8IWYfrzz+6zqlurGr2ctShMaJxqwsqmra3WXWjH1nRQ== "@typescript-eslint/typescript-estree@5.12.0": - "integrity" "sha512-Dd9gVeOqt38QHR0BEA8oRaT65WYqPYbIc5tRFQPkfLquVEFPD1HAtbZT98TLBkEcCkvwDYOAvuSvAD9DnQhMfQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.0.tgz" - "version" "5.12.0" + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.0.tgz" + integrity sha512-Dd9gVeOqt38QHR0BEA8oRaT65WYqPYbIc5tRFQPkfLquVEFPD1HAtbZT98TLBkEcCkvwDYOAvuSvAD9DnQhMfQ== dependencies: "@typescript-eslint/types" "5.12.0" "@typescript-eslint/visitor-keys" "5.12.0" - "debug" "^4.3.2" - "globby" "^11.0.4" - "is-glob" "^4.0.3" - "semver" "^7.3.5" - "tsutils" "^3.21.0" + debug "^4.3.2" + globby "^11.0.4" + is-glob "^4.0.3" + semver "^7.3.5" + tsutils "^3.21.0" "@typescript-eslint/utils@5.12.0": - "integrity" "sha512-k4J2WovnMPGI4PzKgDtQdNrCnmBHpMUFy21qjX2CoPdoBcSBIMvVBr9P2YDP8jOqZOeK3ThOL6VO/sy6jtnvzw==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.12.0.tgz" - "version" "5.12.0" + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.12.0.tgz" + integrity sha512-k4J2WovnMPGI4PzKgDtQdNrCnmBHpMUFy21qjX2CoPdoBcSBIMvVBr9P2YDP8jOqZOeK3ThOL6VO/sy6jtnvzw== dependencies: "@types/json-schema" "^7.0.9" "@typescript-eslint/scope-manager" "5.12.0" "@typescript-eslint/types" "5.12.0" "@typescript-eslint/typescript-estree" "5.12.0" - "eslint-scope" "^5.1.1" - "eslint-utils" "^3.0.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" "@typescript-eslint/visitor-keys@5.12.0": - "integrity" "sha512-cFwTlgnMV6TgezQynx2c/4/tx9Tufbuo9LPzmWqyRC3QC4qTGkAG1C6pBr0/4I10PAI/FlYunI3vJjIcu+ZHMg==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.0.tgz" - "version" "5.12.0" + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.0.tgz" + integrity sha512-cFwTlgnMV6TgezQynx2c/4/tx9Tufbuo9LPzmWqyRC3QC4qTGkAG1C6pBr0/4I10PAI/FlYunI3vJjIcu+ZHMg== dependencies: "@typescript-eslint/types" "5.12.0" - "eslint-visitor-keys" "^3.0.0" + eslint-visitor-keys "^3.0.0" "@uniswap/lib@^4.0.1-alpha": - "integrity" "sha512-f6UIliwBbRsgVLxIaBANF6w09tYqc6Y/qXdsrbEmXHyFA7ILiKrIwRFXe1yOg8M3cksgVsO9N7yuL2DdCGQKBA==" - "resolved" "https://registry.npmjs.org/@uniswap/lib/-/lib-4.0.1-alpha.tgz" - "version" "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== "@uniswap/lib@1.1.1": - "integrity" "sha512-2yK7sLpKIT91TiS5sewHtOa7YuM8IuBXVl4GZv2jZFys4D2sY7K5vZh6MqD25TPA95Od+0YzCVq6cTF2IKrOmg==" - "resolved" "https://registry.npmjs.org/@uniswap/lib/-/lib-1.1.1.tgz" - "version" "1.1.1" + version "1.1.1" + resolved "https://registry.npmjs.org/@uniswap/lib/-/lib-1.1.1.tgz" + integrity sha512-2yK7sLpKIT91TiS5sewHtOa7YuM8IuBXVl4GZv2jZFys4D2sY7K5vZh6MqD25TPA95Od+0YzCVq6cTF2IKrOmg== "@uniswap/router-sdk@^1.0.6": - "integrity" "sha512-GyUX8x+hnwnh89DHyA/yKWUwhU3Eukx3B76vfvMMWfr++GA4CW6PzT5j4JgNZDrsBTOSJWxTdU5YbgOuwU2XGg==" - "resolved" "https://registry.npmjs.org/@uniswap/router-sdk/-/router-sdk-1.4.0.tgz" - "version" "1.4.0" + version "1.4.0" + resolved "https://registry.npmjs.org/@uniswap/router-sdk/-/router-sdk-1.4.0.tgz" + integrity sha512-GyUX8x+hnwnh89DHyA/yKWUwhU3Eukx3B76vfvMMWfr++GA4CW6PzT5j4JgNZDrsBTOSJWxTdU5YbgOuwU2XGg== dependencies: "@ethersproject/abi" "^5.5.0" "@uniswap/sdk-core" "^3.0.1" @@ -1759,113 +1761,113 @@ "@uniswap/v3-sdk" "^3.8.3" "@uniswap/sdk-core@^3.0.0-alpha.3", "@uniswap/sdk-core@^3.0.1": - "integrity" "sha512-YRrp6vYAbYmi3uDXQGkvj2eT8BMpNnUdCFb8GifDG0Ei+ohIpC4RNAB+5/ru3zR2Byhx8VahGrSKuvdd6BVMyA==" - "resolved" "https://registry.npmjs.org/@uniswap/sdk-core/-/sdk-core-3.1.0.tgz" - "version" "3.1.0" + 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: "@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" + big.js "^5.2.2" + decimal.js-light "^2.5.0" + jsbi "^3.1.4" + tiny-invariant "^1.1.0" + toformat "^2.0.0" "@uniswap/swap-router-contracts@^1.2.1": - "integrity" "sha512-iKvCuRkHXEe0EMjOf8HFUISTIhlxI57kKFllf3C3PUIE0HmwxrayyoflwAz5u/TRsFGYqJ9IjX2UgzLCsrNa5A==" - "resolved" "https://registry.npmjs.org/@uniswap/swap-router-contracts/-/swap-router-contracts-1.3.0.tgz" - "version" "1.3.0" + 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: "@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" + dotenv "^14.2.0" + hardhat-watcher "^2.1.1" "@uniswap/swap-router-contracts@1.1.0": - "integrity" "sha512-GPmpx1lvjXWloB95+YUabr3UHJYr3scnSS8EzaNXnNrIz9nYZ+XQcMaJxOKe85Yi7IfcUQpj0HzD2TW99dtolA==" - "resolved" "https://registry.npmjs.org/@uniswap/swap-router-contracts/-/swap-router-contracts-1.1.0.tgz" - "version" "1.1.0" + version "1.1.0" + resolved "https://registry.npmjs.org/@uniswap/swap-router-contracts/-/swap-router-contracts-1.1.0.tgz" + integrity sha512-GPmpx1lvjXWloB95+YUabr3UHJYr3scnSS8EzaNXnNrIz9nYZ+XQcMaJxOKe85Yi7IfcUQpj0HzD2TW99dtolA== dependencies: "@openzeppelin/contracts" "3.4.1-solc-0.7-2" "@uniswap/v2-core" "1.0.1" "@uniswap/v3-core" "1.0.0" "@uniswap/v3-periphery" "1.3.0" - "hardhat-watcher" "^2.1.1" + hardhat-watcher "^2.1.1" "@uniswap/v2-core@^1.0.1", "@uniswap/v2-core@1.0.1": - "integrity" "sha512-MtybtkUPSyysqLY2U210NBDeCHX+ltHt3oADGdjqoThZaFRDKwM6k1Nb3F0A3hk5hwuQvytFWhrWHOEq6nVJ8Q==" - "resolved" "https://registry.npmjs.org/@uniswap/v2-core/-/v2-core-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@uniswap/v2-core/-/v2-core-1.0.1.tgz" + integrity sha512-MtybtkUPSyysqLY2U210NBDeCHX+ltHt3oADGdjqoThZaFRDKwM6k1Nb3F0A3hk5hwuQvytFWhrWHOEq6nVJ8Q== "@uniswap/v2-core@1.0.0": - "integrity" "sha512-BJiXrBGnN8mti7saW49MXwxDBRFiWemGetE58q8zgfnPPzQKq55ADltEILqOt6VFZ22kVeVKbF8gVd8aY3l7pA==" - "resolved" "https://registry.npmjs.org/@uniswap/v2-core/-/v2-core-1.0.0.tgz" - "version" "1.0.0" + version "1.0.0" + resolved "https://registry.npmjs.org/@uniswap/v2-core/-/v2-core-1.0.0.tgz" + integrity sha512-BJiXrBGnN8mti7saW49MXwxDBRFiWemGetE58q8zgfnPPzQKq55ADltEILqOt6VFZ22kVeVKbF8gVd8aY3l7pA== "@uniswap/v2-periphery@^1.1.0-beta.0": - "integrity" "sha512-6dkwAMKza8nzqYiXEr2D86dgW3TTavUvCR0w2Tu33bAbM8Ah43LKAzH7oKKPRT5VJQaMi1jtkGs1E8JPor1n5g==" - "resolved" "https://registry.npmjs.org/@uniswap/v2-periphery/-/v2-periphery-1.1.0-beta.0.tgz" - "version" "1.1.0-beta.0" + version "1.1.0-beta.0" + resolved "https://registry.npmjs.org/@uniswap/v2-periphery/-/v2-periphery-1.1.0-beta.0.tgz" + integrity sha512-6dkwAMKza8nzqYiXEr2D86dgW3TTavUvCR0w2Tu33bAbM8Ah43LKAzH7oKKPRT5VJQaMi1jtkGs1E8JPor1n5g== dependencies: "@uniswap/lib" "1.1.1" "@uniswap/v2-core" "1.0.0" "@uniswap/v2-sdk@^3.0.1": - "integrity" "sha512-eSpm2gjo2CZh9FACH5fq42str/oSNyWcDxB27o5k44bEew4sxb+pld4gGIf/byJndLBvArR9PtH8c0n/goNOTw==" - "resolved" "https://registry.npmjs.org/@uniswap/v2-sdk/-/v2-sdk-3.0.1.tgz" - "version" "3.0.1" + version "3.0.1" + resolved "https://registry.npmjs.org/@uniswap/v2-sdk/-/v2-sdk-3.0.1.tgz" + integrity sha512-eSpm2gjo2CZh9FACH5fq42str/oSNyWcDxB27o5k44bEew4sxb+pld4gGIf/byJndLBvArR9PtH8c0n/goNOTw== dependencies: "@ethersproject/address" "^5.0.0" "@ethersproject/solidity" "^5.0.0" "@uniswap/sdk-core" "^3.0.0-alpha.3" - "tiny-invariant" "^1.1.0" - "tiny-warning" "^1.0.3" + tiny-invariant "^1.1.0" + tiny-warning "^1.0.3" "@uniswap/v3-core@1.0.0": - "integrity" "sha512-kSC4djMGKMHj7sLMYVnn61k9nu+lHjMIxgg9CDQT+s2QYLoA56GbSK9Oxr+qJXzzygbkrmuY6cwgP6cW2JXPFA==" - "resolved" "https://registry.npmjs.org/@uniswap/v3-core/-/v3-core-1.0.0.tgz" - "version" "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== "@uniswap/v3-periphery@^1.0.1", "@uniswap/v3-periphery@^1.4.1": - "integrity" "sha512-80c+wtVzl5JJT8UQskxVYYG3oZb4pkhY0zDe0ab/RX4+8f9+W5d8wI4BT0wLB0wFQTSnbW+QdBSpkHA/vRyGBA==" - "resolved" "https://registry.npmjs.org/@uniswap/v3-periphery/-/v3-periphery-1.4.3.tgz" - "version" "1.4.3" + 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" + base64-sol "1.0.1" "@uniswap/v3-periphery@^1.1.1", "@uniswap/v3-periphery@1.4.1": - "integrity" "sha512-Ab0ZCKOQrQMKIcpBTezTsEhWfQjItd0TtkCG8mPhoQu+wC67nPaf4hYUhM6wGHeFUmDiYY5MpEQuokB0ENvoTg==" - "resolved" "https://registry.npmjs.org/@uniswap/v3-periphery/-/v3-periphery-1.4.1.tgz" - "version" "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: "@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" + base64-sol "1.0.1" + hardhat-watcher "^2.1.1" "@uniswap/v3-periphery@1.3.0": - "integrity" "sha512-HjHdI5RkjBl8zz3bqHShrbULFoZSrjbbrRHoO2vbzn+WRzTa6xY4PWphZv2Tlcb38YEKfKHp6NPl5hVedac8uw==" - "resolved" "https://registry.npmjs.org/@uniswap/v3-periphery/-/v3-periphery-1.3.0.tgz" - "version" "1.3.0" + version "1.3.0" + resolved "https://registry.npmjs.org/@uniswap/v3-periphery/-/v3-periphery-1.3.0.tgz" + integrity sha512-HjHdI5RkjBl8zz3bqHShrbULFoZSrjbbrRHoO2vbzn+WRzTa6xY4PWphZv2Tlcb38YEKfKHp6NPl5hVedac8uw== dependencies: "@openzeppelin/contracts" "3.4.1-solc-0.7-2" "@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" + base64-sol "1.0.1" + hardhat-watcher "^2.1.1" "@uniswap/v3-sdk@^3.8.3": - "integrity" "sha512-LuoF3UcY1DxSAQKJ3E4/1Eq4HaNp+x+7q9mvbpiu+/PBj+O1DjLforAMrKxu+RsA0aarmZtz7yBnAPy+akgfgQ==" - "resolved" "https://registry.npmjs.org/@uniswap/v3-sdk/-/v3-sdk-3.9.0.tgz" - "version" "3.9.0" + 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" @@ -1873,4077 +1875,3950 @@ "@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" + tiny-invariant "^1.1.0" + tiny-warning "^1.0.3" "@uniswap/v3-staker@1.0.0": - "integrity" "sha512-JV0Qc46Px5alvg6YWd+UIaGH9lDuYG/Js7ngxPit1SPaIP30AlVer1UYB7BRYeUVVxE+byUyIeN5jeQ7LLDjIw==" - "resolved" "https://registry.npmjs.org/@uniswap/v3-staker/-/v3-staker-1.0.0.tgz" - "version" "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: "@openzeppelin/contracts" "3.4.1-solc-0.7-2" "@uniswap/v3-core" "1.0.0" "@uniswap/v3-periphery" "^1.0.1" "@yarnpkg/lockfile@^1.1.0": - "integrity" "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==" - "resolved" "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz" - "version" "1.1.0" + version "1.1.0" + resolved "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== -"abbrev@1", "abbrev@1.0.x": - "integrity" "sha1-kbR5JYinc4wl813W9jdSovh3YTU=" - "resolved" "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" - "version" "1.0.9" +abbrev@1, abbrev@1.0.x: + version "1.0.9" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" + integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU= -"abort-controller@^3.0.0": - "integrity" "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==" - "resolved" "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" - "version" "3.0.0" +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: - "event-target-shim" "^5.0.0" - -"abstract-level@^1.0.0", "abstract-level@^1.0.2", "abstract-level@^1.0.3": - "integrity" "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==" - "resolved" "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz" - "version" "1.0.3" - 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" - -"abstract-leveldown@^2.4.1": - "integrity" "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==" - "resolved" "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz" - "version" "2.7.2" - dependencies: - "xtend" "~4.0.0" - -"abstract-leveldown@^5.0.0": - "integrity" "sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==" - "resolved" "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "xtend" "~4.0.0" - -"abstract-leveldown@~2.6.0": - "integrity" "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==" - "resolved" "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz" - "version" "2.6.3" - dependencies: - "xtend" "~4.0.0" - -"abstract-leveldown@~2.7.1": - "integrity" "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==" - "resolved" "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz" - "version" "2.7.2" - dependencies: - "xtend" "~4.0.0" - -"abstract-leveldown@~5.0.0": - "integrity" "sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==" - "resolved" "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "xtend" "~4.0.0" - -"abstract-leveldown@3.0.0": - "integrity" "sha512-KUWx9UWGQD12zsmLNj64/pndaz4iJh/Pj7nopgkfDG6RlCcbMZvT6+9l7dchK4idog2Is8VdC/PvNbFuFmalIQ==" - "resolved" "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "xtend" "~4.0.0" - -"accepts@~1.3.7": - "version" "1.3.7" - dependencies: - "mime-types" "~2.1.24" - "negotiator" "0.6.2" - -"accepts@~1.3.8": - "integrity" "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" - "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" - "version" "1.3.8" - dependencies: - "mime-types" "~2.1.34" - "negotiator" "0.6.3" - -"acorn-jsx@^5.0.0", "acorn-jsx@^5.3.1": - "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" - "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - "version" "5.3.2" - -"acorn-node@^1.2.0", "acorn-node@^1.3.0", "acorn-node@^1.5.2", "acorn-node@^1.6.1": - "integrity" "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==" - "resolved" "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz" - "version" "1.8.2" - dependencies: - "acorn" "^7.0.0" - "acorn-walk" "^7.0.0" - "xtend" "^4.0.2" - -"acorn-walk@^7.0.0": - "integrity" "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" - "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" - "version" "7.2.0" - -"acorn-walk@^8.1.1": - "integrity" "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" - "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" - "version" "8.2.0" - -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^7.0.0", "acorn@^7.4.0": - "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" - "version" "7.4.1" - -"acorn@^6.0.7": - "integrity" "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" - "version" "6.4.2" - -"acorn@^8.4.1": - "integrity" "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz" - "version" "8.7.0" - -"address@^1.0.1": - "integrity" "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" - "resolved" "https://registry.npmjs.org/address/-/address-1.1.2.tgz" - "version" "1.1.2" - -"adm-zip@^0.4.16": - "integrity" "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==" - "resolved" "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz" - "version" "0.4.16" - -"aes-js@^3.1.1": - "integrity" "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==" - "resolved" "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz" - "version" "3.1.2" - -"aes-js@3.0.0": - "integrity" "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=" - "resolved" "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz" - "version" "3.0.0" - -"agent-base@6": - "integrity" "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==" - "resolved" "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" - "version" "6.0.2" - dependencies: - "debug" "4" - -"aggregate-error@^3.0.0": - "integrity" "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==" - "resolved" "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "clean-stack" "^2.0.0" - "indent-string" "^4.0.0" - -"ajv@^6.10.0", "ajv@^6.10.2", "ajv@^6.12.3", "ajv@^6.12.4", "ajv@^6.6.1", "ajv@^6.9.1": - "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - "version" "6.12.6" - dependencies: - "fast-deep-equal" "^3.1.1" - "fast-json-stable-stringify" "^2.0.0" - "json-schema-traverse" "^0.4.1" - "uri-js" "^4.2.2" - -"ajv@^8.0.1": - "integrity" "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz" - "version" "8.8.2" - dependencies: - "fast-deep-equal" "^3.1.1" - "json-schema-traverse" "^1.0.0" - "require-from-string" "^2.0.2" - "uri-js" "^4.2.2" - -"amdefine@>=0.0.4": - "integrity" "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" - "resolved" "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" - "version" "1.0.1" - -"ansi-colors@^3.2.3": - "integrity" "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" - "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz" - "version" "3.2.4" - -"ansi-colors@^4.1.1", "ansi-colors@4.1.1": - "integrity" "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" - "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" - "version" "4.1.1" - -"ansi-colors@3.2.3": - "integrity" "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==" - "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz" - "version" "3.2.3" - -"ansi-escapes@^3.2.0": - "integrity" "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz" - "version" "3.2.0" - -"ansi-escapes@^4.3.0": - "integrity" "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==" - "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" - "version" "4.3.2" - dependencies: - "type-fest" "^0.21.3" - -"ansi-regex@^2.0.0": - "integrity" "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" - "version" "2.1.1" - -"ansi-regex@^3.0.0": - "integrity" "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz" - "version" "3.0.0" - -"ansi-regex@^4.1.0": - "integrity" "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz" - "version" "4.1.0" - -"ansi-regex@^5.0.1": - "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - "version" "5.0.1" - -"ansi-styles@^2.2.1": - "integrity" "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - "version" "2.2.1" - -"ansi-styles@^3.2.0", "ansi-styles@^3.2.1": - "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "color-convert" "^1.9.0" - -"ansi-styles@^4.0.0": - "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "color-convert" "^2.0.1" - -"ansi-styles@^4.1.0": - "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "color-convert" "^2.0.1" - -"antlr4@4.7.1": - "integrity" "sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ==" - "resolved" "https://registry.npmjs.org/antlr4/-/antlr4-4.7.1.tgz" - "version" "4.7.1" - -"antlr4ts@^0.5.0-alpha.4": - "integrity" "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==" - "resolved" "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz" - "version" "0.5.0-alpha.4" - -"any-promise@^1.3.0": - "integrity" "sha1-q8av7tzqUugJzcA3au0845Y10X8=" - "resolved" "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" - "version" "1.3.0" - -"anymatch@~3.1.1", "anymatch@~3.1.2": - "integrity" "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "normalize-path" "^3.0.0" - "picomatch" "^2.0.4" - -"arg@^4.1.0": - "integrity" "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - "resolved" "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" - "version" "4.1.3" - -"argparse@^1.0.7": - "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "sprintf-js" "~1.0.2" - -"argparse@^2.0.1": - "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - "version" "2.0.1" - -"aria-query@^4.2.2": - "integrity" "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==" - "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz" - "version" "4.2.2" + event-target-shim "^5.0.0" + +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: + 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" + +abstract-leveldown@^2.4.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: + xtend "~4.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: + xtend "~4.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== + dependencies: + xtend "~4.0.0" + +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: + xtend "~4.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: + xtend "~4.0.0" + +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: + xtend "~4.0.0" + +accepts@~1.3.7: + version "1.3.7" + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +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" + +acorn-jsx@^5.3.1: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1: + version "1.8.2" + resolved "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz" + integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== + dependencies: + acorn "^7.0.0" + acorn-walk "^7.0.0" + xtend "^4.0.2" + +acorn-walk@^7.0.0: + version "7.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +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== + +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^7.0.0, 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: + version "8.7.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz" + integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== + +address@^1.0.1: + version "1.1.2" + resolved "https://registry.npmjs.org/address/-/address-1.1.2.tgz" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +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.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz" + integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz" + integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= + +agent-base@6: + version "6.0.2" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +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: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.6: + 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" + +ajv@^8.0.1: + version "8.8.2" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz" + integrity sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + +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.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== + +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== + +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: + type-fest "^0.21.3" + +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== + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +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== + +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== + +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: + color-convert "^1.9.0" + +ansi-styles@^4.0.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +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: + color-convert "^2.0.1" + +antlr4@^4.11.0: + version "4.12.0" + resolved "https://registry.npmjs.org/antlr4/-/antlr4-4.12.0.tgz" + integrity sha512-23iB5IzXJZRZeK9TigzUyrNc9pSmNqAerJRBcNq1ETrmttMWRgaYZzC561IgEO3ygKsDJTYDTozABXa4b/fTQQ== + +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== + +any-promise@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + +anymatch@~3.1.1, anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +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: + 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== + +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== dependencies: "@babel/runtime" "^7.10.2" "@babel/runtime-corejs3" "^7.10.2" -"arr-diff@^4.0.0": - "integrity" "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==" - "resolved" "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" - "version" "4.0.0" - -"arr-flatten@^1.1.0": - "integrity" "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - "resolved" "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" - "version" "1.1.0" - -"arr-union@^3.1.0": - "integrity" "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==" - "resolved" "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" - "version" "3.1.0" - -"array-back@^1.0.3": - "integrity" "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=" - "resolved" "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "typical" "^2.6.0" - -"array-back@^1.0.4": - "integrity" "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=" - "resolved" "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "typical" "^2.6.0" - -"array-back@^2.0.0": - "integrity" "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==" - "resolved" "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "typical" "^2.6.1" - -"array-back@^3.0.1", "array-back@^3.1.0": - "integrity" "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==" - "resolved" "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz" - "version" "3.1.0" - -"array-back@^4.0.1": - "integrity" "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==" - "resolved" "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz" - "version" "4.0.2" - -"array-flatten@1.1.1": - "integrity" "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - "version" "1.1.1" - -"array-includes@^3.1.3", "array-includes@^3.1.4": - "integrity" "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==" - "resolved" "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz" - "version" "3.1.4" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.1" - "get-intrinsic" "^1.1.1" - "is-string" "^1.0.7" - -"array-union@^2.1.0": - "integrity" "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - "resolved" "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" - "version" "2.1.0" - -"array-uniq@1.0.3": - "integrity" "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - "resolved" "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" - "version" "1.0.3" - -"array-unique@^0.3.2": - "integrity" "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==" - "resolved" "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" - "version" "0.3.2" - -"array.prototype.flat@^1.2.5": - "integrity" "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==" - "resolved" "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz" - "version" "1.2.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.0" - -"array.prototype.flatmap@^1.2.5": - "integrity" "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==" - "resolved" "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz" - "version" "1.2.5" - dependencies: - "call-bind" "^1.0.0" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.0" - -"asap@~2.0.6": - "integrity" "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - "resolved" "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" - "version" "2.0.6" - -"asn1.js@^5.2.0": - "integrity" "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==" - "resolved" "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" - "version" "5.4.1" - dependencies: - "bn.js" "^4.0.0" - "inherits" "^2.0.1" - "minimalistic-assert" "^1.0.0" - "safer-buffer" "^2.1.0" - -"asn1@~0.2.3": - "integrity" "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==" - "resolved" "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" - "version" "0.2.6" - dependencies: - "safer-buffer" "~2.1.0" - -"assert-plus@^1.0.0", "assert-plus@1.0.0": - "integrity" "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - "resolved" "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - "version" "1.0.0" - -"assert@^1.4.0": - "integrity" "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==" - "resolved" "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz" - "version" "1.5.0" - dependencies: - "object-assign" "^4.1.1" - "util" "0.10.3" - -"assertion-error@^1.1.0": - "integrity" "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" - "resolved" "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" - "version" "1.1.0" - -"assign-symbols@^1.0.0": - "integrity" "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" - "resolved" "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" - "version" "1.0.0" - -"ast-parents@0.0.1": - "integrity" "sha1-UI/Q8F0MSHddnszaLhdEIyYejdM=" - "resolved" "https://registry.npmjs.org/ast-parents/-/ast-parents-0.0.1.tgz" - "version" "0.0.1" - -"ast-types-flow@^0.0.7": - "integrity" "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" - "resolved" "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" - "version" "0.0.7" - -"astral-regex@^1.0.0": - "integrity" "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" - "resolved" "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" - "version" "1.0.0" - -"astral-regex@^2.0.0": - "integrity" "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" - "resolved" "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" - "version" "2.0.0" - -"async-eventemitter@^0.2.2": - "integrity" "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==" - "resolved" "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz" - "version" "0.2.4" - dependencies: - "async" "^2.4.0" - -"async-eventemitter@^0.2.4": - "integrity" "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==" - "resolved" "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz" - "version" "0.2.4" - dependencies: - "async" "^2.4.0" - -"async-limiter@~1.0.0": - "integrity" "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - "resolved" "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" - "version" "1.0.1" - -"async@^1.4.2": - "integrity" "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==" - "resolved" "https://registry.npmjs.org/async/-/async-1.5.2.tgz" - "version" "1.5.2" - -"async@^2.0.1", "async@^2.1.2", "async@^2.5.0", "async@^2.6.1", "async@2.6.2": - "integrity" "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==" - "resolved" "https://registry.npmjs.org/async/-/async-2.6.2.tgz" - "version" "2.6.2" - dependencies: - "lodash" "^4.17.11" - -"async@^2.4.0": - "integrity" "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==" - "resolved" "https://registry.npmjs.org/async/-/async-2.6.4.tgz" - "version" "2.6.4" - dependencies: - "lodash" "^4.17.14" - -"async@1.x": - "integrity" "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - "resolved" "https://registry.npmjs.org/async/-/async-1.5.2.tgz" - "version" "1.5.2" - -"asynckit@^0.4.0": - "integrity" "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - "version" "0.4.0" - -"at-least-node@^1.0.0": - "integrity" "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" - "resolved" "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" - "version" "1.0.0" - -"atob@^2.1.2": - "integrity" "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - "resolved" "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" - "version" "2.1.2" - -"auto-bind@^4.0.0": - "integrity" "sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==" - "resolved" "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz" - "version" "4.0.0" - -"available-typed-arrays@^1.0.5": - "integrity" "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" - "resolved" "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" - "version" "1.0.5" - -"aws-sign2@~0.7.0": - "integrity" "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - "resolved" "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" - "version" "0.7.0" - -"aws4@^1.8.0": - "integrity" "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - "resolved" "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" - "version" "1.11.0" - -"axe-core@^4.3.5": - "integrity" "sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==" - "resolved" "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz" - "version" "4.3.5" - -"axios@*", "axios@^1.3.4": - "integrity" "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==" - "resolved" "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz" - "version" "1.3.4" - dependencies: - "follow-redirects" "^1.15.0" - "form-data" "^4.0.0" - "proxy-from-env" "^1.1.0" - -"axios@^0.21.1": - "integrity" "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==" - "resolved" "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" - "version" "0.21.4" - dependencies: - "follow-redirects" "^1.14.0" - -"axios@^0.27.2": - "integrity" "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==" - "resolved" "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz" - "version" "0.27.2" - dependencies: - "follow-redirects" "^1.14.9" - "form-data" "^4.0.0" - -"axobject-query@^2.2.0": - "integrity" "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" - "resolved" "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz" - "version" "2.2.0" - -"babel-code-frame@^6.26.0": - "integrity" "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==" - "resolved" "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz" - "version" "6.26.0" - dependencies: - "chalk" "^1.1.3" - "esutils" "^2.0.2" - "js-tokens" "^3.0.2" - -"babel-core@^6.0.14", "babel-core@^6.26.0": - "integrity" "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==" - "resolved" "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz" - "version" "6.26.3" - 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" - -"babel-generator@^6.26.0": - "integrity" "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==" - "resolved" "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz" - "version" "6.26.1" - 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" - -"babel-helper-builder-binary-assignment-operator-visitor@^6.24.1": - "integrity" "sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q==" - "resolved" "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz" - "version" "6.24.1" - dependencies: - "babel-helper-explode-assignable-expression" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" - -"babel-helper-call-delegate@^6.24.1": - "integrity" "sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ==" - "resolved" "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz" - "version" "6.24.1" - dependencies: - "babel-helper-hoist-variables" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-traverse" "^6.24.1" - "babel-types" "^6.24.1" - -"babel-helper-define-map@^6.24.1": - "integrity" "sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA==" - "resolved" "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz" - "version" "6.26.0" - dependencies: - "babel-helper-function-name" "^6.24.1" - "babel-runtime" "^6.26.0" - "babel-types" "^6.26.0" - "lodash" "^4.17.4" - -"babel-helper-explode-assignable-expression@^6.24.1": - "integrity" "sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ==" - "resolved" "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz" - "version" "6.24.1" - dependencies: - "babel-runtime" "^6.22.0" - "babel-traverse" "^6.24.1" - "babel-types" "^6.24.1" - -"babel-helper-function-name@^6.24.1": - "integrity" "sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q==" - "resolved" "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz" - "version" "6.24.1" - 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" - -"babel-helper-get-function-arity@^6.24.1": - "integrity" "sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng==" - "resolved" "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz" - "version" "6.24.1" - dependencies: - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" - -"babel-helper-hoist-variables@^6.24.1": - "integrity" "sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw==" - "resolved" "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz" - "version" "6.24.1" - dependencies: - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" - -"babel-helper-optimise-call-expression@^6.24.1": - "integrity" "sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA==" - "resolved" "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz" - "version" "6.24.1" - dependencies: - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" - -"babel-helper-regex@^6.24.1": - "integrity" "sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg==" - "resolved" "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz" - "version" "6.26.0" - dependencies: - "babel-runtime" "^6.26.0" - "babel-types" "^6.26.0" - "lodash" "^4.17.4" - -"babel-helper-remap-async-to-generator@^6.24.1": - "integrity" "sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg==" - "resolved" "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz" - "version" "6.24.1" - 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" - -"babel-helper-replace-supers@^6.24.1": - "integrity" "sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw==" - "resolved" "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz" - "version" "6.24.1" - 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" - -"babel-helpers@^6.24.1": - "integrity" "sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==" - "resolved" "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz" - "version" "6.24.1" - dependencies: - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" - -"babel-messages@^6.23.0": - "integrity" "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==" - "resolved" "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz" - "version" "6.23.0" - dependencies: - "babel-runtime" "^6.22.0" - -"babel-plugin-check-es2015-constants@^6.22.0": - "integrity" "sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA==" - "resolved" "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz" - "version" "6.22.0" - dependencies: - "babel-runtime" "^6.22.0" - -"babel-plugin-syntax-async-functions@^6.8.0": - "integrity" "sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz" - "version" "6.13.0" - -"babel-plugin-syntax-exponentiation-operator@^6.8.0": - "integrity" "sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz" - "version" "6.13.0" - -"babel-plugin-syntax-trailing-function-commas@^6.22.0": - "integrity" "sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz" - "version" "6.22.0" - -"babel-plugin-transform-async-to-generator@^6.22.0": - "integrity" "sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz" - "version" "6.24.1" - dependencies: - "babel-helper-remap-async-to-generator" "^6.24.1" - "babel-plugin-syntax-async-functions" "^6.8.0" - "babel-runtime" "^6.22.0" - -"babel-plugin-transform-es2015-arrow-functions@^6.22.0": - "integrity" "sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz" - "version" "6.22.0" - dependencies: - "babel-runtime" "^6.22.0" - -"babel-plugin-transform-es2015-block-scoped-functions@^6.22.0": - "integrity" "sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz" - "version" "6.22.0" - dependencies: - "babel-runtime" "^6.22.0" - -"babel-plugin-transform-es2015-block-scoping@^6.23.0": - "integrity" "sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz" - "version" "6.26.0" - 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" - -"babel-plugin-transform-es2015-classes@^6.23.0": - "integrity" "sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz" - "version" "6.24.1" - 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" - -"babel-plugin-transform-es2015-computed-properties@^6.22.0": - "integrity" "sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz" - "version" "6.24.1" - dependencies: - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" - -"babel-plugin-transform-es2015-destructuring@^6.23.0": - "integrity" "sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz" - "version" "6.23.0" - dependencies: - "babel-runtime" "^6.22.0" - -"babel-plugin-transform-es2015-duplicate-keys@^6.22.0": - "integrity" "sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz" - "version" "6.24.1" - dependencies: - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" - -"babel-plugin-transform-es2015-for-of@^6.23.0": - "integrity" "sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz" - "version" "6.23.0" - dependencies: - "babel-runtime" "^6.22.0" - -"babel-plugin-transform-es2015-function-name@^6.22.0": - "integrity" "sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz" - "version" "6.24.1" - dependencies: - "babel-helper-function-name" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" - -"babel-plugin-transform-es2015-literals@^6.22.0": - "integrity" "sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz" - "version" "6.22.0" - dependencies: - "babel-runtime" "^6.22.0" - -"babel-plugin-transform-es2015-modules-amd@^6.22.0", "babel-plugin-transform-es2015-modules-amd@^6.24.1": - "integrity" "sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz" - "version" "6.24.1" - dependencies: - "babel-plugin-transform-es2015-modules-commonjs" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" - -"babel-plugin-transform-es2015-modules-commonjs@^6.23.0", "babel-plugin-transform-es2015-modules-commonjs@^6.24.1": - "integrity" "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz" - "version" "6.26.2" - dependencies: - "babel-plugin-transform-strict-mode" "^6.24.1" - "babel-runtime" "^6.26.0" - "babel-template" "^6.26.0" - "babel-types" "^6.26.0" - -"babel-plugin-transform-es2015-modules-systemjs@^6.23.0": - "integrity" "sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz" - "version" "6.24.1" - dependencies: - "babel-helper-hoist-variables" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" - -"babel-plugin-transform-es2015-modules-umd@^6.23.0": - "integrity" "sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz" - "version" "6.24.1" - dependencies: - "babel-plugin-transform-es2015-modules-amd" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" - -"babel-plugin-transform-es2015-object-super@^6.22.0": - "integrity" "sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz" - "version" "6.24.1" - dependencies: - "babel-helper-replace-supers" "^6.24.1" - "babel-runtime" "^6.22.0" - -"babel-plugin-transform-es2015-parameters@^6.23.0": - "integrity" "sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz" - "version" "6.24.1" - 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": - "integrity" "sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz" - "version" "6.24.1" - dependencies: - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" - -"babel-plugin-transform-es2015-spread@^6.22.0": - "integrity" "sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz" - "version" "6.22.0" - dependencies: - "babel-runtime" "^6.22.0" - -"babel-plugin-transform-es2015-sticky-regex@^6.22.0": - "integrity" "sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz" - "version" "6.24.1" - 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": - "integrity" "sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz" - "version" "6.22.0" - dependencies: - "babel-runtime" "^6.22.0" - -"babel-plugin-transform-es2015-typeof-symbol@^6.23.0": - "integrity" "sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz" - "version" "6.23.0" - dependencies: - "babel-runtime" "^6.22.0" - -"babel-plugin-transform-es2015-unicode-regex@^6.22.0": - "integrity" "sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz" - "version" "6.24.1" - 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": - "integrity" "sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz" - "version" "6.24.1" - 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-regenerator@^6.22.0": - "integrity" "sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz" - "version" "6.26.0" - dependencies: - "regenerator-transform" "^0.10.0" - -"babel-plugin-transform-strict-mode@^6.24.1": - "integrity" "sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz" - "version" "6.24.1" - dependencies: - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" - -"babel-preset-env@^1.7.0": - "integrity" "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==" - "resolved" "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz" - "version" "1.7.0" - 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" - -"babel-register@^6.26.0": - "integrity" "sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==" - "resolved" "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz" - "version" "6.26.0" - 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" - "mkdirp" "^0.5.1" - "source-map-support" "^0.4.15" - -"babel-runtime@^6.18.0", "babel-runtime@^6.22.0", "babel-runtime@^6.26.0": - "integrity" "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==" - "resolved" "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz" - "version" "6.26.0" - dependencies: - "core-js" "^2.4.0" - "regenerator-runtime" "^0.11.0" - -"babel-template@^6.24.1", "babel-template@^6.26.0": - "integrity" "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==" - "resolved" "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz" - "version" "6.26.0" - 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": - "integrity" "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==" - "resolved" "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz" - "version" "6.26.0" - 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": - "integrity" "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==" - "resolved" "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz" - "version" "6.26.0" - dependencies: - "babel-runtime" "^6.26.0" - "esutils" "^2.0.2" - "lodash" "^4.17.4" - "to-fast-properties" "^1.0.3" - -"babelify@^7.3.0": - "integrity" "sha512-vID8Fz6pPN5pJMdlUnNFSfrlcx5MUule4k9aKs/zbZPyXxMTcRrB0M4Tarw22L8afr8eYSWxDPYCob3TdrqtlA==" - "resolved" "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz" - "version" "7.3.0" - dependencies: - "babel-core" "^6.0.14" - "object-assign" "^4.0.0" - -"babylon@^6.18.0": - "integrity" "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - "resolved" "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz" - "version" "6.18.0" - -"backoff@^2.5.0": - "integrity" "sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==" - "resolved" "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz" - "version" "2.5.0" - dependencies: - "precond" "0.2" - -"balanced-match@^1.0.0": - "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - "version" "1.0.2" - -"base-x@^3.0.2", "base-x@^3.0.8": - "integrity" "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==" - "resolved" "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz" - "version" "3.0.9" - dependencies: - "safe-buffer" "^5.0.1" - -"base@^0.11.1": - "integrity" "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==" - "resolved" "https://registry.npmjs.org/base/-/base-0.11.2.tgz" - "version" "0.11.2" - 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" - -"base64-js@^1.0.2", "base64-js@^1.3.1": - "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - "version" "1.5.1" - -"base64-sol@1.0.1": - "integrity" "sha512-ld3cCNMeXt4uJXmLZBHFGMvVpK9KsLVEhPpFRXnvSVAqABKbuNZg/+dsq3NuM+wxFLb/UrVkz7m1ciWmkMfTbg==" - "resolved" "https://registry.npmjs.org/base64-sol/-/base64-sol-1.0.1.tgz" - "version" "1.0.1" - -"bcrypt-pbkdf@^1.0.0": - "integrity" "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=" - "resolved" "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "tweetnacl" "^0.14.3" - -"bech32@^1.1.3", "bech32@1.1.4": - "integrity" "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" - "resolved" "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz" - "version" "1.1.4" - -"big-integer@1.6.36": - "integrity" "sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg==" - "resolved" "https://registry.npmjs.org/big-integer/-/big-integer-1.6.36.tgz" - "version" "1.6.36" - -"big.js@^5.2.2": - "integrity" "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - "resolved" "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" - "version" "5.2.2" - -"big.js@^6.0.3": - "integrity" "sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==" - "resolved" "https://registry.npmjs.org/big.js/-/big.js-6.2.1.tgz" - "version" "6.2.1" - -"bigint-crypto-utils@^3.0.23": - "integrity" "sha512-+VMV9Laq8pXLBKKKK49nOoq9bfR3j7NNQAtbA617a4nw9bVLo8rsqkKMBgM2AJWlNX9fEIyYaYX+d0laqYV4tw==" - "resolved" "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.1.8.tgz" - "version" "3.1.8" - dependencies: - "bigint-mod-arith" "^3.1.0" - -"bigint-mod-arith@^3.1.0": - "integrity" "sha512-nx8J8bBeiRR+NlsROFH9jHswW5HO8mgfOSqW0AmjicMMvaONDa8AO+5ViKDUUNytBPWiwfvZP4/Bj4Y3lUfvgQ==" - "resolved" "https://registry.npmjs.org/bigint-mod-arith/-/bigint-mod-arith-3.1.2.tgz" - "version" "3.1.2" - -"bignumber.js@*", "bignumber.js@^7.2.1": - "integrity" "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==" - "resolved" "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz" - "version" "7.2.1" - -"bignumber.js@^9.0.0": - "integrity" "sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==" - "resolved" "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz" - "version" "9.0.2" - -"bignumber.js@^9.0.1": - "integrity" "sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==" - "resolved" "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz" - "version" "9.0.2" - -"binary-extensions@^2.0.0": - "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - "version" "2.2.0" - -"bindings@^1.5.0": - "integrity" "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==" - "resolved" "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" - "version" "1.5.0" - dependencies: - "file-uri-to-path" "1.0.0" - -"bip39@2.5.0": - "integrity" "sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA==" - "resolved" "https://registry.npmjs.org/bip39/-/bip39-2.5.0.tgz" - "version" "2.5.0" - dependencies: - "create-hash" "^1.1.0" - "pbkdf2" "^3.0.9" - "randombytes" "^2.0.1" - "safe-buffer" "^5.0.1" - "unorm" "^1.3.3" - -"bip66@^1.1.5": - "integrity" "sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI=" - "resolved" "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz" - "version" "1.1.5" - dependencies: - "safe-buffer" "^5.0.1" - -"blakejs@^1.1.0": - "integrity" "sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg==" - "resolved" "https://registry.npmjs.org/blakejs/-/blakejs-1.1.1.tgz" - "version" "1.1.1" - -"bluebird@^3.5.0", "bluebird@^3.5.2": - "integrity" "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - "resolved" "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" - "version" "3.7.2" - -"bn.js@^4.0.0", "bn.js@^4.1.0", "bn.js@^4.11.0", "bn.js@^4.11.6", "bn.js@^4.11.8", "bn.js@^4.11.9": - "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - "version" "4.12.0" - -"bn.js@^4.10.0", "bn.js@^4.11.1", "bn.js@^4.4.0", "bn.js@^4.8.0": - "version" "4.11.9" - -"bn.js@^5.0.0": - "integrity" "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz" - "version" "5.2.0" - -"bn.js@^5.1.1": - "integrity" "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz" - "version" "5.2.0" - -"bn.js@^5.1.2": - "integrity" "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz" - "version" "5.2.0" - -"bn.js@^5.1.3": - "integrity" "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" - "version" "5.2.1" - -"bn.js@^5.2.0": - "integrity" "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz" - "version" "5.2.0" - -"bn.js@^5.2.1": - "integrity" "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" - "version" "5.2.1" - -"bn.js@4.11.6": - "integrity" "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz" - "version" "4.11.6" - -"body-parser@^1.16.0", "body-parser@1.20.1": - "integrity" "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==" - "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" - "version" "1.20.1" - dependencies: - "bytes" "3.1.2" - "content-type" "~1.0.4" - "debug" "2.6.9" - "depd" "2.0.0" - "destroy" "1.2.0" - "http-errors" "2.0.0" - "iconv-lite" "0.4.24" - "on-finished" "2.4.1" - "qs" "6.11.0" - "raw-body" "2.5.1" - "type-is" "~1.6.18" - "unpipe" "1.0.0" - -"body-parser@1.19.0": - "version" "1.19.0" - dependencies: - "bytes" "3.1.0" - "content-type" "~1.0.4" - "debug" "2.6.9" - "depd" "~1.1.2" - "http-errors" "1.7.2" - "iconv-lite" "0.4.24" - "on-finished" "~2.3.0" - "qs" "6.7.0" - "raw-body" "2.4.0" - "type-is" "~1.6.17" - -"boolbase@^1.0.0": - "integrity" "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - "resolved" "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" - "version" "1.0.0" - -"brace-expansion@^1.1.7": - "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - "version" "1.1.11" - dependencies: - "balanced-match" "^1.0.0" - "concat-map" "0.0.1" - -"brace-expansion@^2.0.1": - "integrity" "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "balanced-match" "^1.0.0" - -"braces@^2.3.1": - "integrity" "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==" - "resolved" "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" - "version" "2.3.2" - 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": - "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" - "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "fill-range" "^7.0.1" - -"brorand@^1.0.1", "brorand@^1.1.0": - "integrity" "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - "resolved" "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" - "version" "1.1.0" - -"browser-level@^1.0.1": - "integrity" "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==" - "resolved" "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "abstract-level" "^1.0.2" - "catering" "^2.1.1" - "module-error" "^1.0.2" - "run-parallel-limit" "^1.1.0" - -"browser-pack@^6.0.1": - "integrity" "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==" - "resolved" "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "combine-source-map" "~0.8.0" - "defined" "^1.0.0" - "JSONStream" "^1.0.3" - "safe-buffer" "^5.1.1" - "through2" "^2.0.0" - "umd" "^3.0.0" - -"browser-resolve@^2.0.0": - "integrity" "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==" - "resolved" "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "resolve" "^1.17.0" - -"browser-stdout@1.3.1": - "integrity" "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" - "resolved" "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" - "version" "1.3.1" - -"browserify-aes@^1.0.0", "browserify-aes@^1.0.4", "browserify-aes@^1.0.6", "browserify-aes@^1.2.0": - "integrity" "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==" - "resolved" "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "buffer-xor" "^1.0.3" - "cipher-base" "^1.0.0" - "create-hash" "^1.1.0" - "evp_bytestokey" "^1.0.3" - "inherits" "^2.0.1" - "safe-buffer" "^5.0.1" - -"browserify-cipher@^1.0.0": - "integrity" "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==" - "resolved" "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "browserify-aes" "^1.0.4" - "browserify-des" "^1.0.0" - "evp_bytestokey" "^1.0.0" - -"browserify-des@^1.0.0": - "integrity" "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==" - "resolved" "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "cipher-base" "^1.0.1" - "des.js" "^1.0.0" - "inherits" "^2.0.1" - "safe-buffer" "^5.1.2" - -"browserify-rsa@^4.0.0", "browserify-rsa@^4.0.1": - "integrity" "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==" - "resolved" "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "bn.js" "^5.0.0" - "randombytes" "^2.0.1" - -"browserify-sign@^4.0.0": - "integrity" "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==" - "resolved" "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz" - "version" "4.2.1" - 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.2.0": - "integrity" "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==" - "resolved" "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz" - "version" "0.2.0" - dependencies: - "pako" "~1.0.5" - -"browserify@^17.0.0", "browserify@>= 10.x": - "integrity" "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==" - "resolved" "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz" - "version" "17.0.0" - dependencies: - "assert" "^1.4.0" - "browser-pack" "^6.0.1" - "browser-resolve" "^2.0.0" - "browserify-zlib" "~0.2.0" - "buffer" "~5.2.1" - "cached-path-relative" "^1.0.0" - "concat-stream" "^1.6.0" - "console-browserify" "^1.1.0" - "constants-browserify" "~1.0.0" - "crypto-browserify" "^3.0.0" - "defined" "^1.0.0" - "deps-sort" "^2.0.1" - "domain-browser" "^1.2.0" - "duplexer2" "~0.1.2" - "events" "^3.0.0" - "glob" "^7.1.0" - "has" "^1.0.0" - "htmlescape" "^1.1.0" - "https-browserify" "^1.0.0" - "inherits" "~2.0.1" - "insert-module-globals" "^7.2.1" - "JSONStream" "^1.0.3" - "labeled-stream-splicer" "^2.0.0" - "mkdirp-classic" "^0.5.2" - "module-deps" "^6.2.3" - "os-browserify" "~0.3.0" - "parents" "^1.0.1" - "path-browserify" "^1.0.0" - "process" "~0.11.0" - "punycode" "^1.3.2" - "querystring-es3" "~0.2.0" - "read-only-stream" "^2.0.0" - "readable-stream" "^2.0.2" - "resolve" "^1.1.4" - "shasum-object" "^1.0.0" - "shell-quote" "^1.6.1" - "stream-browserify" "^3.0.0" - "stream-http" "^3.0.0" - "string_decoder" "^1.1.1" - "subarg" "^1.0.0" - "syntax-error" "^1.1.1" - "through2" "^2.0.0" - "timers-browserify" "^1.0.1" - "tty-browserify" "0.0.1" - "url" "~0.11.0" - "util" "~0.12.0" - "vm-browserify" "^1.0.0" - "xtend" "^4.0.0" - -"browserslist@^3.2.6": - "integrity" "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==" - "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz" - "version" "3.2.8" - dependencies: - "caniuse-lite" "^1.0.30000844" - "electron-to-chromium" "^1.3.47" - -"bs58@^4.0.0", "bs58@^4.0.1": - "integrity" "sha1-vhYedsNU9veIrkBx9j806MTwpCo=" - "resolved" "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "base-x" "^3.0.2" - -"bs58check@^2.1.2": - "integrity" "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==" - "resolved" "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz" - "version" "2.1.2" - dependencies: - "bs58" "^4.0.0" - "create-hash" "^1.1.0" - "safe-buffer" "^5.1.2" - -"buffer-from@^1.0.0": - "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" - "version" "1.1.2" - -"buffer-to-arraybuffer@^0.0.5": - "integrity" "sha1-YGSkD6dutDxyOrqe+PbhIW0QURo=" - "resolved" "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz" - "version" "0.0.5" - -"buffer-xor@^1.0.3": - "integrity" "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - "resolved" "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" - "version" "1.0.3" - -"buffer-xor@^2.0.1": - "integrity" "sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ==" - "resolved" "https://registry.npmjs.org/buffer-xor/-/buffer-xor-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "safe-buffer" "^5.1.1" - -"buffer@^5.0.5", "buffer@^5.2.1", "buffer@^5.5.0", "buffer@^5.6.0": - "integrity" "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - "version" "5.7.1" - dependencies: - "base64-js" "^1.3.1" - "ieee754" "^1.1.13" - -"buffer@^6.0.3": - "integrity" "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" - "version" "6.0.3" - dependencies: - "base64-js" "^1.3.1" - "ieee754" "^1.2.1" - -"buffer@~5.2.1": - "integrity" "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz" - "version" "5.2.1" - dependencies: - "base64-js" "^1.0.2" - "ieee754" "^1.1.4" - -"buffer@6.0.3": - "integrity" "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" - "version" "6.0.3" - dependencies: - "base64-js" "^1.3.1" - "ieee754" "^1.2.1" - -"bufferutil@^4.0.1": - "integrity" "sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==" - "resolved" "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz" - "version" "4.0.5" - dependencies: - "node-gyp-build" "^4.3.0" - -"bufio@^1.0.7": - "integrity" "sha512-UlFk8z/PwdhYQTXSQQagwGAdtRI83gib2n4uy4rQnenxUM2yQi8lBDzF230BNk+3wAoZDxYRoBwVVUPgHa9MCA==" - "resolved" "https://registry.npmjs.org/bufio/-/bufio-1.2.0.tgz" - "version" "1.2.0" - -"builtin-status-codes@^3.0.0": - "integrity" "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" - "resolved" "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" - "version" "3.0.0" - -"busboy@^1.6.0": - "integrity" "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==" - "resolved" "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" - "version" "1.6.0" - dependencies: - "streamsearch" "^1.1.0" - -"bytes@3.1.0": - "version" "3.1.0" - -"bytes@3.1.2": - "integrity" "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" - "version" "3.1.2" - -"bytewise-core@^1.2.2": - "integrity" "sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==" - "resolved" "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz" - "version" "1.2.3" - dependencies: - "typewise-core" "^1.2" - -"bytewise@~1.1.0": - "integrity" "sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==" - "resolved" "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "bytewise-core" "^1.2.2" - "typewise" "^1.0.3" - -"cache-base@^1.0.1": - "integrity" "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==" - "resolved" "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" - "version" "1.0.1" - 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-request@^6.0.0": - "integrity" "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==" - "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" - "version" "6.1.0" - 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" - -"cached-path-relative@^1.0.0", "cached-path-relative@^1.0.2": - "integrity" "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==" - "resolved" "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz" - "version" "1.1.0" - -"cachedown@1.0.0": - "integrity" "sha512-t+yVk82vQWCJF3PsWHMld+jhhjkkWjcAzz8NbFx1iULOXWl8Tm/FdM4smZNVw3MRr0X+lVTx9PKzvEn4Ng19RQ==" - "resolved" "https://registry.npmjs.org/cachedown/-/cachedown-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "abstract-leveldown" "^2.4.1" - "lru-cache" "^3.2.0" - -"call-bind@^1.0.0", "call-bind@^1.0.2": - "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" - "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "function-bind" "^1.1.1" - "get-intrinsic" "^1.0.2" - -"caller-callsite@^2.0.0": - "integrity" "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=" - "resolved" "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "callsites" "^2.0.0" - -"caller-path@^2.0.0": - "integrity" "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=" - "resolved" "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "caller-callsite" "^2.0.0" - -"callsites@^2.0.0": - "integrity" "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" - "resolved" "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" - "version" "2.0.0" - -"callsites@^3.0.0": - "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - "version" "3.1.0" - -"camel-case@^3.0.0": - "integrity" "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=" - "resolved" "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "no-case" "^2.2.0" - "upper-case" "^1.1.1" - -"camelcase@^3.0.0": - "integrity" "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz" - "version" "3.0.0" - -"camelcase@^4.1.0": - "integrity" "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz" - "version" "4.1.0" - -"camelcase@^5.0.0": - "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - "version" "5.3.1" - -"camelcase@^6.0.0": - "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - "version" "6.3.0" - -"caniuse-lite@^1.0.30000844": - "version" "1.0.30001174" - -"caseless@^0.12.0", "caseless@~0.12.0": - "integrity" "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - "resolved" "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" - "version" "0.12.0" - -"catering@^2.1.0", "catering@^2.1.1": - "integrity" "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==" - "resolved" "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz" - "version" "2.1.1" - -"cbor@^5.0.2", "cbor@^5.2.0": - "integrity" "sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A==" - "resolved" "https://registry.npmjs.org/cbor/-/cbor-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "bignumber.js" "^9.0.1" - "nofilter" "^1.0.4" - -"cbor@^8.0.0": - "integrity" "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==" - "resolved" "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz" - "version" "8.1.0" - dependencies: - "nofilter" "^3.1.0" - -"chai-bn@^0.2.1": - "integrity" "sha512-MzjelH0p8vWn65QKmEq/DLBG1Hle4WeyqT79ANhXZhn/UxRWO0OogkAxi5oGGtfzwU9bZR8mvbvYdoqNVWQwFg==" - "resolved" "https://registry.npmjs.org/chai-bn/-/chai-bn-0.2.2.tgz" - "version" "0.2.2" - -"chai@^4.0.0", "chai@^4.2.0", "chai@^4.3.4": - "integrity" "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==" - "resolved" "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz" - "version" "4.3.4" - dependencies: - "assertion-error" "^1.1.0" - "check-error" "^1.0.2" - "deep-eql" "^3.0.1" - "get-func-name" "^2.0.0" - "pathval" "^1.1.1" - "type-detect" "^4.0.5" - -"chalk@^1.1.3": - "integrity" "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" - "version" "1.1.3" - 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": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^2.1.0", "chalk@^2.4.2": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^2.3.2": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^2.4.1": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^4.0.0", "chalk@^4.1.0", "chalk@^4.1.2", "chalk@4.x": - "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" - -"change-case@3.0.2": - "integrity" "sha512-Mww+SLF6MZ0U6kdg11algyKd5BARbyM4TbFBepwowYSR5ClfQGCGtxNXgykpN0uF/bstWeaGDT4JWaDh8zWAHA==" - "resolved" "https://registry.npmjs.org/change-case/-/change-case-3.0.2.tgz" - "version" "3.0.2" - 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" - -"chardet@^0.7.0": - "integrity" "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - "resolved" "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" - "version" "0.7.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== + +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== + +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== + +array-back@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz" + integrity sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs= + dependencies: + typical "^2.6.0" + +array-back@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz" + integrity sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs= + dependencies: + typical "^2.6.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== + 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== + +array-back@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-includes@^3.1.3, array-includes@^3.1.4: + version "3.1.4" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz" + integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + is-string "^1.0.7" + +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-uniq@1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +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== + +array.prototype.flat@^1.2.5: + version "1.2.5" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz" + integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + +array.prototype.flatmap@^1.2.5: + version "1.2.5" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz" + integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.19.0" + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@^1.0.0, assert-plus@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.4.0: + version "1.5.0" + resolved "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +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== + +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== + +ast-parents@^0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/ast-parents/-/ast-parents-0.0.1.tgz" + integrity sha1-UI/Q8F0MSHddnszaLhdEIyYejdM= + +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 sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +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== + +async-eventemitter@^0.2.2: + version "0.2.4" + resolved "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz" + integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== + dependencies: + async "^2.4.0" + +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: + 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== + +async@^1.4.2: + version "1.5.2" + resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz" + integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== + +async@^2.0.1, async@^2.1.2, async@^2.5.0, async@^2.6.1, 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" + +async@^2.4.0: + version "2.6.4" + resolved "https://registry.npmjs.org/async/-/async-2.6.4.tgz" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" + +async@1.x: + version "1.5.2" + resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +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== + +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== + +auto-bind@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz" + integrity sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ== + +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== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + +axe-core@^4.3.5: + version "4.3.5" + resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz" + integrity sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA== + +axios@*, axios@^1.3.4: + version "1.3.4" + resolved "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz" + integrity sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.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== + dependencies: + follow-redirects "^1.14.0" + +axios@^0.27.2: + version "0.27.2" + resolved "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz" + integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== + dependencies: + follow-redirects "^1.14.9" + form-data "^4.0.0" + +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== + +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: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +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: + 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" + +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" + +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" + +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" + +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" + +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: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.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" + +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" + +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: + babel-runtime "^6.22.0" + babel-types "^6.24.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== + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.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== + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +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" + +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" + +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-runtime "^6.22.0" + babel-template "^6.24.1" + +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-runtime "^6.22.0" + +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: + babel-runtime "^6.22.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== + +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== + +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: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.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== + dependencies: + babel-runtime "^6.22.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" + +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" + +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-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" + +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" + +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: + babel-runtime "^6.22.0" + +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" + +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: + babel-runtime "^6.22.0" + +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" + +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: + babel-runtime "^6.22.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== + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +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: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.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== + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +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: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +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-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-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" + +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: + 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" + +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: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +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: + 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" + +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" + +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" + +base64-js@^1.0.2, 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== + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +bech32@^1.1.3, bech32@1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +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.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@*, 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: + version "9.0.2" + resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz" + integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== + +bignumber.js@^9.0.1: + version "9.0.2" + resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz" + integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== + +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" + +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" + +bip66@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz" + integrity sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI= + dependencies: + safe-buffer "^5.0.1" + +blakejs@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/blakejs/-/blakejs-1.1.1.tgz" + integrity sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg== + +bluebird@^3.5.0, bluebird@^3.5.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.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^4.10.0, bn.js@^4.11.1, bn.js@^4.4.0, bn.js@^4.8.0: + version "4.11.9" + +bn.js@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + +bn.js@^5.1.1: + version "5.2.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + +bn.js@^5.1.2: + version "5.2.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + +bn.js@^5.1.3: + version "5.2.1" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +bn.js@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + +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== + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz" + integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU= + +body-parser@^1.16.0, body-parser@1.20.1: + 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" + +body-parser@1.19.0: + version "1.19.0" + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +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== + +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: + 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" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +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-pack@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz" + integrity sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA== + dependencies: + combine-source-map "~0.8.0" + defined "^1.0.0" + JSONStream "^1.0.3" + safe-buffer "^5.1.1" + through2 "^2.0.0" + umd "^3.0.0" + +browser-resolve@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz" + integrity sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ== + dependencies: + resolve "^1.17.0" + +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.0.6, 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-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.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" + +browserify@^17.0.0, "browserify@>= 10.x": + version "17.0.0" + resolved "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz" + integrity sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w== + dependencies: + assert "^1.4.0" + browser-pack "^6.0.1" + browser-resolve "^2.0.0" + browserify-zlib "~0.2.0" + buffer "~5.2.1" + cached-path-relative "^1.0.0" + concat-stream "^1.6.0" + console-browserify "^1.1.0" + constants-browserify "~1.0.0" + crypto-browserify "^3.0.0" + defined "^1.0.0" + deps-sort "^2.0.1" + domain-browser "^1.2.0" + duplexer2 "~0.1.2" + events "^3.0.0" + glob "^7.1.0" + has "^1.0.0" + htmlescape "^1.1.0" + https-browserify "^1.0.0" + inherits "~2.0.1" + insert-module-globals "^7.2.1" + JSONStream "^1.0.3" + labeled-stream-splicer "^2.0.0" + mkdirp-classic "^0.5.2" + module-deps "^6.2.3" + os-browserify "~0.3.0" + parents "^1.0.1" + path-browserify "^1.0.0" + process "~0.11.0" + punycode "^1.3.2" + querystring-es3 "~0.2.0" + read-only-stream "^2.0.0" + readable-stream "^2.0.2" + resolve "^1.1.4" + shasum-object "^1.0.0" + shell-quote "^1.6.1" + stream-browserify "^3.0.0" + stream-http "^3.0.0" + string_decoder "^1.1.1" + subarg "^1.0.0" + syntax-error "^1.1.1" + through2 "^2.0.0" + timers-browserify "^1.0.1" + tty-browserify "0.0.1" + url "~0.11.0" + util "~0.12.0" + vm-browserify "^1.0.0" + xtend "^4.0.0" + +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" + +bs58@^4.0.0, bs58@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" + integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= + 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" + +buffer-from@^1.0.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== + +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 sha1-YGSkD6dutDxyOrqe+PbhIW0QURo= + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +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@^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: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +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.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz" + integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + +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" + +bufferutil@^4.0.1: + version "4.0.5" + resolved "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz" + integrity sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A== + 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-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +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" + +bytes@3.1.0: + version "3.1.0" + +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" + +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-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" + +cached-path-relative@^1.0.0, cached-path-relative@^1.0.2: + version "1.1.0" + resolved "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz" + integrity sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA== + +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" + +call-bind@^1.0.0, 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" + +callsites@^3.0.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 sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= + dependencies: + no-case "^2.2.0" + upper-case "^1.1.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.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: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.0.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30000844: + version "1.0.30001174" + +caseless@^0.12.0, caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +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.0.2, 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.0.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" + +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.0.0, chai@^4.2.0, chai@^4.3.4: + version "4.3.4" + resolved "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz" + integrity sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" + get-func-name "^2.0.0" + pathval "^1.1.1" + type-detect "^4.0.5" + +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: + 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@^2.3.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@^2.4.1: + 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@^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@^4.0.0, chalk@^4.1.0, chalk@^4.1.2, chalk@4.x: + 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" + +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" "charenc@>= 0.0.1": - "integrity" "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" - "resolved" "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" - "version" "0.0.2" - -"check-error@^1.0.2": - "integrity" "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=" - "resolved" "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz" - "version" "1.0.2" - -"checkpoint-store@^1.1.0": - "integrity" "sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg==" - "resolved" "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "functional-red-black-tree" "^1.0.1" - -"cheerio-select@^2.1.0": - "integrity" "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==" - "resolved" "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz" - "version" "2.1.0" - 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": - "integrity" "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==" - "resolved" "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz" - "version" "1.0.0-rc.12" - 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.4.0", "chokidar@^3.5.2", "chokidar@^3.5.3", "chokidar@3.5.3": - "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" - "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" - "version" "3.5.3" - dependencies: - "anymatch" "~3.1.2" - "braces" "~3.0.2" - "glob-parent" "~5.1.2" - "is-binary-path" "~2.1.0" - "is-glob" "~4.0.1" - "normalize-path" "~3.0.0" - "readdirp" "~3.6.0" + version "0.0.2" + resolved "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" + integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= + +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz" + integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= + +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.4.0, chokidar@^3.5.2, chokidar@^3.5.3, 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" - -"chokidar@3.3.0": - "integrity" "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==" - "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz" - "version" "3.3.0" - 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" + fsevents "~2.3.2" + +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" - -"chownr@^1.1.1": - "version" "1.1.4" - -"chownr@^1.1.4": - "integrity" "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - "resolved" "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" - "version" "1.1.4" - -"ci-info@^2.0.0": - "integrity" "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" - "version" "2.0.0" - -"cids@^0.7.1": - "integrity" "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==" - "resolved" "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz" - "version" "0.7.5" - dependencies: - "buffer" "^5.5.0" - "class-is" "^1.1.0" - "multibase" "~0.6.0" - "multicodec" "^1.0.0" - "multihashes" "~0.4.15" - -"cipher-base@^1.0.0", "cipher-base@^1.0.1", "cipher-base@^1.0.3": - "integrity" "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==" - "resolved" "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "inherits" "^2.0.1" - "safe-buffer" "^5.0.1" - -"class-is@^1.1.0": - "integrity" "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" - "resolved" "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz" - "version" "1.1.0" - -"class-utils@^0.3.5": - "integrity" "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==" - "resolved" "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" - "version" "0.3.6" - 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": - "integrity" "sha512-qw5B31ANxSluWz9xBzklRWTUAJ1SXIdaVKTVS7HcTGKOAmExx65Wo5BUICW+YGORe2FOUaDghoI9ZDxj82QcFg==" - "resolved" "https://registry.npmjs.org/classic-level/-/classic-level-1.2.0.tgz" - "version" "1.2.0" - 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" - -"clean-stack@^2.0.0": - "integrity" "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - "resolved" "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" - "version" "2.2.0" - -"cli-cursor@^2.1.0": - "integrity" "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=" - "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "restore-cursor" "^2.0.0" - -"cli-table3@^0.5.0": - "integrity" "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==" - "resolved" "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz" - "version" "0.5.1" - dependencies: - "object-assign" "^4.1.0" - "string-width" "^2.1.1" + fsevents "~2.1.1" + +chownr@^1.1.1: + version "1.1.4" + +chownr@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +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== + +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" + +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" + +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-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" + colors "^1.1.2" -"cli-table3@^0.6.0", "cli-table3@^0.6.2": - "integrity" "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==" - "resolved" "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz" - "version" "0.6.3" +cli-table3@^0.6.0, cli-table3@^0.6.2: + version "0.6.3" + resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz" + integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== dependencies: - "string-width" "^4.2.0" + string-width "^4.2.0" optionalDependencies: "@colors/colors" "1.5.0" -"cli-width@^2.0.0": - "integrity" "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" - "resolved" "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz" - "version" "2.2.1" - -"cliui@^3.2.0": - "integrity" "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "string-width" "^1.0.1" - "strip-ansi" "^3.0.1" - "wrap-ansi" "^2.0.0" - -"cliui@^5.0.0": - "integrity" "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "string-width" "^3.1.0" - "strip-ansi" "^5.2.0" - "wrap-ansi" "^5.1.0" - -"cliui@^7.0.2": - "integrity" "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" - "version" "7.0.4" - dependencies: - "string-width" "^4.2.0" - "strip-ansi" "^6.0.0" - "wrap-ansi" "^7.0.0" - -"clone-response@^1.0.2": - "integrity" "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=" - "resolved" "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "mimic-response" "^1.0.0" - -"clone@^2.0.0", "clone@2.1.2": - "integrity" "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" - "resolved" "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz" - "version" "2.1.2" - -"code-point-at@^1.0.0": - "integrity" "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==" - "resolved" "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" - "version" "1.1.0" - -"collection-visit@^1.0.0": - "integrity" "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==" - "resolved" "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "map-visit" "^1.0.0" - "object-visit" "^1.0.0" - -"color-convert@^1.9.0": - "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - "version" "1.9.3" - dependencies: - "color-name" "1.1.3" - -"color-convert@^2.0.1": - "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "color-name" "~1.1.4" - -"color-name@~1.1.4": - "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - "version" "1.1.4" - -"color-name@1.1.3": - "integrity" "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - "version" "1.1.3" - -"colors@^1.1.2", "colors@^1.4.0", "colors@1.4.0": - "integrity" "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" - "resolved" "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz" - "version" "1.4.0" - -"combine-source-map@^0.8.0", "combine-source-map@~0.8.0": - "integrity" "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=" - "resolved" "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz" - "version" "0.8.0" - dependencies: - "convert-source-map" "~1.1.0" - "inline-source-map" "~0.6.0" - "lodash.memoize" "~3.0.3" - "source-map" "~0.5.3" - -"combined-stream@^1.0.6", "combined-stream@^1.0.8", "combined-stream@~1.0.6": - "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" - "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - "version" "1.0.8" - dependencies: - "delayed-stream" "~1.0.0" - -"command-exists@^1.2.8": - "integrity" "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" - "resolved" "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" - "version" "1.2.9" - -"command-line-args@^4.0.7": - "integrity" "sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA==" - "resolved" "https://registry.npmjs.org/command-line-args/-/command-line-args-4.0.7.tgz" - "version" "4.0.7" - dependencies: - "array-back" "^2.0.0" - "find-replace" "^1.0.3" - "typical" "^2.6.1" - -"command-line-args@^5.1.1": - "integrity" "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==" - "resolved" "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz" - "version" "5.2.1" - dependencies: - "array-back" "^3.1.0" - "find-replace" "^3.0.0" - "lodash.camelcase" "^4.3.0" - "typical" "^4.0.0" - -"command-line-usage@^6.1.0": - "integrity" "sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA==" - "resolved" "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.1.tgz" - "version" "6.1.1" - dependencies: - "array-back" "^4.0.1" - "chalk" "^2.4.2" - "table-layout" "^1.0.1" - "typical" "^5.2.0" - -"commander@^9.4.0": - "integrity" "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==" - "resolved" "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz" - "version" "9.5.0" - -"commander@2.18.0": - "integrity" "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==" - "resolved" "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz" - "version" "2.18.0" - -"commander@3.0.2": - "integrity" "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" - "resolved" "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz" - "version" "3.0.2" - -"compare-versions@^3.6.0": - "integrity" "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==" - "resolved" "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz" - "version" "3.6.0" - -"component-emitter@^1.2.1": - "integrity" "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - "resolved" "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" - "version" "1.3.0" - -"concat-map@0.0.1": - "integrity" "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - "version" "0.0.1" - -"concat-stream@^1.5.1": - "integrity" "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==" - "resolved" "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" - "version" "1.6.2" - dependencies: - "buffer-from" "^1.0.0" - "inherits" "^2.0.3" - "readable-stream" "^2.2.2" - "typedarray" "^0.0.6" - -"concat-stream@^1.6.0", "concat-stream@^1.6.1", "concat-stream@^1.6.2", "concat-stream@~1.6.0": - "integrity" "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==" - "resolved" "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" - "version" "1.6.2" - dependencies: - "buffer-from" "^1.0.0" - "inherits" "^2.0.3" - "readable-stream" "^2.2.2" - "typedarray" "^0.0.6" - -"confusing-browser-globals@^1.0.10": - "integrity" "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==" - "resolved" "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" - "version" "1.0.11" - -"console-browserify@^1.1.0": - "integrity" "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - "resolved" "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz" - "version" "1.2.0" - -"constant-case@^2.0.0": - "integrity" "sha1-QXV2TTidP6nI7NKRhu1gBSQ7akY=" - "resolved" "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "snake-case" "^2.1.0" - "upper-case" "^1.1.1" - -"constants-browserify@~1.0.0": - "integrity" "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" - "resolved" "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" - "version" "1.0.0" - -"content-disposition@0.5.3": - "version" "0.5.3" - dependencies: - "safe-buffer" "5.1.2" - -"content-disposition@0.5.4": - "integrity" "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" - "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" - "version" "0.5.4" - dependencies: - "safe-buffer" "5.2.1" - -"content-hash@^2.5.2": - "integrity" "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==" - "resolved" "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz" - "version" "2.5.2" - dependencies: - "cids" "^0.7.1" - "multicodec" "^0.5.5" - "multihashes" "^0.4.15" - -"content-type@~1.0.4": - "integrity" "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - "resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" - "version" "1.0.4" - -"convert-source-map@^1.1.0": - "integrity" "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz" - "version" "1.8.0" - dependencies: - "safe-buffer" "~5.1.1" - -"convert-source-map@^1.5.1": - "version" "1.7.0" - dependencies: - "safe-buffer" "~5.1.1" - -"convert-source-map@~1.1.0": - "integrity" "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz" - "version" "1.1.3" - -"cookie-signature@1.0.6": - "integrity" "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - "version" "1.0.6" - -"cookie@^0.4.1": - "integrity" "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" - "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz" - "version" "0.4.1" - -"cookie@0.4.0": - "version" "0.4.0" - -"cookie@0.5.0": - "integrity" "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" - "version" "0.5.0" - -"cookiejar@^2.1.1": - "integrity" "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==" - "resolved" "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz" - "version" "2.1.3" - -"copy-descriptor@^0.1.0": - "integrity" "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==" - "resolved" "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" - "version" "0.1.1" - -"core-js-pure@^3.0.1": - "version" "3.8.2" - -"core-js-pure@^3.19.0": - "integrity" "sha512-qsrbIwWSEEYOM7z616jAVgwhuDDtPLwZSpUsU3vyUkHYqKTf/uwOJBZg2V7lMurYWkpVlaVOxBrfX0Q3ppvjfg==" - "resolved" "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.20.0.tgz" - "version" "3.20.0" - -"core-js@^2.4.0", "core-js@^2.5.0": - "integrity" "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz" - "version" "2.6.12" - -"core-util-is@~1.0.0", "core-util-is@1.0.2": - "integrity" "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - "version" "1.0.2" - -"cors@^2.8.1": - "integrity" "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==" - "resolved" "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" - "version" "2.8.5" - dependencies: - "object-assign" "^4" - "vary" "^1" - -"cosmiconfig@^5.0.7": - "integrity" "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" - "version" "5.2.1" - dependencies: - "import-fresh" "^2.0.0" - "is-directory" "^0.3.1" - "js-yaml" "^3.13.1" - "parse-json" "^4.0.0" - -"crc-32@^1.2.0": - "integrity" "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==" - "resolved" "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "exit-on-epipe" "~1.0.1" - "printj" "~1.1.0" - -"create-ecdh@^4.0.0": - "integrity" "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==" - "resolved" "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" - "version" "4.0.4" - 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": - "integrity" "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==" - "resolved" "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "cipher-base" "^1.0.1" - "inherits" "^2.0.1" - "md5.js" "^1.3.4" - "ripemd160" "^2.0.1" - "sha.js" "^2.4.0" - -"create-hmac@^1.1.0", "create-hmac@^1.1.4", "create-hmac@^1.1.7": - "integrity" "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==" - "resolved" "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "cipher-base" "^1.0.3" - "create-hash" "^1.1.0" - "inherits" "^2.0.1" - "ripemd160" "^2.0.0" - "safe-buffer" "^5.0.1" - "sha.js" "^2.4.8" - -"create-require@^1.1.0": - "integrity" "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - "resolved" "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" - "version" "1.1.1" - -"cross-fetch@^2.1.0", "cross-fetch@^2.1.1": - "version" "2.2.3" - dependencies: - "node-fetch" "2.1.2" - "whatwg-fetch" "2.0.4" - -"cross-fetch@^3.1.5": - "integrity" "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==" - "resolved" "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz" - "version" "3.1.5" - dependencies: - "node-fetch" "2.6.7" - -"cross-spawn@^6.0.5": - "integrity" "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" - "version" "6.0.5" - 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.2": - "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - "version" "7.0.3" - dependencies: - "path-key" "^3.1.0" - "shebang-command" "^2.0.0" - "which" "^2.0.1" +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@^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" + +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + +clone@^2.0.0, clone@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + +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== + +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.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-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +colors@^1.1.2, colors@^1.4.0, colors@1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combine-source-map@^0.8.0, combine-source-map@~0.8.0: + version "0.8.0" + resolved "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz" + integrity sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos= + dependencies: + convert-source-map "~1.1.0" + inline-source-map "~0.6.0" + lodash.memoize "~3.0.3" + source-map "~0.5.3" + +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.1" + resolved "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.1.tgz" + integrity sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA== + dependencies: + array-back "^4.0.1" + chalk "^2.4.2" + table-layout "^1.0.1" + typical "^5.2.0" + +commander@^10.0.0: + version "10.0.1" + resolved "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + +commander@^9.4.0: + version "9.5.0" + resolved "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== + +commander@3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz" + integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== + +compare-versions@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz" + integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.1: + 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@^1.6.0, concat-stream@^1.6.1, concat-stream@^1.6.2, concat-stream@~1.6.0: + 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" + +confusing-browser-globals@^1.0.10: + 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== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constant-case@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz" + integrity sha1-QXV2TTidP6nI7NKRhu1gBSQ7akY= + dependencies: + snake-case "^2.1.0" + upper-case "^1.1.1" + +constants-browserify@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +content-disposition@0.5.3: + version "0.5.3" + dependencies: + safe-buffer "5.1.2" + +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.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== + +convert-source-map@^1.1.0: + version "1.8.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@^1.5.1: + version "1.7.0" + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@~1.1.0: + version "1.1.3" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz" + integrity sha1-SCnId+n+SbMWHzvzZziI4gRpmGA= + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz" + integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== + +cookie@0.4.0: + version "0.4.0" + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +cookiejar@^2.1.1: + version "2.1.3" + resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz" + integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== + +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== + +core-js-pure@^3.0.1: + version "3.8.2" + +core-js-pure@^3.19.0: + version "3.20.0" + resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.20.0.tgz" + integrity sha512-qsrbIwWSEEYOM7z616jAVgwhuDDtPLwZSpUsU3vyUkHYqKTf/uwOJBZg2V7lMurYWkpVlaVOxBrfX0Q3ppvjfg== + +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-util-is@~1.0.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 sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cors@^2.8.1: + 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@^8.0.0: + version "8.1.3" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz" + integrity sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw== + 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.0" + resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz" + integrity sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA== + dependencies: + exit-on-epipe "~1.0.1" + printj "~1.1.0" + +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.3" + dependencies: + node-fetch "2.1.2" + whatwg-fetch "2.0.4" + +cross-fetch@^3.1.5: + 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@^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.2: + 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.1": - "integrity" "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" - "resolved" "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" - "version" "0.0.2" - -"crypto-addr-codec@^0.1.7": - "integrity" "sha512-X4hzfBzNhy4mAc3UpiXEC/L0jo5E8wAa9unsnA8nNXYzXjCcGk83hfC5avJWCSGT8V91xMnAS9AKMHmjw5+XCg==" - "resolved" "https://registry.npmjs.org/crypto-addr-codec/-/crypto-addr-codec-0.1.7.tgz" - "version" "0.1.7" - 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.0.0", "crypto-browserify@3.12.0": - "integrity" "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==" - "resolved" "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" - "version" "3.12.0" - dependencies: - "browserify-cipher" "^1.0.0" - "browserify-sign" "^4.0.0" - "create-ecdh" "^4.0.0" - "create-hash" "^1.1.0" - "create-hmac" "^1.1.0" - "diffie-hellman" "^5.0.0" - "inherits" "^2.0.1" - "pbkdf2" "^3.0.3" - "public-encrypt" "^4.0.0" - "randombytes" "^2.0.0" - "randomfill" "^1.0.3" - -"css-select@^5.1.0": - "integrity" "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==" - "resolved" "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "boolbase" "^1.0.0" - "css-what" "^6.1.0" - "domhandler" "^5.0.2" - "domutils" "^3.0.1" - "nth-check" "^2.0.1" - -"css-what@^6.1.0": - "integrity" "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" - "resolved" "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" - "version" "6.1.0" - -"d@^1.0.1", "d@1": - "integrity" "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==" - "resolved" "https://registry.npmjs.org/d/-/d-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "es5-ext" "^0.10.50" - "type" "^1.0.1" - -"damerau-levenshtein@^1.0.7": - "integrity" "sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==" - "resolved" "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz" - "version" "1.0.7" - -"dash-ast@^1.0.0": - "integrity" "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==" - "resolved" "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz" - "version" "1.0.0" - -"dashdash@^1.12.0": - "integrity" "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=" - "resolved" "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" - "version" "1.14.1" - dependencies: - "assert-plus" "^1.0.0" - -"death@^1.1.0": - "integrity" "sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg=" - "resolved" "https://registry.npmjs.org/death/-/death-1.1.0.tgz" - "version" "1.1.0" - -"debug@^2.2.0": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" - dependencies: - "ms" "2.0.0" - -"debug@^2.3.3": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" - dependencies: - "ms" "2.0.0" - -"debug@^2.6.0": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" - dependencies: - "ms" "2.0.0" - -"debug@^2.6.8": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" - dependencies: - "ms" "2.0.0" - -"debug@^2.6.9": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" - dependencies: - "ms" "2.0.0" - -"debug@^3.1.0": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" - dependencies: - "ms" "^2.1.1" - -"debug@^3.2.7": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" - dependencies: - "ms" "^2.1.1" - -"debug@^4.0.1", "debug@^4.1.1", "debug@^4.3.1", "debug@^4.3.2", "debug@^4.3.3", "debug@4", "debug@4.3.4": - "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - "version" "4.3.4" - dependencies: - "ms" "2.1.2" - -"debug@2.6.9": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" - dependencies: - "ms" "2.0.0" + version "0.0.2" + resolved "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" + integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= + +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.0.0, 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" + +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-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== + +d@^1.0.1, d@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.7: + version "1.0.7" + resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz" + integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== + +dash-ast@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz" + integrity sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +death@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/death/-/death-1.1.0.tgz" + integrity sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg= + +debug@^2.2.0: + 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@^2.3.3: + 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@^2.6.0: + 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@^2.6.8: + 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@^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.1.0: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +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" + +debug@^4.0.1, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@4, 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@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": - "integrity" "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz" - "version" "3.2.6" +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" + ms "^2.1.1" -"decamelize@^1.1.1", "decamelize@^1.2.0": - "integrity" "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - "version" "1.2.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 sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -"decamelize@^4.0.0": - "integrity" "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==" - "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" - "version" "4.0.0" +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.5.0": - "integrity" "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" - "resolved" "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz" - "version" "2.5.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== -"decode-uri-component@^0.2.0": - "integrity" "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - "resolved" "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" - "version" "0.2.0" +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -"decompress-response@^3.2.0", "decompress-response@^3.3.0": - "integrity" "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=" - "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" - "version" "3.3.0" +decompress-response@^3.2.0, decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= dependencies: - "mimic-response" "^1.0.0" + mimic-response "^1.0.0" -"deep-eql@^3.0.1": - "integrity" "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==" - "resolved" "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz" - "version" "3.0.1" +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== dependencies: - "type-detect" "^4.0.0" + type-detect "^4.0.0" -"deep-equal@~1.1.1": - "integrity" "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==" - "resolved" "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz" - "version" "1.1.1" +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" + 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": - "integrity" "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - "resolved" "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" - "version" "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": - "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" - "version" "0.1.4" +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== -"defer-to-connect@^1.0.1": - "integrity" "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - "resolved" "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" - "version" "1.1.3" - -"deferred-leveldown@~1.2.1": - "integrity" "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==" - "resolved" "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz" - "version" "1.2.2" - dependencies: - "abstract-leveldown" "~2.6.0" - -"deferred-leveldown@~4.0.0": - "integrity" "sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww==" - "resolved" "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "abstract-leveldown" "~5.0.0" - "inherits" "^2.0.3" - -"define-lazy-prop@^2.0.0": - "integrity" "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" - "resolved" "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" - "version" "2.0.0" - -"define-properties@^1.1.2", "define-properties@^1.1.3": - "integrity" "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==" - "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "object-keys" "^1.0.12" - -"define-property@^0.2.5": - "integrity" "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==" - "resolved" "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" - "version" "0.2.5" - dependencies: - "is-descriptor" "^0.1.0" - -"define-property@^1.0.0": - "integrity" "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==" - "resolved" "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "is-descriptor" "^1.0.0" - -"define-property@^2.0.2": - "integrity" "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==" - "resolved" "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "is-descriptor" "^1.0.2" - "isobject" "^3.0.1" - -"defined@^1.0.0": - "integrity" "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" - "resolved" "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz" - "version" "1.0.0" - -"defined@~1.0.0": - "version" "1.0.0" - -"delayed-stream@~1.0.0": - "integrity" "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - "version" "1.0.0" - -"depd@~1.1.2": - "version" "1.1.2" - -"depd@2.0.0": - "integrity" "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - "resolved" "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - "version" "2.0.0" - -"deps-sort@^2.0.1": - "integrity" "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==" - "resolved" "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "JSONStream" "^1.0.3" - "shasum-object" "^1.0.0" - "subarg" "^1.0.0" - "through2" "^2.0.0" - -"des.js@^1.0.0": - "integrity" "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==" - "resolved" "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "inherits" "^2.0.1" - "minimalistic-assert" "^1.0.0" - -"destroy@~1.0.4": - "version" "1.0.4" - -"destroy@1.2.0": - "integrity" "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" - "version" "1.2.0" - -"detect-indent@^4.0.0": - "integrity" "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==" - "resolved" "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "repeating" "^2.0.0" - -"detect-indent@^5.0.0": - "integrity" "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==" - "resolved" "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz" - "version" "5.0.0" - -"detect-port@^1.3.0": - "integrity" "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==" - "resolved" "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "address" "^1.0.1" - "debug" "^2.6.0" - -"detective@^5.2.0": - "integrity" "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==" - "resolved" "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "acorn-node" "^1.6.1" - "defined" "^1.0.0" - "minimist" "^1.1.1" - -"diff@^4.0.1": - "integrity" "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" - "resolved" "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" - "version" "4.0.2" - -"diff@3.5.0": - "integrity" "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" - "resolved" "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz" - "version" "3.5.0" - -"diff@5.0.0": - "integrity" "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" - "resolved" "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz" - "version" "5.0.0" - -"diffie-hellman@^5.0.0": - "integrity" "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==" - "resolved" "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" - "version" "5.0.3" - dependencies: - "bn.js" "^4.1.0" - "miller-rabin" "^4.0.0" - "randombytes" "^2.0.0" - -"dir-glob@^3.0.1": - "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" - "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "path-type" "^4.0.0" - -"doctrine@^2.1.0": - "integrity" "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==" - "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "esutils" "^2.0.2" - -"doctrine@^3.0.0": - "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" - "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "esutils" "^2.0.2" - -"dom-serializer@^2.0.0": - "integrity" "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==" - "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "domelementtype" "^2.3.0" - "domhandler" "^5.0.2" - "entities" "^4.2.0" - -"dom-walk@^0.1.0": - "integrity" "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - "resolved" "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz" - "version" "0.1.2" - -"domain-browser@^1.2.0": - "integrity" "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" - "resolved" "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz" - "version" "1.2.0" - -"domelementtype@^2.3.0": - "integrity" "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" - "version" "2.3.0" - -"domhandler@^5.0.1", "domhandler@^5.0.2", "domhandler@^5.0.3": - "integrity" "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==" - "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" - "version" "5.0.3" - dependencies: - "domelementtype" "^2.3.0" - -"domutils@^3.0.1": - "integrity" "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==" - "resolved" "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "dom-serializer" "^2.0.0" - "domelementtype" "^2.3.0" - "domhandler" "^5.0.1" - -"dot-case@^2.1.0": - "integrity" "sha1-NNzzf1Co6TwrO8qLt/uRVcfaO+4=" - "resolved" "https://registry.npmjs.org/dot-case/-/dot-case-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "no-case" "^2.2.0" - -"dotenv@^10.0.0": - "integrity" "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" - "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz" - "version" "10.0.0" - -"dotenv@^14.2.0": - "integrity" "sha512-vwEppIphpFdvaMCaHfCEv9IgwcxMljMw2TnAQBB4VWPvzXQLTb82jwmdOKzlEVUL3gNFT4l4TPKO+Bn+sqcrVQ==" - "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-14.3.2.tgz" - "version" "14.3.2" - -"dotignore@~0.1.2": - "integrity" "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==" - "resolved" "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz" - "version" "0.1.2" - dependencies: - "minimatch" "^3.0.4" - -"drbg.js@^1.0.1": - "integrity" "sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=" - "resolved" "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "browserify-aes" "^1.0.6" - "create-hash" "^1.1.2" - "create-hmac" "^1.1.4" - -"duplexer2@^0.1.2", "duplexer2@~0.1.0", "duplexer2@~0.1.2": - "integrity" "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=" - "resolved" "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz" - "version" "0.1.4" - dependencies: - "readable-stream" "^2.0.2" - -"duplexer3@^0.1.4": - "integrity" "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - "resolved" "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz" - "version" "0.1.4" - -"ecc-jsbn@~0.1.1": - "integrity" "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=" - "resolved" "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" - "version" "0.1.2" - dependencies: - "jsbn" "~0.1.0" - "safer-buffer" "^2.1.0" - -"ee-first@1.1.1": - "integrity" "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - "version" "1.1.1" - -"electron-to-chromium@^1.3.47": - "version" "1.3.636" - -"elliptic@^6.4.0", "elliptic@^6.5.2", "elliptic@^6.5.3", "elliptic@6.5.4": - "integrity" "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==" - "resolved" "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" - "version" "6.5.4" - dependencies: - "bn.js" "^4.11.9" - "brorand" "^1.1.0" - "hash.js" "^1.0.0" - "hmac-drbg" "^1.0.1" - "inherits" "^2.0.4" - "minimalistic-assert" "^1.0.1" - "minimalistic-crypto-utils" "^1.0.1" - -"elliptic@6.5.3": - "version" "6.5.3" - dependencies: - "bn.js" "^4.4.0" - "brorand" "^1.0.1" - "hash.js" "^1.0.0" - "hmac-drbg" "^1.0.0" - "inherits" "^2.0.1" - "minimalistic-assert" "^1.0.0" - "minimalistic-crypto-utils" "^1.0.0" - -"emoji-regex@^10.0.0": - "integrity" "sha512-KmJa8l6uHi1HrBI34udwlzZY1jOEuID/ft4d8BSSEdRyap7PwBEt910453PJa5MuGvxkLqlt4Uvhu7tttFHViw==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.0.0.tgz" - "version" "10.0.0" - -"emoji-regex@^7.0.1": - "integrity" "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" - "version" "7.0.3" - -"emoji-regex@^8.0.0": - "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - "version" "8.0.0" - -"emoji-regex@^9.2.2": - "integrity" "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" - "version" "9.2.2" - -"encode-utf8@^1.0.2": - "integrity" "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" - "resolved" "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz" - "version" "1.0.3" - -"encodeurl@~1.0.2": - "integrity" "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - "version" "1.0.2" - -"encoding-down@~5.0.0", "encoding-down@5.0.4": - "integrity" "sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw==" - "resolved" "https://registry.npmjs.org/encoding-down/-/encoding-down-5.0.4.tgz" - "version" "5.0.4" - 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@^0.1.0": - "integrity" "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==" - "resolved" "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" - "version" "0.1.13" - dependencies: - "iconv-lite" "^0.6.2" - -"encoding@^0.1.11": - "integrity" "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==" - "resolved" "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" - "version" "0.1.13" - dependencies: - "iconv-lite" "^0.6.2" - -"end-of-stream@^1.1.0": - "integrity" "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==" - "resolved" "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" - "version" "1.4.4" - dependencies: - "once" "^1.4.0" - -"enquirer@^2.3.0", "enquirer@^2.3.5", "enquirer@^2.3.6": - "integrity" "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==" - "resolved" "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" - "version" "2.3.6" - dependencies: - "ansi-colors" "^4.1.1" - -"entities@^4.2.0", "entities@^4.3.0", "entities@^4.4.0": - "integrity" "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==" - "resolved" "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz" - "version" "4.4.0" - -"env-paths@^2.2.0": - "integrity" "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" - "resolved" "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" - "version" "2.2.1" - -"errno@~0.1.1": - "integrity" "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==" - "resolved" "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" - "version" "0.1.8" - dependencies: - "prr" "~1.0.1" - -"error-ex@^1.2.0", "error-ex@^1.3.1": - "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" - "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "is-arrayish" "^0.2.1" - -"es-abstract@^1.17.0-next.1": - "version" "1.17.7" - dependencies: - "es-to-primitive" "^1.2.1" - "function-bind" "^1.1.1" - "has" "^1.0.3" - "has-symbols" "^1.0.1" - "is-callable" "^1.2.2" - "is-regex" "^1.1.1" - "object-inspect" "^1.8.0" - "object-keys" "^1.1.1" - "object.assign" "^4.1.1" - "string.prototype.trimend" "^1.0.1" - "string.prototype.trimstart" "^1.0.1" - -"es-abstract@^1.18.0-next.1": - "version" "1.18.0-next.1" - dependencies: - "es-to-primitive" "^1.2.1" - "function-bind" "^1.1.1" - "has" "^1.0.3" - "has-symbols" "^1.0.1" - "is-callable" "^1.2.2" - "is-negative-zero" "^2.0.0" - "is-regex" "^1.1.1" - "object-inspect" "^1.8.0" - "object-keys" "^1.1.1" - "object.assign" "^4.1.1" - "string.prototype.trimend" "^1.0.1" - "string.prototype.trimstart" "^1.0.1" - -"es-abstract@^1.18.5", "es-abstract@^1.19.0", "es-abstract@^1.19.1": - "integrity" "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==" - "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz" - "version" "1.19.1" - dependencies: - "call-bind" "^1.0.2" - "es-to-primitive" "^1.2.1" - "function-bind" "^1.1.1" - "get-intrinsic" "^1.1.1" - "get-symbol-description" "^1.0.0" - "has" "^1.0.3" - "has-symbols" "^1.0.2" - "internal-slot" "^1.0.3" - "is-callable" "^1.2.4" - "is-negative-zero" "^2.0.1" - "is-regex" "^1.1.4" - "is-shared-array-buffer" "^1.0.1" - "is-string" "^1.0.7" - "is-weakref" "^1.0.1" - "object-inspect" "^1.11.0" - "object-keys" "^1.1.1" - "object.assign" "^4.1.2" - "string.prototype.trimend" "^1.0.4" - "string.prototype.trimstart" "^1.0.4" - "unbox-primitive" "^1.0.1" - -"es-to-primitive@^1.2.1": - "integrity" "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==" - "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "is-callable" "^1.1.4" - "is-date-object" "^1.0.1" - "is-symbol" "^1.0.2" - -"es5-ext@^0.10.35", "es5-ext@^0.10.50": - "integrity" "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==" - "resolved" "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz" - "version" "0.10.53" - dependencies: - "es6-iterator" "~2.0.3" - "es6-symbol" "~3.1.3" - "next-tick" "~1.0.0" - -"es6-iterator@~2.0.3": - "integrity" "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=" - "resolved" "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" - "version" "2.0.3" - dependencies: - "d" "1" - "es5-ext" "^0.10.35" - "es6-symbol" "^3.1.1" - -"es6-symbol@^3.1.1", "es6-symbol@~3.1.3": - "integrity" "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==" - "resolved" "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz" - "version" "3.1.3" - dependencies: - "d" "^1.0.1" - "ext" "^1.1.2" - -"escalade@^3.1.1": - "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - "version" "3.1.1" - -"escape-html@~1.0.3": - "integrity" "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - "version" "1.0.3" - -"escape-string-regexp@^1.0.2": - "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - "version" "1.0.5" - -"escape-string-regexp@^1.0.5", "escape-string-regexp@1.0.5": - "integrity" "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - "version" "1.0.5" - -"escape-string-regexp@^4.0.0": - "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - "version" "4.0.0" - -"escape-string-regexp@4.0.0": - "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - "version" "4.0.0" - -"escodegen@1.8.x": - "integrity" "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=" - "resolved" "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz" - "version" "1.8.1" - dependencies: - "esprima" "^2.7.1" - "estraverse" "^1.9.1" - "esutils" "^2.0.2" - "optionator" "^0.8.1" +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== + +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" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +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.0" + resolved "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + +defined@~1.0.0: + version "1.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 sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +depd@~1.1.2: + version "1.1.2" + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +deps-sort@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz" + integrity sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw== + dependencies: + JSONStream "^1.0.3" + shasum-object "^1.0.0" + subarg "^1.0.0" + through2 "^2.0.0" + +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.0.4: + version "1.0.4" + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +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-port@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz" + integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +detective@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz" + integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== + dependencies: + acorn-node "^1.6.1" + defined "^1.0.0" + minimist "^1.1.1" + +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@3.5.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== + +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" + +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" + +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-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== + +domain-browser@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +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" + +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" + +dot-case@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/dot-case/-/dot-case-2.1.1.tgz" + integrity sha1-NNzzf1Co6TwrO8qLt/uRVcfaO+4= + dependencies: + no-case "^2.2.0" + +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== + +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" + +drbg.js@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz" + integrity sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs= + dependencies: + browserify-aes "^1.0.6" + create-hash "^1.1.2" + create-hmac "^1.1.4" + +duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2: + version "0.1.4" + resolved "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz" + integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= + dependencies: + readable-stream "^2.0.2" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + 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== + +electron-to-chromium@^1.3.47: + version "1.3.636" + +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" + +elliptic@6.5.3: + version "6.5.3" + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +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== + +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.0, encoding-down@5.0.4: + 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@^0.1.0: + 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" + +encoding@^0.1.11: + 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.1.0: + 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" + +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@^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== + +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== + +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" + +es-abstract@^1.17.0-next.1: + version "1.17.7" + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-abstract@^1.18.0-next.1: + version "1.18.0-next.1" + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-negative-zero "^2.0.0" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-abstract@^1.18.5, es-abstract@^1.19.0, es-abstract@^1.19.1: + version "1.19.1" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz" + integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.1" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.1" + is-string "^1.0.7" + is-weakref "^1.0.1" + object-inspect "^1.11.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" + +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.53" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +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" + +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.2: + 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@^1.0.5, 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 sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +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@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== + +escodegen@1.8.x: + version "1.8.1" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz" + integrity sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg= + dependencies: + esprima "^2.7.1" + estraverse "^1.9.1" + esutils "^2.0.2" + optionator "^0.8.1" optionalDependencies: - "source-map" "~0.2.0" - -"eslint-config-airbnb-base@^14.2.1": - "integrity" "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==" - "resolved" "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz" - "version" "14.2.1" - dependencies: - "confusing-browser-globals" "^1.0.10" - "object.assign" "^4.1.2" - "object.entries" "^1.1.2" - -"eslint-config-airbnb@^18.2.1": - "integrity" "sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg==" - "resolved" "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz" - "version" "18.2.1" - dependencies: - "eslint-config-airbnb-base" "^14.2.1" - "object.assign" "^4.1.2" - "object.entries" "^1.1.2" - -"eslint-config-prettier@^8.3.0": - "integrity" "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==" - "resolved" "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz" - "version" "8.3.0" - -"eslint-config-standard@^16.0.3": - "integrity" "sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==" - "resolved" "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz" - "version" "16.0.3" - -"eslint-import-resolver-node@^0.3.6": - "integrity" "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==" - "resolved" "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz" - "version" "0.3.6" - dependencies: - "debug" "^3.2.7" - "resolve" "^1.20.0" - -"eslint-module-utils@^2.7.1": - "integrity" "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==" - "resolved" "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "debug" "^3.2.7" - "find-up" "^2.1.0" - "pkg-dir" "^2.0.0" - -"eslint-plugin-es@^3.0.0": - "integrity" "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==" - "resolved" "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "eslint-utils" "^2.0.0" - "regexpp" "^3.0.0" - -"eslint-plugin-import@^2.22.1", "eslint-plugin-import@^2.25.3": - "integrity" "sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg==" - "resolved" "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz" - "version" "2.25.3" - 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.1" - "has" "^1.0.3" - "is-core-module" "^2.8.0" - "is-glob" "^4.0.3" - "minimatch" "^3.0.4" - "object.values" "^1.1.5" - "resolve" "^1.20.0" - "tsconfig-paths" "^3.11.0" - -"eslint-plugin-jsx-a11y@^6.4.1": - "integrity" "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==" - "resolved" "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz" - "version" "6.5.1" + source-map "~0.2.0" + +eslint-config-airbnb-base@^14.2.1: + version "14.2.1" + resolved "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz" + integrity sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA== + dependencies: + confusing-browser-globals "^1.0.10" + object.assign "^4.1.2" + object.entries "^1.1.2" + +eslint-config-airbnb@^18.2.1: + version "18.2.1" + resolved "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz" + integrity sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg== + dependencies: + eslint-config-airbnb-base "^14.2.1" + object.assign "^4.1.2" + object.entries "^1.1.2" + +eslint-config-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-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.1: + version "2.7.1" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz" + integrity sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ== + dependencies: + debug "^3.2.7" + find-up "^2.1.0" + pkg-dir "^2.0.0" + +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-import@^2.22.1, eslint-plugin-import@^2.25.3: + version "2.25.3" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz" + integrity sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg== + 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.1" + has "^1.0.3" + is-core-module "^2.8.0" + is-glob "^4.0.3" + minimatch "^3.0.4" + object.values "^1.1.5" + resolve "^1.20.0" + tsconfig-paths "^3.11.0" + +eslint-plugin-jsx-a11y@^6.4.1: + version "6.5.1" + resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz" + integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g== dependencies: "@babel/runtime" "^7.16.3" - "aria-query" "^4.2.2" - "array-includes" "^3.1.4" - "ast-types-flow" "^0.0.7" - "axe-core" "^4.3.5" - "axobject-query" "^2.2.0" - "damerau-levenshtein" "^1.0.7" - "emoji-regex" "^9.2.2" - "has" "^1.0.3" - "jsx-ast-utils" "^3.2.1" - "language-tags" "^1.0.5" - "minimatch" "^3.0.4" - -"eslint-plugin-node@^11.1.0": - "integrity" "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==" - "resolved" "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz" - "version" "11.1.0" - 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-prettier@^3.4.1": - "integrity" "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==" - "resolved" "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz" - "version" "3.4.1" - dependencies: - "prettier-linter-helpers" "^1.0.0" - -"eslint-plugin-promise@^4.2.1 || ^5.0.0", "eslint-plugin-promise@^5.2.0": - "integrity" "sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw==" - "resolved" "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz" - "version" "5.2.0" + aria-query "^4.2.2" + array-includes "^3.1.4" + ast-types-flow "^0.0.7" + axe-core "^4.3.5" + axobject-query "^2.2.0" + damerau-levenshtein "^1.0.7" + emoji-regex "^9.2.2" + has "^1.0.3" + jsx-ast-utils "^3.2.1" + language-tags "^1.0.5" + minimatch "^3.0.4" + +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-prettier@^3.4.1: + 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-promise@^4.2.1 || ^5.0.0", eslint-plugin-promise@^5.2.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-react-hooks@^4 || ^3 || ^2.3.0 || ^1.7.0": - "integrity" "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==" - "resolved" "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz" - "version" "4.3.0" - -"eslint-plugin-react@^7.21.5": - "integrity" "sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA==" - "resolved" "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.27.1.tgz" - "version" "7.27.1" - dependencies: - "array-includes" "^3.1.4" - "array.prototype.flatmap" "^1.2.5" - "doctrine" "^2.1.0" - "estraverse" "^5.3.0" - "jsx-ast-utils" "^2.4.1 || ^3.0.0" - "minimatch" "^3.0.4" - "object.entries" "^1.1.5" - "object.fromentries" "^2.0.5" - "object.hasown" "^1.1.0" - "object.values" "^1.1.5" - "prop-types" "^15.7.2" - "resolve" "^2.0.0-next.3" - "semver" "^6.3.0" - "string.prototype.matchall" "^4.0.6" - -"eslint-scope@^4.0.3": - "integrity" "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "esrecurse" "^4.1.0" - "estraverse" "^4.1.1" - -"eslint-scope@^5.1.1": - "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "esrecurse" "^4.3.0" - "estraverse" "^4.1.1" - -"eslint-utils@^1.3.1": - "integrity" "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==" - "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz" - "version" "1.4.3" - dependencies: - "eslint-visitor-keys" "^1.1.0" - -"eslint-utils@^2.0.0", "eslint-utils@^2.1.0": - "integrity" "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==" - "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "eslint-visitor-keys" "^1.1.0" - -"eslint-utils@^3.0.0": - "integrity" "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==" - "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "eslint-visitor-keys" "^2.0.0" - -"eslint-visitor-keys@^1.0.0", "eslint-visitor-keys@^1.1.0": - "integrity" "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" - "version" "1.3.0" - -"eslint-visitor-keys@^1.3.0": - "integrity" "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" - "version" "1.3.0" - -"eslint-visitor-keys@^2.0.0": - "integrity" "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" - "version" "2.1.0" - -"eslint-visitor-keys@^3.0.0": - "integrity" "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" - "version" "3.3.0" - -"eslint@*", "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^5.16.0 || ^6.8.0 || ^7.2.0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^7.0.0", "eslint@^7.12.1", "eslint@^7.32.0", "eslint@>=4.19.1", "eslint@>=5", "eslint@>=5.0.0", "eslint@>=5.16.0", "eslint@>=7.0.0": - "integrity" "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==" - "resolved" "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz" - "version" "7.32.0" + version "4.3.0" + resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz" + integrity sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA== + +eslint-plugin-react@^7.21.5: + version "7.27.1" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.27.1.tgz" + integrity sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA== + dependencies: + array-includes "^3.1.4" + array.prototype.flatmap "^1.2.5" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.0.4" + object.entries "^1.1.5" + object.fromentries "^2.0.5" + object.hasown "^1.1.0" + object.values "^1.1.5" + prop-types "^15.7.2" + resolve "^2.0.0-next.3" + semver "^6.3.0" + string.prototype.matchall "^4.0.6" + +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-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.1.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@^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: + 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.0.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@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^5.16.0 || ^6.8.0 || ^7.2.0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", eslint@^7.0.0, eslint@^7.12.1, eslint@^7.32.0, eslint@>=4.19.1, eslint@>=5, eslint@>=5.0.0, eslint@>=5.16.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@^5.6.0": - "integrity" "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==" - "resolved" "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz" - "version" "5.16.0" - 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" - -"espree@^5.0.1": - "integrity" "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==" - "resolved" "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "acorn" "^6.0.7" - "acorn-jsx" "^5.0.0" - "eslint-visitor-keys" "^1.0.0" - -"espree@^7.3.0", "espree@^7.3.1": - "integrity" "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==" - "resolved" "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz" - "version" "7.3.1" - dependencies: - "acorn" "^7.4.0" - "acorn-jsx" "^5.3.1" - "eslint-visitor-keys" "^1.3.0" - -"esprima@^2.7.1": - "integrity" "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" - "resolved" "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz" - "version" "2.7.3" - -"esprima@^4.0.0": - "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - "version" "4.0.1" - -"esprima@2.7.x": - "integrity" "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" - "resolved" "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz" - "version" "2.7.3" - -"esquery@^1.0.1", "esquery@^1.4.0": - "integrity" "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==" - "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "estraverse" "^5.1.0" - -"esrecurse@^4.1.0", "esrecurse@^4.3.0": - "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" - "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "estraverse" "^5.2.0" - -"estraverse@^1.9.1": - "integrity" "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz" - "version" "1.9.3" - -"estraverse@^4.1.1": - "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - "version" "4.3.0" - -"estraverse@^5.1.0", "estraverse@^5.2.0", "estraverse@^5.3.0": - "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - "version" "5.3.0" - -"esutils@^2.0.2": - "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - "version" "2.0.3" - -"etag@~1.8.1": - "integrity" "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" - "version" "1.8.1" - -"eth-block-tracker@^3.0.0": - "integrity" "sha512-WUVxWLuhMmsfenfZvFO5sbl1qFY2IqUlw/FPVmjjdElpqLsZtSG+wPe9Dz7W/sB6e80HgFKknOmKk2eNlznHug==" - "resolved" "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-3.0.1.tgz" - "version" "3.0.1" - 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-ens-namehash@^2.0.8", "eth-ens-namehash@2.0.8": - "integrity" "sha1-IprEbsqG1S4MmR58sq74P/D2i88=" - "resolved" "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz" - "version" "2.0.8" - dependencies: - "idna-uts46-hx" "^2.3.1" - "js-sha3" "^0.5.7" - -"eth-gas-reporter@^0.2.23": - "integrity" "sha512-T8KsVakDEupvQxW3MfFfHDfJ7y8zl2+XhyEQk4hZ3qQsAh/FE27BfFHM9UhqNQvrJLz8zVWnPZWNcARwLT/lsA==" - "resolved" "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.23.tgz" - "version" "0.2.23" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.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" + +esprima@^2.7.1: + version "2.7.3" + resolved "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz" + integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= + +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== + +esprima@2.7.x: + version "2.7.3" + resolved "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz" + integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.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 sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q= + +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== + +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-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 sha1-IprEbsqG1S4MmR58sq74P/D2i88= + dependencies: + idna-uts46-hx "^2.3.1" + js-sha3 "^0.5.7" + +eth-gas-reporter@^0.2.23: + version "0.2.23" + resolved "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.23.tgz" + integrity sha512-T8KsVakDEupvQxW3MfFfHDfJ7y8zl2+XhyEQk4hZ3qQsAh/FE27BfFHM9UhqNQvrJLz8zVWnPZWNcARwLT/lsA== dependencies: "@ethersproject/abi" "^5.0.0-beta.146" "@solidity-parser/parser" "^0.14.0" - "cli-table3" "^0.5.0" - "colors" "^1.1.2" - "ethereumjs-util" "6.2.0" - "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-infura@^3.1.0": - "integrity" "sha512-W7zR4DZvyTn23Bxc0EWsq4XGDdD63+XPUCEhV2zQvQGavDVC4ZpFDK4k99qN7bd7/fjj37+rxmuBOBeIqCA5Mw==" - "resolved" "https://registry.npmjs.org/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.1.tgz" - "version" "3.2.1" - 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-middleware@^1.5.0": - "integrity" "sha512-tDVCTlrUvdqHKqivYMjtFZsdD7TtpNLBCfKAcOpaVs7orBMS/A8HWro6dIzNtTZIR05FAbJ3bioFOnZpuCew9Q==" - "resolved" "https://registry.npmjs.org/eth-json-rpc-middleware/-/eth-json-rpc-middleware-1.6.0.tgz" - "version" "1.6.0" - 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-lib@^0.1.26": - "integrity" "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==" - "resolved" "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz" - "version" "0.1.29" - dependencies: - "bn.js" "^4.11.6" - "elliptic" "^6.4.0" - "nano-json-stream-parser" "^0.1.2" - "servify" "^0.1.12" - "ws" "^3.0.0" - "xhr-request-promise" "^0.1.2" - -"eth-lib@0.2.8": - "integrity" "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==" - "resolved" "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz" - "version" "0.2.8" - dependencies: - "bn.js" "^4.11.6" - "elliptic" "^6.4.0" - "xhr-request-promise" "^0.1.2" - -"eth-query@^2.0.2", "eth-query@^2.1.0", "eth-query@^2.1.2": - "integrity" "sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==" - "resolved" "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz" - "version" "2.1.2" - dependencies: - "json-rpc-random-id" "^1.0.0" - "xtend" "^4.0.1" - -"eth-sig-util@3.0.0": - "integrity" "sha512-4eFkMOhpGbTxBQ3AMzVf0haUX2uTur7DpWiHzWyTURa28BVJJtOkcb9Ok5TV0YvEPG61DODPW7ZUATbJTslioQ==" - "resolved" "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-3.0.0.tgz" - "version" "3.0.0" - 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-tx-summary@^3.1.2": - "integrity" "sha512-NtlDnaVZah146Rm8HMRUNMgIwG/ED4jiqk0TME9zFheMl1jOp6jL1m0NKGjJwehXQ6ZKCPr16MTr+qspKpEXNg==" - "resolved" "https://registry.npmjs.org/eth-tx-summary/-/eth-tx-summary-3.2.4.tgz" - "version" "3.2.4" - 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": - "integrity" "sha512-/MSbf/r2/Ld8o0l15AymjOTlPqpN8Cr4ByUEA9GtR4x0yAh3TdtDzEg29zMjXCNPI7u6E5fOQdj/Cf9Tc7oVNw==" - "resolved" "https://registry.npmjs.org/ethashjs/-/ethashjs-0.0.8.tgz" - "version" "0.0.8" - 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": - "integrity" "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==" - "resolved" "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "js-sha3" "^0.8.0" - -"ethereum-common@^0.0.18": - "integrity" "sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ==" - "resolved" "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz" - "version" "0.0.18" - -"ethereum-common@0.2.0": - "integrity" "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==" - "resolved" "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz" - "version" "0.2.0" - -"ethereum-cryptography@^0.1.3", "ethereum-cryptography@0.1.3": - "integrity" "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==" - "resolved" "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz" - "version" "0.1.3" + cli-table3 "^0.5.0" + colors "^1.1.2" + ethereumjs-util "6.2.0" + 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-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-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-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-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-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-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-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.0.18: + version "0.0.18" + resolved "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz" + integrity sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ== + +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-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": - "integrity" "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==" - "resolved" "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz" - "version" "1.2.0" + 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.2.0" + resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz" + integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== dependencies: "@noble/hashes" "1.2.0" "@noble/secp256k1" "1.7.1" "@scure/bip32" "1.1.5" "@scure/bip39" "1.1.1" -"ethereum-waffle@^3.2.0", "ethereum-waffle@^3.4.0": - "integrity" "sha512-ADBqZCkoSA5Isk486ntKJVjFEawIiC+3HxNqpJqONvh3YXBTNiRfXvJtGuAFLXPG91QaqkGqILEHANAo7j/olQ==" - "resolved" "https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.4.0.tgz" - "version" "3.4.0" +ethereum-waffle@^3.2.0, ethereum-waffle@^3.4.0: + version "3.4.0" + resolved "https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.4.0.tgz" + integrity sha512-ADBqZCkoSA5Isk486ntKJVjFEawIiC+3HxNqpJqONvh3YXBTNiRfXvJtGuAFLXPG91QaqkGqILEHANAo7j/olQ== dependencies: "@ethereum-waffle/chai" "^3.4.0" "@ethereum-waffle/compiler" "^3.4.0" "@ethereum-waffle/mock-contract" "^3.3.0" "@ethereum-waffle/provider" "^3.4.0" - "ethers" "^5.0.1" - -"ethereumjs-abi@^0.6.8": - "integrity" "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==" - "resolved" "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz" - "version" "0.6.8" - dependencies: - "bn.js" "^4.11.8" - "ethereumjs-util" "^6.0.0" - -"ethereumjs-abi@0.6.5": - "integrity" "sha512-rCjJZ/AE96c/AAZc6O3kaog4FhOsAViaysBxqJNy2+LHP0ttH0zkZ7nXdVHOAyt6lFwLO0nlCwWszysG/ao1+g==" - "resolved" "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz" - "version" "0.6.5" - dependencies: - "bn.js" "^4.10.0" - "ethereumjs-util" "^4.3.0" - -"ethereumjs-abi@0.6.8", "ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": - "integrity" "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==" - "resolved" "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz" - "version" "0.6.8" - dependencies: - "bn.js" "^4.11.8" - "ethereumjs-util" "^6.0.0" - -"ethereumjs-account@^2.0.3": - "integrity" "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==" - "resolved" "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz" - "version" "2.0.5" - dependencies: - "ethereumjs-util" "^5.0.0" - "rlp" "^2.0.0" - "safe-buffer" "^5.1.1" - -"ethereumjs-account@^3.0.0", "ethereumjs-account@3.0.0": - "integrity" "sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA==" - "resolved" "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "ethereumjs-util" "^6.0.0" - "rlp" "^2.2.1" - "safe-buffer" "^5.1.1" - -"ethereumjs-block@^1.2.2": - "integrity" "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==" - "resolved" "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz" - "version" "1.7.1" - dependencies: - "async" "^2.0.1" - "ethereum-common" "0.2.0" - "ethereumjs-tx" "^1.2.2" - "ethereumjs-util" "^5.0.0" - "merkle-patricia-tree" "^2.1.2" - -"ethereumjs-block@^1.4.1": - "integrity" "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==" - "resolved" "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz" - "version" "1.7.1" - dependencies: - "async" "^2.0.1" - "ethereum-common" "0.2.0" - "ethereumjs-tx" "^1.2.2" - "ethereumjs-util" "^5.0.0" - "merkle-patricia-tree" "^2.1.2" - -"ethereumjs-block@^1.6.0": - "integrity" "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==" - "resolved" "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz" - "version" "1.7.1" - dependencies: - "async" "^2.0.1" - "ethereum-common" "0.2.0" - "ethereumjs-tx" "^1.2.2" - "ethereumjs-util" "^5.0.0" - "merkle-patricia-tree" "^2.1.2" - -"ethereumjs-block@^2.2.2", "ethereumjs-block@~2.2.2", "ethereumjs-block@2.2.2": - "integrity" "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==" - "resolved" "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz" - "version" "2.2.2" - dependencies: - "async" "^2.0.1" - "ethereumjs-common" "^1.5.0" - "ethereumjs-tx" "^2.1.1" - "ethereumjs-util" "^5.0.0" - "merkle-patricia-tree" "^2.1.2" - -"ethereumjs-block@~2.2.0": - "integrity" "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==" - "resolved" "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz" - "version" "2.2.2" - dependencies: - "async" "^2.0.1" - "ethereumjs-common" "^1.5.0" - "ethereumjs-tx" "^2.1.1" - "ethereumjs-util" "^5.0.0" - "merkle-patricia-tree" "^2.1.2" - -"ethereumjs-blockchain@^4.0.3": - "integrity" "sha512-zCxaRMUOzzjvX78DTGiKjA+4h2/sF0OYL1QuPux0DHpyq8XiNoF5GYHtb++GUxVlMsMfZV7AVyzbtgcRdIcEPQ==" - "resolved" "https://registry.npmjs.org/ethereumjs-blockchain/-/ethereumjs-blockchain-4.0.4.tgz" - "version" "4.0.4" - 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.1.0", "ethereumjs-common@^1.3.2", "ethereumjs-common@1.5.0": - "integrity" "sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ==" - "resolved" "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz" - "version" "1.5.0" - -"ethereumjs-common@^1.5.0": - "integrity" "sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA==" - "resolved" "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz" - "version" "1.5.2" - -"ethereumjs-tx@^1.1.1", "ethereumjs-tx@^1.2.0", "ethereumjs-tx@^1.2.2", "ethereumjs-tx@^1.3.3": - "integrity" "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==" - "resolved" "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz" - "version" "1.3.7" - dependencies: - "ethereum-common" "^0.0.18" - "ethereumjs-util" "^5.0.0" - -"ethereumjs-tx@^2.1.1", "ethereumjs-tx@^2.1.2", "ethereumjs-tx@2.1.2": - "integrity" "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==" - "resolved" "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz" - "version" "2.1.2" - dependencies: - "ethereumjs-common" "^1.5.0" - "ethereumjs-util" "^6.0.0" - -"ethereumjs-util@^4.3.0": - "integrity" "sha512-WrckOZ7uBnei4+AKimpuF1B3Fv25OmoRgmYCpGsP7u8PFxXAmAgiJSYT2kRWnt6fVIlKaQlZvuwXp7PIrmn3/w==" - "resolved" "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-4.5.1.tgz" - "version" "4.5.1" - 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": - "integrity" "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==" - "resolved" "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz" - "version" "5.2.1" - dependencies: - "bn.js" "^4.11.0" - "create-hash" "^1.1.2" - "elliptic" "^6.5.2" - "ethereum-cryptography" "^0.1.3" - "ethjs-util" "^0.1.3" - "rlp" "^2.0.0" - "safe-buffer" "^5.1.1" - -"ethereumjs-util@^5.2.0": - "integrity" "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==" - "resolved" "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz" - "version" "5.2.1" - dependencies: - "bn.js" "^4.11.0" - "create-hash" "^1.1.2" - "elliptic" "^6.5.2" - "ethereum-cryptography" "^0.1.3" - "ethjs-util" "^0.1.3" - "rlp" "^2.0.0" - "safe-buffer" "^5.1.1" - -"ethereumjs-util@^6.0.0", "ethereumjs-util@^6.1.0", "ethereumjs-util@^6.2.0", "ethereumjs-util@6.2.1": - "integrity" "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==" - "resolved" "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz" - "version" "6.2.1" + ethers "^5.0.1" + +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@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@git+https://github.com/ethereumjs/ethereumjs-abi.git": + 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-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-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-block@^1.2.2: + 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-block@^1.4.1: + 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-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-block@^2.2.2, ethereumjs-block@~2.2.2, 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@~2.2.0: + 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-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.1.0, ethereumjs-common@^1.3.2, 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.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@^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-tx@^2.1.1, ethereumjs-tx@^2.1.2, 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-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: + 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@^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@^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@^6.2.1": - "integrity" "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==" - "resolved" "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz" - "version" "6.2.1" + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.3" + +ethereumjs-util@^6.2.1: + 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@^7.0.10", "ethereumjs-util@^7.0.3", "ethereumjs-util@^7.1.0", "ethereumjs-util@^7.1.3", "ethereumjs-util@7.1.5": - "integrity" "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==" - "resolved" "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz" - "version" "7.1.5" + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.3" + +ethereumjs-util@^7.0.10, ethereumjs-util@^7.0.3, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.3, 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" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" -"ethereumjs-util@^7.0.2": - "version" "7.0.7" +ethereumjs-util@^7.0.2: + version "7.0.7" dependencies: "@types/bn.js" "^4.11.3" - "bn.js" "^5.1.2" - "create-hash" "^1.1.2" - "ethereum-cryptography" "^0.1.3" - "ethjs-util" "0.1.6" - "rlp" "^2.2.4" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.4" -"ethereumjs-util@6.2.0": - "integrity" "sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ==" - "resolved" "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz" - "version" "6.2.0" +ethereumjs-util@6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz" + integrity sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ== dependencies: "@types/bn.js" "^4.11.3" - "bn.js" "^4.11.0" - "create-hash" "^1.1.2" - "ethjs-util" "0.1.6" - "keccak" "^2.0.0" - "rlp" "^2.2.3" - "secp256k1" "^3.0.1" - -"ethereumjs-vm@^2.1.0": - "integrity" "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==" - "resolved" "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz" - "version" "2.6.0" - dependencies: - "async" "^2.1.2" - "async-eventemitter" "^0.2.2" - "ethereumjs-account" "^2.0.3" - "ethereumjs-block" "~2.2.0" - "ethereumjs-common" "^1.1.0" - "ethereumjs-util" "^6.0.0" - "fake-merkle-patricia-tree" "^1.0.1" - "functional-red-black-tree" "^1.0.1" - "merkle-patricia-tree" "^2.3.2" - "rustbn.js" "~0.2.0" - "safe-buffer" "^5.1.1" - -"ethereumjs-vm@^2.3.4": - "integrity" "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==" - "resolved" "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz" - "version" "2.6.0" - dependencies: - "async" "^2.1.2" - "async-eventemitter" "^0.2.2" - "ethereumjs-account" "^2.0.3" - "ethereumjs-block" "~2.2.0" - "ethereumjs-common" "^1.1.0" - "ethereumjs-util" "^6.0.0" - "fake-merkle-patricia-tree" "^1.0.1" - "functional-red-black-tree" "^1.0.1" - "merkle-patricia-tree" "^2.3.2" - "rustbn.js" "~0.2.0" - "safe-buffer" "^5.1.1" - -"ethereumjs-vm@^2.6.0": - "integrity" "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==" - "resolved" "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz" - "version" "2.6.0" - dependencies: - "async" "^2.1.2" - "async-eventemitter" "^0.2.2" - "ethereumjs-account" "^2.0.3" - "ethereumjs-block" "~2.2.0" - "ethereumjs-common" "^1.1.0" - "ethereumjs-util" "^6.0.0" - "fake-merkle-patricia-tree" "^1.0.1" - "functional-red-black-tree" "^1.0.1" - "merkle-patricia-tree" "^2.3.2" - "rustbn.js" "~0.2.0" - "safe-buffer" "^5.1.1" - -"ethereumjs-vm@4.2.0": - "integrity" "sha512-X6qqZbsY33p5FTuZqCnQ4+lo957iUJMM6Mpa6bL4UW0dxM6WmDSHuI4j/zOp1E2TDKImBGCJA9QPfc08PaNubA==" - "resolved" "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-4.2.0.tgz" - "version" "4.2.0" - 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-wallet@0.6.5": - "integrity" "sha512-MDwjwB9VQVnpp/Dc1XzA6J1a3wgHQ4hSvA1uWNatdpOrtCbPVuQSKSyRnjLvS0a+KKMw2pvQ9Ybqpb3+eW8oNA==" - "resolved" "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-0.6.5.tgz" - "version" "0.6.5" - 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" - -"ethers@^4.0.32": - "integrity" "sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg==" - "resolved" "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz" - "version" "4.0.49" - 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@^4.0.40": - "integrity" "sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg==" - "resolved" "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz" - "version" "4.0.49" - 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", "ethers@^5.0.0", "ethers@^5.0.1", "ethers@^5.0.13", "ethers@^5.0.2", "ethers@^5.1.3", "ethers@^5.4.7", "ethers@^5.5.3", "ethers@^5.6.1", "ethers@^5.6.9", "ethers@^5.7.0", "ethers@^5.7.2", "ethers@~5.7.0": - "integrity" "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==" - "resolved" "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz" - "version" "5.7.2" + bn.js "^4.11.0" + create-hash "^1.1.2" + ethjs-util "0.1.6" + keccak "^2.0.0" + rlp "^2.2.3" + secp256k1 "^3.0.1" + +ethereumjs-vm@^2.1.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-vm@^2.3.4: + 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-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-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-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" + +ethers@^4.0.32: + 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@^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, ethers@^5.0.0, ethers@^5.0.1, ethers@^5.0.13, ethers@^5.0.2, ethers@^5.1.3, ethers@^5.4.7, ethers@^5.5.3, ethers@^5.6.1, ethers@^5.6.9, ethers@^5.7.0, ethers@^5.7.2, 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" @@ -5976,1030 +5851,989 @@ "@ethersproject/web" "5.7.1" "@ethersproject/wordlists" "5.7.0" -"ethjs-abi@^0.2.1": - "integrity" "sha1-4KepOn6BFjqUR3utVu3lJKtt5TM=" - "resolved" "https://registry.npmjs.org/ethjs-abi/-/ethjs-abi-0.2.1.tgz" - "version" "0.2.1" - dependencies: - "bn.js" "4.11.6" - "js-sha3" "0.5.5" - "number-to-bn" "1.7.0" - -"ethjs-unit@0.1.6": - "integrity" "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=" - "resolved" "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz" - "version" "0.1.6" - dependencies: - "bn.js" "4.11.6" - "number-to-bn" "1.7.0" - -"ethjs-util@^0.1.3", "ethjs-util@^0.1.6", "ethjs-util@0.1.6": - "integrity" "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==" - "resolved" "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz" - "version" "0.1.6" - dependencies: - "is-hex-prefixed" "1.0.0" - "strip-hex-prefix" "1.0.0" - -"event-target-shim@^5.0.0": - "integrity" "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" - "resolved" "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" - "version" "5.0.1" - -"eventemitter3@4.0.4": - "integrity" "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" - "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz" - "version" "4.0.4" - -"events@^3.0.0": - "integrity" "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - "resolved" "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - "version" "3.3.0" - -"evp_bytestokey@^1.0.0", "evp_bytestokey@^1.0.3": - "integrity" "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==" - "resolved" "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "md5.js" "^1.3.4" - "safe-buffer" "^5.1.1" - -"exit-on-epipe@~1.0.1": - "integrity" "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==" - "resolved" "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz" - "version" "1.0.1" - -"expand-brackets@^2.1.4": - "integrity" "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==" - "resolved" "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" - "version" "2.1.4" - 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" - -"express@^4.14.0", "express@^4.18.1": - "integrity" "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==" - "resolved" "https://registry.npmjs.org/express/-/express-4.18.2.tgz" - "version" "4.18.2" - dependencies: - "accepts" "~1.3.8" - "array-flatten" "1.1.1" - "body-parser" "1.20.1" - "content-disposition" "0.5.4" - "content-type" "~1.0.4" - "cookie" "0.5.0" - "cookie-signature" "1.0.6" - "debug" "2.6.9" - "depd" "2.0.0" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "etag" "~1.8.1" - "finalhandler" "1.2.0" - "fresh" "0.5.2" - "http-errors" "2.0.0" - "merge-descriptors" "1.0.1" - "methods" "~1.1.2" - "on-finished" "2.4.1" - "parseurl" "~1.3.3" - "path-to-regexp" "0.1.7" - "proxy-addr" "~2.0.7" - "qs" "6.11.0" - "range-parser" "~1.2.1" - "safe-buffer" "5.2.1" - "send" "0.18.0" - "serve-static" "1.15.0" - "setprototypeof" "1.2.0" - "statuses" "2.0.1" - "type-is" "~1.6.18" - "utils-merge" "1.0.1" - "vary" "~1.1.2" - -"ext@^1.1.2": - "integrity" "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==" - "resolved" "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz" - "version" "1.6.0" - dependencies: - "type" "^2.5.0" - -"extend-shallow@^2.0.1": - "integrity" "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==" - "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "is-extendable" "^0.1.0" - -"extend-shallow@^3.0.0", "extend-shallow@^3.0.2": - "integrity" "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==" - "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "assign-symbols" "^1.0.0" - "is-extendable" "^1.0.1" - -"extend@~3.0.2": - "integrity" "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - "resolved" "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" - "version" "3.0.2" - -"external-editor@^3.0.3": - "integrity" "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==" - "resolved" "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "chardet" "^0.7.0" - "iconv-lite" "^0.4.24" - "tmp" "^0.0.33" - -"extglob@^2.0.4": - "integrity" "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==" - "resolved" "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" - "version" "2.0.4" - 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-files@^9.0.0": - "integrity" "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==" - "resolved" "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz" - "version" "9.0.0" - -"extsprintf@^1.2.0", "extsprintf@1.3.0": - "integrity" "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - "resolved" "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" - "version" "1.3.0" - -"fake-merkle-patricia-tree@^1.0.1": - "integrity" "sha512-Tgq37lkc9pUIgIKw5uitNUKcgcYL3R6JvXtKQbOf/ZSavXbidsksgp/pAY6p//uhw0I4yoMsvTSovvVIsk/qxA==" - "resolved" "https://registry.npmjs.org/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "checkpoint-store" "^1.1.0" - -"faker@^5.3.1": - "integrity" "sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g==" - "resolved" "https://registry.npmjs.org/faker/-/faker-5.5.3.tgz" - "version" "5.5.3" - -"fast-check@^2.12.1": - "integrity" "sha512-tFNjLyPnOUg6iimVxOtoWMJOIyybCo7B8gUGm1yv43jDCQ0hlPUn0fmna/XO/n1yPxn/dxQw3+IygPSbMDiiog==" - "resolved" "https://registry.npmjs.org/fast-check/-/fast-check-2.20.0.tgz" - "version" "2.20.0" - dependencies: - "pure-rand" "^5.0.0" - -"fast-check@3.1.1": - "integrity" "sha512-3vtXinVyuUKCKFKYcwXhGE6NtGWkqF8Yh3rvMZNzmwz8EPrgoc/v4pDdLHyLnCyCI5MZpZZkDEwFyXyEONOxpA==" - "resolved" "https://registry.npmjs.org/fast-check/-/fast-check-3.1.1.tgz" - "version" "3.1.1" - dependencies: - "pure-rand" "^5.0.1" - -"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": - "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - "version" "3.1.3" - -"fast-diff@^1.1.2": - "integrity" "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==" - "resolved" "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" - "version" "1.2.0" - -"fast-glob@^3.0.3", "fast-glob@^3.2.9": - "integrity" "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==" - "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz" - "version" "3.2.11" +ethjs-abi@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/ethjs-abi/-/ethjs-abi-0.2.1.tgz" + integrity sha1-4KepOn6BFjqUR3utVu3lJKtt5TM= + 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 sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk= + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + +ethjs-util@^0.1.3, ethjs-util@^0.1.6, ethjs-util@0.1.6: + 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-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== + +events@^3.0.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" + +exit-on-epipe@~1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz" + integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw== + +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" + +express@^4.14.0, 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.6.0" + resolved "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz" + integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== + dependencies: + type "^2.5.0" + +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.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +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-files@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz" + integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== + +extsprintf@^1.2.0, extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +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" + +faker@^5.3.1: + version "5.5.3" + resolved "https://registry.npmjs.org/faker/-/faker-5.5.3.tgz" + integrity sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g== + +fast-check@^2.12.1: + version "2.20.0" + resolved "https://registry.npmjs.org/fast-check/-/fast-check-2.20.0.tgz" + integrity sha512-tFNjLyPnOUg6iimVxOtoWMJOIyybCo7B8gUGm1yv43jDCQ0hlPUn0fmna/XO/n1yPxn/dxQw3+IygPSbMDiiog== + dependencies: + pure-rand "^5.0.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-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, fast-diff@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + +fast-glob@^3.0.3, fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" - "glob-parent" "^5.1.2" - "merge2" "^1.3.0" - "micromatch" "^4.0.4" - -"fast-json-stable-stringify@^2.0.0": - "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - "version" "2.1.0" - -"fast-levenshtein@^2.0.6", "fast-levenshtein@~2.0.6": - "integrity" "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - "version" "2.0.6" - -"fast-safe-stringify@^2.0.7": - "integrity" "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" - "resolved" "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" - "version" "2.1.1" - -"fastq@^1.6.0": - "integrity" "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==" - "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" - "version" "1.13.0" - dependencies: - "reusify" "^1.0.4" - -"fetch-ponyfill@^4.0.0": - "integrity" "sha512-knK9sGskIg2T7OnYLdZ2hZXn0CtDrAIBxYQLpmEf0BqfdWnwmM1weccUl5+4EdA44tzNSFAuxITPbXtPehUB3g==" - "resolved" "https://registry.npmjs.org/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "node-fetch" "~1.7.1" - -"figures@^2.0.0": - "integrity" "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=" - "resolved" "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "escape-string-regexp" "^1.0.5" - -"file-entry-cache@^5.0.1": - "integrity" "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==" - "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "flat-cache" "^2.0.1" - -"file-entry-cache@^6.0.1": - "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" - "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "flat-cache" "^3.0.4" - -"file-uri-to-path@1.0.0": - "integrity" "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - "resolved" "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" - "version" "1.0.0" - -"fill-range@^4.0.0": - "integrity" "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" - "version" "4.0.0" - 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": - "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "to-regex-range" "^5.0.1" - -"finalhandler@~1.1.2": - "version" "1.1.2" - dependencies: - "debug" "2.6.9" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "on-finished" "~2.3.0" - "parseurl" "~1.3.3" - "statuses" "~1.5.0" - "unpipe" "~1.0.0" - -"finalhandler@1.2.0": - "integrity" "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==" - "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "debug" "2.6.9" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "on-finished" "2.4.1" - "parseurl" "~1.3.3" - "statuses" "2.0.1" - "unpipe" "~1.0.0" - -"find-replace@^1.0.3": - "integrity" "sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A=" - "resolved" "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "array-back" "^1.0.4" - "test-value" "^2.1.0" - -"find-replace@^3.0.0": - "integrity" "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==" - "resolved" "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "array-back" "^3.0.1" - -"find-up@^1.0.0": - "integrity" "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "path-exists" "^2.0.0" - "pinkie-promise" "^2.0.0" - -"find-up@^2.1.0": - "integrity" "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "locate-path" "^2.0.0" - -"find-up@^3.0.0": - "integrity" "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "locate-path" "^3.0.0" - -"find-up@^4.1.0": - "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "locate-path" "^5.0.0" - "path-exists" "^4.0.0" - -"find-up@3.0.0": - "integrity" "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "locate-path" "^3.0.0" - -"find-up@5.0.0": - "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "locate-path" "^6.0.0" - "path-exists" "^4.0.0" - -"find-yarn-workspace-root@^1.2.1": - "integrity" "sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q==" - "resolved" "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "fs-extra" "^4.0.3" - "micromatch" "^3.1.4" - -"find-yarn-workspace-root@^2.0.0": - "integrity" "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==" - "resolved" "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "micromatch" "^4.0.2" - -"flat-cache@^2.0.1": - "integrity" "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==" - "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "flatted" "^2.0.0" - "rimraf" "2.6.3" - "write" "1.0.3" - -"flat-cache@^3.0.4": - "integrity" "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==" - "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "flatted" "^3.1.0" - "rimraf" "^3.0.2" - -"flat@^4.1.0": - "integrity" "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==" - "resolved" "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz" - "version" "4.1.1" - dependencies: - "is-buffer" "~2.0.3" - -"flat@^5.0.2": - "integrity" "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" - "resolved" "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" - "version" "5.0.2" - -"flatted@^2.0.0": - "integrity" "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==" - "resolved" "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz" - "version" "2.0.2" - -"flatted@^3.1.0": - "integrity" "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==" - "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz" - "version" "3.2.4" - -"flow-stoplight@^1.0.0": - "integrity" "sha512-rDjbZUKpN8OYhB0IE/vY/I8UWO/602IIJEU/76Tv4LvYnwHCk0BCsvz4eRr9n+FQcri7L5cyaXOo0+/Kh4HisA==" - "resolved" "https://registry.npmjs.org/flow-stoplight/-/flow-stoplight-1.0.0.tgz" - "version" "1.0.0" - -"fmix@^0.1.0": - "integrity" "sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==" - "resolved" "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz" - "version" "0.1.0" - dependencies: - "imul" "^1.0.0" - -"follow-redirects@^1.12.1", "follow-redirects@^1.14.0", "follow-redirects@^1.14.9", "follow-redirects@^1.15.0": - "integrity" "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" - "version" "1.15.2" - -"for-each@^0.3.3", "for-each@~0.3.3": - "integrity" "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==" - "resolved" "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" - "version" "0.3.3" - dependencies: - "is-callable" "^1.1.3" - -"for-in@^1.0.2": - "integrity" "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" - "resolved" "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" - "version" "1.0.2" - -"foreach@^2.0.5": - "integrity" "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - "resolved" "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz" - "version" "2.0.5" - -"forever-agent@~0.6.1": - "integrity" "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - "resolved" "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - "version" "0.6.1" - -"form-data@^2.2.0": - "integrity" "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz" - "version" "2.5.1" - dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.6" - "mime-types" "^2.1.12" - -"form-data@^3.0.0": - "integrity" "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.8" - "mime-types" "^2.1.12" - -"form-data@^4.0.0": - "integrity" "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.8" - "mime-types" "^2.1.12" - -"form-data@~2.3.2": - "integrity" "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" - "version" "2.3.3" - dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.6" - "mime-types" "^2.1.12" - -"forwarded@~0.1.2": - "version" "0.1.2" - -"forwarded@0.2.0": - "integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" - "version" "0.2.0" - -"fp-ts@^1.0.0", "fp-ts@1.19.3": - "integrity" "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==" - "resolved" "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz" - "version" "1.19.3" - -"fragment-cache@^0.2.1": - "integrity" "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==" - "resolved" "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" - "version" "0.2.1" - dependencies: - "map-cache" "^0.2.2" - -"fresh@0.5.2": - "integrity" "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" - "version" "0.5.2" - -"fs-extra@^0.30.0": - "integrity" "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz" - "version" "0.30.0" - 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": - "integrity" "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" - "version" "10.1.0" - dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" - -"fs-extra@^10.1.0": - "integrity" "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" - "version" "10.1.0" - dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" - -"fs-extra@^4.0.2": - "integrity" "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "graceful-fs" "^4.1.2" - "jsonfile" "^4.0.0" - "universalify" "^0.1.0" - -"fs-extra@^4.0.3": - "integrity" "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "graceful-fs" "^4.1.2" - "jsonfile" "^4.0.0" - "universalify" "^0.1.0" - -"fs-extra@^7.0.0", "fs-extra@^7.0.1": - "integrity" "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "graceful-fs" "^4.1.2" - "jsonfile" "^4.0.0" - "universalify" "^0.1.0" - -"fs-extra@^8.1.0": - "integrity" "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" - "version" "8.1.0" - dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^4.0.0" - "universalify" "^0.1.0" - -"fs-extra@^9.1.0": - "integrity" "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" - "version" "9.1.0" - dependencies: - "at-least-node" "^1.0.0" - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" - -"fs-minipass@^1.2.5": - "version" "1.2.7" - dependencies: - "minipass" "^2.6.0" - -"fs-minipass@^1.2.7": - "integrity" "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==" - "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz" - "version" "1.2.7" - dependencies: - "minipass" "^2.6.0" - -"fs-readdir-recursive@^1.1.0": - "integrity" "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==" - "resolved" "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz" - "version" "1.1.0" - -"fs.realpath@^1.0.0": - "integrity" "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - "version" "1.0.0" - -"fsevents@~2.1.1": - "integrity" "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz" - "version" "2.1.3" - -"fsevents@~2.3.2": - "integrity" "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" - "version" "2.3.2" - -"function-bind@^1.1.1", "function-bind@~1.1.1": - "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - "version" "1.1.1" - -"functional-red-black-tree@^1.0.1": - "integrity" "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - "resolved" "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" - "version" "1.0.1" - -"functional-red-black-tree@~1.0.1": - "integrity" "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" - "resolved" "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" - "version" "1.0.1" - -"ganache-core@^2.13.2": - "integrity" "sha512-tIF5cR+ANQz0+3pHWxHjIwHqFXcVo0Mb+kcsNhglNFALcYo49aQpnS9dqHartqPfMFjiHh/qFoD3mYK0d/qGgw==" - "resolved" "https://registry.npmjs.org/ganache-core/-/ganache-core-2.13.2.tgz" - "version" "2.13.2" - 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" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.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 sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fast-safe-stringify@^2.0.7: + 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== + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +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" + +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-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== + +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" + +finalhandler@~1.1.2: + version "1.1.2" + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +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-replace@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz" + integrity sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A= + 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-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.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.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@^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-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: + 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-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@^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== + +flatted@^3.1.0: + version "3.2.4" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz" + integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw== + +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.12.1, follow-redirects@^1.14.0, follow-redirects@^1.14.9, follow-redirects@^1.15.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.5: + version "2.0.5" + resolved "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +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" + +forwarded@~0.1.2: + version "0.1.2" + +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.0.0, 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== + +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== + +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@^10.1.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: + 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@^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.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.5: + version "1.2.7" + dependencies: + minipass "^2.6.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-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 sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +function-bind@^1.1.1, 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== + +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 sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +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== + +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" - -"ganache-time-traveler@^1.0.15": - "integrity" "sha512-oUaQge9tiT/zzcGqehqJcoH10claKi9QFhq7zI1Wa3KtdPobjgLVMYvqXCJuHCAZoS7sHvLB/N/rSnhmivxaKw==" - "resolved" "https://registry.npmjs.org/ganache-time-traveler/-/ganache-time-traveler-1.0.16.tgz" - "version" "1.0.16" - -"get-assigned-identifiers@^1.2.0": - "integrity" "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==" - "resolved" "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz" - "version" "1.2.0" - -"get-caller-file@^1.0.1": - "integrity" "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" - "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz" - "version" "1.0.3" - -"get-caller-file@^2.0.1", "get-caller-file@^2.0.5": - "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - "version" "2.0.5" - -"get-func-name@^2.0.0": - "integrity" "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=" - "resolved" "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz" - "version" "2.0.0" - -"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.0", "get-intrinsic@^1.1.1": - "integrity" "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==" - "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "function-bind" "^1.1.1" - "has" "^1.0.3" - "has-symbols" "^1.0.1" - -"get-port@^3.1.0": - "integrity" "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=" - "resolved" "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz" - "version" "3.2.0" - -"get-stream@^3.0.0": - "integrity" "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz" - "version" "3.0.0" - -"get-stream@^4.1.0": - "integrity" "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "pump" "^3.0.0" - -"get-stream@^5.1.0": - "integrity" "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "pump" "^3.0.0" - -"get-symbol-description@^1.0.0": - "integrity" "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==" - "resolved" "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.1" - -"get-value@^2.0.3", "get-value@^2.0.6": - "integrity" "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==" - "resolved" "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" - "version" "2.0.6" - -"getpass@^0.1.1": - "integrity" "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=" - "resolved" "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" - "version" "0.1.7" - dependencies: - "assert-plus" "^1.0.0" - -"ghost-testrpc@^0.0.2": - "integrity" "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==" - "resolved" "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz" - "version" "0.0.2" - dependencies: - "chalk" "^2.4.2" - "node-emoji" "^1.10.0" - -"glob-parent@^5.1.2", "glob-parent@~5.1.0", "glob-parent@~5.1.2": - "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "is-glob" "^4.0.1" - -"glob@^5.0.15": - "integrity" "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=" - "resolved" "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz" - "version" "5.0.15" - 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.1.0", "glob@^7.1.2", "glob@^7.1.3", "glob@^7.1.6", "glob@7.2.0": - "integrity" "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" - "version" "7.2.0" - 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" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.0.4" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"glob@7.1.3": - "integrity" "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz" - "version" "7.1.3" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.0.4" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"global-modules@^2.0.0": - "integrity" "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==" - "resolved" "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "global-prefix" "^3.0.0" - -"global-prefix@^3.0.0": - "integrity" "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==" - "resolved" "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "ini" "^1.3.5" - "kind-of" "^6.0.2" - "which" "^1.3.1" - -"global@~4.4.0": - "integrity" "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==" - "resolved" "https://registry.npmjs.org/global/-/global-4.4.0.tgz" - "version" "4.4.0" - dependencies: - "min-document" "^2.19.0" - "process" "^0.11.10" - -"globals@^11.7.0": - "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - "version" "11.12.0" - -"globals@^13.6.0", "globals@^13.9.0": - "integrity" "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==" - "resolved" "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz" - "version" "13.12.0" - dependencies: - "type-fest" "^0.20.2" - -"globals@^9.18.0": - "integrity" "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" - "resolved" "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz" - "version" "9.18.0" - -"globby@^10.0.1": - "integrity" "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==" - "resolved" "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz" - "version" "10.0.2" + ethereumjs-wallet "0.6.5" + web3 "1.2.11" + +ganache-time-traveler@^1.0.15: + version "1.0.16" + resolved "https://registry.npmjs.org/ganache-time-traveler/-/ganache-time-traveler-1.0.16.tgz" + integrity sha512-oUaQge9tiT/zzcGqehqJcoH10claKi9QFhq7zI1Wa3KtdPobjgLVMYvqXCJuHCAZoS7sHvLB/N/rSnhmivxaKw== + +get-assigned-identifiers@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz" + integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== + +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 sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-port@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz" + integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +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-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 sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + 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" + +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@^5.0.15: + version "5.0.15" + resolved "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz" + integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= + 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.1.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.6, 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@^8.0.3: + version "8.1.0" + resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz" + 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" + +glob@~7.1.6: + version "7.1.6" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.1.3: + 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" + +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@^13.6.0, globals@^13.9.0: + version "13.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz" + integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg== + 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== + +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.4": - "integrity" "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" - "resolved" "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" - "version" "11.1.0" - dependencies: - "array-union" "^2.1.0" - "dir-glob" "^3.0.1" - "fast-glob" "^3.2.9" - "ignore" "^5.2.0" - "merge2" "^1.4.1" - "slash" "^3.0.0" - -"got@^7.1.0": - "integrity" "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==" - "resolved" "https://registry.npmjs.org/got/-/got-7.1.0.tgz" - "version" "7.1.0" - dependencies: - "decompress-response" "^3.2.0" - "duplexer3" "^0.1.4" - "get-stream" "^3.0.0" - "is-plain-obj" "^1.1.0" - "is-retry-allowed" "^1.0.0" - "is-stream" "^1.0.0" - "isurl" "^1.0.0-alpha5" - "lowercase-keys" "^1.0.0" - "p-cancelable" "^0.3.0" - "p-timeout" "^1.1.1" - "safe-buffer" "^5.0.1" - "timed-out" "^4.0.0" - "url-parse-lax" "^1.0.0" - "url-to-options" "^1.0.1" - -"got@9.6.0": - "integrity" "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==" - "resolved" "https://registry.npmjs.org/got/-/got-9.6.0.tgz" - "version" "9.6.0" + 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.4: + 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" + +got@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/got/-/got-7.1.0.tgz" + integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== + dependencies: + decompress-response "^3.2.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-plain-obj "^1.1.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + p-cancelable "^0.3.0" + p-timeout "^1.1.1" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + url-parse-lax "^1.0.0" + url-to-options "^1.0.1" + +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" - -"graceful-fs@^4.1.11", "graceful-fs@^4.1.2", "graceful-fs@^4.1.6", "graceful-fs@^4.1.9", "graceful-fs@^4.2.0", "graceful-fs@^4.2.4": - "integrity" "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" - "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz" - "version" "4.2.8" - -"graphql-request@^4.3.0": - "integrity" "sha512-2v6hQViJvSsifK606AliqiNiijb1uwWp6Re7o0RTyH+uRTv/u7Uqm2g4Fjq/LgZIzARB38RZEvVBFOQOVdlBow==" - "resolved" "https://registry.npmjs.org/graphql-request/-/graphql-request-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "cross-fetch" "^3.1.5" - "extract-files" "^9.0.0" - "form-data" "^3.0.0" - -"graphql@^16.0.0", "graphql@14 - 16": - "integrity" "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==" - "resolved" "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz" - "version" "16.6.0" - -"growl@1.10.5": - "integrity" "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" - "resolved" "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz" - "version" "1.10.5" - -"handlebars@^4.0.1": - "integrity" "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==" - "resolved" "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz" - "version" "4.7.7" - dependencies: - "minimist" "^1.2.5" - "neo-async" "^2.6.0" - "source-map" "^0.6.1" - "wordwrap" "^1.0.0" + 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" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4: + version "4.2.8" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz" + integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== + +graphql-request@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/graphql-request/-/graphql-request-4.3.0.tgz" + integrity sha512-2v6hQViJvSsifK606AliqiNiijb1uwWp6Re7o0RTyH+uRTv/u7Uqm2g4Fjq/LgZIzARB38RZEvVBFOQOVdlBow== + dependencies: + cross-fetch "^3.1.5" + extract-files "^9.0.0" + form-data "^3.0.0" + +graphql@^16.0.0, "graphql@14 - 16": + 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== + +handlebars@^4.0.1: + 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" + uglify-js "^3.1.4" -"har-schema@^2.0.0": - "integrity" "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - "resolved" "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" - "version" "2.0.0" +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -"har-validator@~5.1.3": - "integrity" "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==" - "resolved" "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" - "version" "5.1.5" +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" + ajv "^6.12.3" + har-schema "^2.0.0" -"hardhat-contract-sizer@^2.0.3": - "integrity" "sha512-QgfuwdUkKT7Ugn6Zja26Eie7h6OLcBfWBewaaQtYMCzyglNafQPgUIznN2C42/iFmGrlqFPbqv4B98Iev89KSQ==" - "resolved" "https://registry.npmjs.org/hardhat-contract-sizer/-/hardhat-contract-sizer-2.1.1.tgz" - "version" "2.1.1" +hardhat-contract-sizer@^2.0.3: + version "2.1.1" + resolved "https://registry.npmjs.org/hardhat-contract-sizer/-/hardhat-contract-sizer-2.1.1.tgz" + integrity sha512-QgfuwdUkKT7Ugn6Zja26Eie7h6OLcBfWBewaaQtYMCzyglNafQPgUIznN2C42/iFmGrlqFPbqv4B98Iev89KSQ== dependencies: - "cli-table3" "^0.6.0" - "colors" "^1.4.0" + cli-table3 "^0.6.0" + colors "^1.4.0" -"hardhat-deploy@^0.11.14", "hardhat-deploy@^0.11.23": - "integrity" "sha512-9F+sDRX79D/oV1cUEE0k2h5LiccrnzXEtrMofL5PTVDCJfUnRvhQqCRi4NhcYmxf2+MBkOIJv5KyzP0lz6ojTw==" - "resolved" "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.11.23.tgz" - "version" "0.11.23" +hardhat-deploy@^0.11.14, hardhat-deploy@^0.11.23: + version "0.11.23" + resolved "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.11.23.tgz" + integrity sha512-9F+sDRX79D/oV1cUEE0k2h5LiccrnzXEtrMofL5PTVDCJfUnRvhQqCRi4NhcYmxf2+MBkOIJv5KyzP0lz6ojTw== 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-gas-reporter@^1.0.6": - "integrity" "sha512-LlCEmSx1dZpnxKmODb2hmP5eJ1IAM5It3NnBNTUpBTxn9g9qPPI3JQTxj8AbGEiNc3r6V+w/mXYCmiC8pWvnoQ==" - "resolved" "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "array-uniq" "1.0.3" - "eth-gas-reporter" "^0.2.23" - "sha1" "^1.1.1" - -"hardhat-tracer@^1.1.0-rc.6": - "integrity" "sha512-u1d8YpyYBCj/7xVMPDxsx+H1gBaothk/XNLeTYuEmxC6WmVMEwVjpdnmTYZiRQ2ntUfwSIjwKhDkLOqewBqaQA==" - "resolved" "https://registry.npmjs.org/hardhat-tracer/-/hardhat-tracer-1.1.0-rc.6.tgz" - "version" "1.1.0-rc.6" - dependencies: - "ethers" "^5.6.1" - -"hardhat-watcher@^2.1.1": - "integrity" "sha512-Su2qcSMIo2YO2PrmJ0/tdkf+6pSt8zf9+4URR5edMVti6+ShI8T3xhPrwugdyTOFuyj8lKHrcTZNKUFYowYiyA==" - "resolved" "https://registry.npmjs.org/hardhat-watcher/-/hardhat-watcher-2.5.0.tgz" - "version" "2.5.0" - dependencies: - "chokidar" "^3.5.3" - -"hardhat@^2.0.0", "hardhat@^2.0.10", "hardhat@^2.0.2", "hardhat@^2.0.4", "hardhat@^2.10.2", "hardhat@^2.8.0", "hardhat@2.x": - "integrity" "sha512-ZlzBOLML1QGlm6JWyVAG8lVTEAoOaVm1in/RU2zoGAnYEoD1Rp4T+ZMvrLNhHaaeS9hfjJ1gJUBfiDr4cx+htQ==" - "resolved" "https://registry.npmjs.org/hardhat/-/hardhat-2.13.0.tgz" - "version" "2.13.0" + 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-gas-reporter@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.6.tgz" + integrity sha512-LlCEmSx1dZpnxKmODb2hmP5eJ1IAM5It3NnBNTUpBTxn9g9qPPI3JQTxj8AbGEiNc3r6V+w/mXYCmiC8pWvnoQ== + dependencies: + array-uniq "1.0.3" + eth-gas-reporter "^0.2.23" + sha1 "^1.1.1" + +hardhat-tracer@^1.1.0-rc.6: + version "1.1.0-rc.6" + resolved "https://registry.npmjs.org/hardhat-tracer/-/hardhat-tracer-1.1.0-rc.6.tgz" + integrity sha512-u1d8YpyYBCj/7xVMPDxsx+H1gBaothk/XNLeTYuEmxC6WmVMEwVjpdnmTYZiRQ2ntUfwSIjwKhDkLOqewBqaQA== + dependencies: + ethers "^5.6.1" + +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.0.0, hardhat@^2.0.10, hardhat@^2.0.2, hardhat@^2.0.4, hardhat@^2.10.2, hardhat@^2.8.0, hardhat@2.x: + version "2.13.0" + resolved "https://registry.npmjs.org/hardhat/-/hardhat-2.13.0.tgz" + integrity sha512-ZlzBOLML1QGlm6JWyVAG8lVTEAoOaVm1in/RU2zoGAnYEoD1Rp4T+ZMvrLNhHaaeS9hfjJ1gJUBfiDr4cx+htQ== dependencies: "@ethersproject/abi" "^5.1.2" "@metamask/eth-sig-util" "^4.0.0" @@ -7017,6590 +6851,6499 @@ "@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.14.0" - "uuid" "^8.3.2" - "ws" "^7.4.6" - -"has-ansi@^2.0.0": - "integrity" "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==" - "resolved" "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "ansi-regex" "^2.0.0" - -"has-bigints@^1.0.1": - "integrity" "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" - "resolved" "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz" - "version" "1.0.1" - -"has-flag@^1.0.0": - "integrity" "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" - "version" "1.0.0" - -"has-flag@^3.0.0": - "integrity" "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - "version" "3.0.0" - -"has-flag@^4.0.0": - "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - "version" "4.0.0" - -"has-symbol-support-x@^1.4.1": - "integrity" "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" - "resolved" "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz" - "version" "1.4.2" - -"has-symbols@^1.0.0", "has-symbols@^1.0.1", "has-symbols@^1.0.2": - "integrity" "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" - "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz" - "version" "1.0.2" - -"has-to-string-tag-x@^1.2.0": - "integrity" "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==" - "resolved" "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz" - "version" "1.4.1" - dependencies: - "has-symbol-support-x" "^1.4.1" - -"has-tostringtag@^1.0.0": - "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" - "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "has-symbols" "^1.0.2" - -"has-value@^0.3.1": - "integrity" "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==" - "resolved" "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" - "version" "0.3.1" - dependencies: - "get-value" "^2.0.3" - "has-values" "^0.1.4" - "isobject" "^2.0.0" - -"has-value@^1.0.0": - "integrity" "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==" - "resolved" "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "get-value" "^2.0.6" - "has-values" "^1.0.0" - "isobject" "^3.0.0" - -"has-values@^0.1.4": - "integrity" "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==" - "resolved" "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" - "version" "0.1.4" - -"has-values@^1.0.0": - "integrity" "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==" - "resolved" "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "is-number" "^3.0.0" - "kind-of" "^4.0.0" - -"has@^1.0.0", "has@^1.0.3", "has@~1.0.3": - "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" - "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "function-bind" "^1.1.1" - -"hash-base@^3.0.0": - "integrity" "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==" - "resolved" "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "inherits" "^2.0.4" - "readable-stream" "^3.6.0" - "safe-buffer" "^5.2.0" - -"hash.js@^1.0.0", "hash.js@^1.0.3", "hash.js@^1.1.7", "hash.js@1.1.7": - "integrity" "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==" - "resolved" "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "inherits" "^2.0.3" - "minimalistic-assert" "^1.0.1" - -"hash.js@1.1.3": - "integrity" "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==" - "resolved" "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "inherits" "^2.0.3" - "minimalistic-assert" "^1.0.0" - -"he@1.2.0": - "integrity" "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - "resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz" - "version" "1.2.0" - -"header-case@^1.0.0": - "integrity" "sha1-lTWXMZfBRLCWE81l0xfvGZY70C0=" - "resolved" "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "no-case" "^2.2.0" - "upper-case" "^1.1.3" - -"heap@0.2.6": - "integrity" "sha512-MzzWcnfB1e4EG2vHi3dXHoBupmuXNZzx6pY6HldVS55JKKBoq3xOyzfSaZRkJp37HIhEYC78knabHff3zc4dQQ==" - "resolved" "https://registry.npmjs.org/heap/-/heap-0.2.6.tgz" - "version" "0.2.6" - -"highlight.js@^10.4.1": - "integrity" "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" - "resolved" "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz" - "version" "10.7.3" - -"highlightjs-solidity@^2.0.5": - "integrity" "sha512-ReXxQSGQkODMUgHcWzVSnfDCDrL2HshOYgw3OlIYmfHeRzUPkfJTUIp95pK4CmbiNG2eMTOmNLpfCz9Zq7Cwmg==" - "resolved" "https://registry.npmjs.org/highlightjs-solidity/-/highlightjs-solidity-2.0.5.tgz" - "version" "2.0.5" - -"hmac-drbg@^1.0.0": - "version" "1.0.1" - dependencies: - "hash.js" "^1.0.3" - "minimalistic-assert" "^1.0.0" - "minimalistic-crypto-utils" "^1.0.1" - -"hmac-drbg@^1.0.1": - "integrity" "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=" - "resolved" "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "hash.js" "^1.0.3" - "minimalistic-assert" "^1.0.0" - "minimalistic-crypto-utils" "^1.0.1" - -"home-or-tmp@^2.0.0": - "integrity" "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==" - "resolved" "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "os-homedir" "^1.0.0" - "os-tmpdir" "^1.0.1" - -"hosted-git-info@^2.1.4", "hosted-git-info@^2.6.0": - "integrity" "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" - "version" "2.8.9" - -"htmlescape@^1.1.0": - "integrity" "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=" - "resolved" "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz" - "version" "1.1.1" - -"htmlparser2@^8.0.1": - "integrity" "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==" - "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz" - "version" "8.0.1" - dependencies: - "domelementtype" "^2.3.0" - "domhandler" "^5.0.2" - "domutils" "^3.0.1" - "entities" "^4.3.0" - -"http-basic@^8.1.1": - "integrity" "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==" - "resolved" "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz" - "version" "8.1.3" - dependencies: - "caseless" "^0.12.0" - "concat-stream" "^1.6.2" - "http-response-object" "^3.0.1" - "parse-cache-control" "^1.0.1" - -"http-cache-semantics@^4.0.0": - "integrity" "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - "resolved" "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz" - "version" "4.1.0" - -"http-errors@~1.7.2", "http-errors@1.7.2": - "version" "1.7.2" - dependencies: - "depd" "~1.1.2" - "inherits" "2.0.3" - "setprototypeof" "1.1.1" - "statuses" ">= 1.5.0 < 2" - "toidentifier" "1.0.0" - -"http-errors@2.0.0": - "integrity" "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==" - "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "depd" "2.0.0" - "inherits" "2.0.4" - "setprototypeof" "1.2.0" - "statuses" "2.0.1" - "toidentifier" "1.0.1" - -"http-https@^1.0.0": - "integrity" "sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs=" - "resolved" "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz" - "version" "1.0.0" - -"http-response-object@^3.0.1": - "integrity" "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==" - "resolved" "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz" - "version" "3.0.2" + 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.14.0" + uuid "^8.3.2" + ws "^7.4.6" + +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: + version "1.0.1" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +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-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz" + integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== + +has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz" + integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== + dependencies: + has-symbol-support-x "^1.4.1" + +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-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.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.0.0, hash.js@^1.0.3, hash.js@^1.1.7, 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" + +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" + +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== + +header-case@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz" + integrity sha1-lTWXMZfBRLCWE81l0xfvGZY70C0= + 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== + +highlight.js@^10.4.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.0: + version "1.0.1" + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +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" + +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== + +htmlescape@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz" + integrity sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E= + +htmlparser2@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz" + integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + domutils "^3.0.1" + entities "^4.3.0" + +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" + +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http-errors@~1.7.2, http-errors@1.7.2: + version "1.7.2" + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +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: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-https@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz" + integrity sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs= + +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" -"http-signature@~1.2.0": - "integrity" "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=" - "resolved" "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "assert-plus" "^1.0.0" - "jsprim" "^1.2.2" - "sshpk" "^1.7.0" - -"https-browserify@^1.0.0": - "integrity" "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" - "resolved" "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" - "version" "1.0.0" - -"https-proxy-agent@^5.0.0": - "integrity" "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==" - "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "agent-base" "6" - "debug" "4" - -"hyperlinker@^1.0.0": - "integrity" "sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==" - "resolved" "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz" - "version" "1.0.0" - -"iconv-lite@^0.4.24", "iconv-lite@0.4.24": - "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - "version" "0.4.24" - dependencies: - "safer-buffer" ">= 2.1.2 < 3" - -"iconv-lite@^0.6.2": - "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - "version" "0.6.3" - dependencies: - "safer-buffer" ">= 2.1.2 < 3.0.0" - -"idna-uts46-hx@^2.3.1": - "integrity" "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==" - "resolved" "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz" - "version" "2.3.1" - dependencies: - "punycode" "2.1.0" - -"ieee754@^1.1.13", "ieee754@^1.1.4", "ieee754@^1.2.1": - "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - "version" "1.2.1" - -"ignore@^4.0.6": - "integrity" "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" - "version" "4.0.6" - -"ignore@^5.1.1": - "integrity" "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" - "version" "5.2.0" - -"ignore@^5.1.8": - "integrity" "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" - "version" "5.2.0" - -"ignore@^5.2.0": - "integrity" "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" - "version" "5.2.0" - -"immediate@^3.2.3", "immediate@~3.2.3": - "integrity" "sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg==" - "resolved" "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz" - "version" "3.2.3" - -"immutable@^4.0.0-rc.12": - "integrity" "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==" - "resolved" "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz" - "version" "4.0.0" - -"import-fresh@^2.0.0": - "integrity" "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=" - "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "caller-path" "^2.0.0" - "resolve-from" "^3.0.0" - -"import-fresh@^3.0.0", "import-fresh@^3.2.1": - "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" - "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - "version" "3.3.0" - dependencies: - "parent-module" "^1.0.0" - "resolve-from" "^4.0.0" - -"imul@^1.0.0": - "integrity" "sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==" - "resolved" "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz" - "version" "1.0.1" - -"imurmurhash@^0.1.4": - "integrity" "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - "version" "0.1.4" - -"indent-string@^4.0.0": - "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" - "version" "4.0.0" - -"inflight@^1.0.4": - "integrity" "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" - "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "once" "^1.3.0" - "wrappy" "1" - -"inherits@^2.0.1", "inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.1", "inherits@~2.0.3", "inherits@~2.0.4", "inherits@2", "inherits@2.0.4": - "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - "version" "2.0.4" - -"inherits@2.0.1": - "integrity" "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - "version" "2.0.1" - -"inherits@2.0.3": - "version" "2.0.3" - -"ini@^1.3.5": - "integrity" "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - "resolved" "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" - "version" "1.3.8" - -"inline-source-map@~0.6.0": - "integrity" "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=" - "resolved" "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz" - "version" "0.6.2" - dependencies: - "source-map" "~0.5.3" - -"inquirer@^6.2.2": - "integrity" "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==" - "resolved" "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz" - "version" "6.5.2" - 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" - -"insert-module-globals@^7.2.1": - "integrity" "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==" - "resolved" "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz" - "version" "7.2.1" - dependencies: - "acorn-node" "^1.5.2" - "combine-source-map" "^0.8.0" - "concat-stream" "^1.6.1" - "is-buffer" "^1.1.0" - "JSONStream" "^1.0.3" - "path-is-absolute" "^1.0.1" - "process" "~0.11.0" - "through2" "^2.0.0" - "undeclared-identifiers" "^1.1.2" - "xtend" "^4.0.0" - -"internal-slot@^1.0.3": - "integrity" "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==" - "resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "get-intrinsic" "^1.1.0" - "has" "^1.0.3" - "side-channel" "^1.0.4" - -"interpret@^1.0.0": - "integrity" "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" - "resolved" "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" - "version" "1.4.0" - -"invariant@^2.2.2": - "integrity" "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==" - "resolved" "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" - "version" "2.2.4" - dependencies: - "loose-envify" "^1.0.0" - -"invert-kv@^1.0.0": - "integrity" "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==" - "resolved" "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" - "version" "1.0.0" - -"io-ts@1.10.4": - "integrity" "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==" - "resolved" "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz" - "version" "1.10.4" - dependencies: - "fp-ts" "^1.0.0" - -"ipaddr.js@1.9.1": - "integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" - "version" "1.9.1" - -"is-accessor-descriptor@^0.1.6": - "integrity" "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==" - "resolved" "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" - "version" "0.1.6" - dependencies: - "kind-of" "^3.0.2" - -"is-accessor-descriptor@^1.0.0": - "integrity" "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==" - "resolved" "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "kind-of" "^6.0.0" - -"is-arguments@^1.0.4": - "integrity" "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==" - "resolved" "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-arrayish@^0.2.1": - "integrity" "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - "version" "0.2.1" - -"is-bigint@^1.0.1": - "integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==" - "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "has-bigints" "^1.0.1" - -"is-binary-path@~2.1.0": - "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" - "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "binary-extensions" "^2.0.0" - -"is-boolean-object@^1.1.0": - "integrity" "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==" - "resolved" "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-buffer@^1.1.0": - "integrity" "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" - "version" "1.1.6" - -"is-buffer@^1.1.5": - "integrity" "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" - "version" "1.1.6" - -"is-buffer@^2.0.5", "is-buffer@~2.0.3": - "integrity" "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" - "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz" - "version" "2.0.5" - -"is-callable@^1.1.3", "is-callable@^1.2.2": - "version" "1.2.2" +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +https-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + dependencies: + agent-base "6" + debug "4" + +husky@^8.0.3: + version "8.0.3" + resolved "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz" + integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== + +hyperlinker@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz" + integrity sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ== + +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: + safer-buffer ">= 2.1.2 < 3.0.0" + +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: + safer-buffer ">= 2.1.2 < 3" + +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: + punycode "2.1.0" + +ieee754@^1.1.13, ieee754@^1.1.4, 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@^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== + +ignore@^5.1.1: + version "5.2.0" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +ignore@^5.1.8: + version "5.2.0" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +ignore@^5.2.4: + version "5.2.4" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +immediate@^3.2.3, 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== + +immutable@^4.0.0-rc.12: + version "4.0.0" + resolved "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz" + integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== + +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" + +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 sha1-khi5srkoojixPcT7a21XbyMUU+o= + +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== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4, inherits@2, inherits@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inline-source-map@~0.6.0: + version "0.6.2" + resolved "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz" + integrity sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU= + dependencies: + source-map "~0.5.3" + +insert-module-globals@^7.2.1: + version "7.2.1" + resolved "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz" + integrity sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg== + dependencies: + acorn-node "^1.5.2" + combine-source-map "^0.8.0" + concat-stream "^1.6.1" + is-buffer "^1.1.0" + JSONStream "^1.0.3" + path-is-absolute "^1.0.1" + process "~0.11.0" + through2 "^2.0.0" + undeclared-identifiers "^1.1.2" + xtend "^4.0.0" + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +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: + 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== + +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" + +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== + +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" + +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: + kind-of "^6.0.0" + +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: + call-bind "^1.0.2" + has-tostringtag "^1.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 sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +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: + 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" + +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: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-buffer@^1.1.0: + version "1.1.6" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-buffer@^1.1.5: + 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.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-callable@^1.1.3, is-callable@^1.2.2: + version "1.2.2" + +is-callable@^1.1.4, is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + +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: + ci-info "^2.0.0" -"is-callable@^1.1.4", "is-callable@^1.2.4": - "integrity" "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" - "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz" - "version" "1.2.4" - -"is-ci@^2.0.0": - "integrity" "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==" - "resolved" "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "ci-info" "^2.0.0" +is-core-module@^2.2.0, is-core-module@^2.8.0: + version "2.8.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz" + integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== + dependencies: + has "^1.0.3" + +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: + kind-of "^3.0.2" + +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: + kind-of "^6.0.0" -"is-core-module@^2.2.0", "is-core-module@^2.8.0": - "integrity" "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==" - "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz" - "version" "2.8.0" - dependencies: - "has" "^1.0.3" - -"is-data-descriptor@^0.1.4": - "integrity" "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==" - "resolved" "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" - "version" "0.1.4" - dependencies: - "kind-of" "^3.0.2" - -"is-data-descriptor@^1.0.0": - "integrity" "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==" - "resolved" "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "kind-of" "^6.0.0" - -"is-date-object@^1.0.1": - "integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==" - "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" - "version" "1.0.5" +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: - "has-tostringtag" "^1.0.0" - -"is-descriptor@^0.1.0": - "integrity" "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==" - "resolved" "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" - "version" "0.1.6" - dependencies: - "is-accessor-descriptor" "^0.1.6" - "is-data-descriptor" "^0.1.4" - "kind-of" "^5.0.0" - -"is-descriptor@^1.0.0", "is-descriptor@^1.0.2": - "integrity" "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==" - "resolved" "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "is-accessor-descriptor" "^1.0.0" - "is-data-descriptor" "^1.0.0" - "kind-of" "^6.0.2" - -"is-directory@^0.3.1": - "integrity" "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" - "resolved" "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" - "version" "0.3.1" + has-tostringtag "^1.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== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.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== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +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-docker@^2.0.0", "is-docker@^2.1.1": - "integrity" "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" - "resolved" "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" - "version" "2.2.1" - -"is-extendable@^0.1.0", "is-extendable@^0.1.1": - "integrity" "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" - "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" - "version" "0.1.1" - -"is-extendable@^0.1.1": - "integrity" "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" - "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" - "version" "0.1.1" - -"is-extendable@^1.0.1": - "integrity" "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==" - "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "is-plain-object" "^2.0.4" - -"is-extglob@^2.1.1": - "integrity" "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - "version" "2.1.1" - -"is-finite@^1.0.0": - "integrity" "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" - "resolved" "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz" - "version" "1.1.0" - -"is-fn@^1.0.0": - "integrity" "sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg==" - "resolved" "https://registry.npmjs.org/is-fn/-/is-fn-1.0.0.tgz" - "version" "1.0.0" +is-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== + +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== + +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== + 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 sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +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== -"is-fullwidth-code-point@^1.0.0": - "integrity" "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" - "version" "1.0.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== dependencies: - "number-is-nan" "^1.0.0" + number-is-nan "^1.0.0" -"is-fullwidth-code-point@^2.0.0": - "integrity" "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" - "version" "2.0.0" +is-fullwidth-code-point@^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 sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= -"is-fullwidth-code-point@^3.0.0": - "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - "version" "3.0.0" +is-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": - "integrity" "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" - "resolved" "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz" - "version" "1.0.2" +is-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== -"is-generator-function@^1.0.7": - "integrity" "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==" - "resolved" "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@^4.0.3", "is-glob@~4.0.1": - "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "is-extglob" "^2.1.1" - -"is-hex-prefixed@1.0.0": - "integrity" "sha1-fY035q135dEnFIkTxXPggtd39VQ=" - "resolved" "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz" - "version" "1.0.0" - -"is-lower-case@^1.1.0": - "integrity" "sha1-fhR75HaNxGbbO/shzGCzHmrWk5M=" - "resolved" "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "lower-case" "^1.1.0" - -"is-negative-zero@^2.0.0": - "version" "2.0.1" - -"is-negative-zero@^2.0.1": - "integrity" "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - "resolved" "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" - "version" "2.0.2" - -"is-number-object@^1.0.4": - "integrity" "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==" - "resolved" "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-number@^3.0.0": - "integrity" "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "kind-of" "^3.0.2" - -"is-number@^7.0.0": - "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - "version" "7.0.0" - -"is-object@^1.0.1": - "integrity" "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==" - "resolved" "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz" - "version" "1.0.2" - -"is-plain-obj@^1.1.0": - "integrity" "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" - "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" - "version" "1.1.0" - -"is-plain-obj@^2.1.0": - "integrity" "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" - "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" - "version" "2.1.0" - -"is-plain-object@^2.0.3", "is-plain-object@^2.0.4": - "integrity" "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==" - "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" - "version" "2.0.4" +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: - "isobject" "^3.0.1" - -"is-regex@^1.0.4", "is-regex@^1.1.1": - "version" "1.1.1" + has-tostringtag "^1.0.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +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 sha1-fY035q135dEnFIkTxXPggtd39VQ= + +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 sha1-fhR75HaNxGbbO/shzGCzHmrWk5M= + dependencies: + lower-case "^1.1.0" + +is-negative-zero@^2.0.0: + version "2.0.1" + +is-negative-zero@^2.0.1: + 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.6" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz" + integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== + dependencies: + has-tostringtag "^1.0.0" + +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: + 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-object@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz" + integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== + +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 sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +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== + +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: + isobject "^3.0.1" + +is-regex@^1.0.4, is-regex@^1.1.1: + version "1.1.1" dependencies: - "has-symbols" "^1.0.1" - -"is-regex@^1.1.4": - "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" - "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" - "version" "1.1.4" + has-symbols "^1.0.1" + +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" - -"is-regex@~1.0.5": - "version" "1.0.5" - dependencies: - "has" "^1.0.3" - -"is-retry-allowed@^1.0.0": - "integrity" "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" - "resolved" "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz" - "version" "1.2.0" - -"is-shared-array-buffer@^1.0.1": - "integrity" "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" - "resolved" "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz" - "version" "1.0.1" - -"is-stream@^1.0.0": - "integrity" "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" - "version" "1.1.0" - -"is-stream@^1.0.1": - "integrity" "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" - "version" "1.1.0" - -"is-string@^1.0.5", "is-string@^1.0.7": - "integrity" "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==" - "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-symbol@^1.0.2", "is-symbol@^1.0.3": - "integrity" "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==" - "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "has-symbols" "^1.0.2" - -"is-typed-array@^1.1.3", "is-typed-array@^1.1.7": - "integrity" "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==" - "resolved" "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz" - "version" "1.1.8" - dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "es-abstract" "^1.18.5" - "foreach" "^2.0.5" - "has-tostringtag" "^1.0.0" - -"is-typedarray@^1.0.0", "is-typedarray@~1.0.0": - "integrity" "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - "resolved" "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - "version" "1.0.0" - -"is-unicode-supported@^0.1.0": - "integrity" "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - "resolved" "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" - "version" "0.1.0" - -"is-upper-case@^1.1.0": - "integrity" "sha1-jQsfp+eTOh5YSDYA7H2WYcuvdW8=" - "resolved" "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "upper-case" "^1.1.0" - -"is-url@^1.2.4": - "integrity" "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" - "resolved" "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz" - "version" "1.2.4" - -"is-utf8@^0.2.0": - "integrity" "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - "resolved" "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" - "version" "0.2.1" - -"is-weakref@^1.0.1": - "integrity" "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==" - "resolved" "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "call-bind" "^1.0.2" - -"is-windows@^1.0.2": - "integrity" "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - "resolved" "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" - "version" "1.0.2" - -"is-wsl@^2.1.1", "is-wsl@^2.2.0": - "integrity" "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==" - "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "is-docker" "^2.0.0" - -"isarray@~1.0.0", "isarray@1.0.0": - "integrity" "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - "version" "1.0.0" - -"isarray@0.0.1": - "integrity" "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - "version" "0.0.1" - -"isexe@^2.0.0": - "integrity" "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - "version" "2.0.0" - -"isobject@^2.0.0": - "integrity" "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==" - "resolved" "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "isarray" "1.0.0" - -"isobject@^3.0.0", "isobject@^3.0.1": - "integrity" "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" - "resolved" "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" - "version" "3.0.1" - -"isstream@~0.1.2": - "integrity" "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - "resolved" "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - "version" "0.1.2" - -"isurl@^1.0.0-alpha5": - "integrity" "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==" - "resolved" "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "has-to-string-tag-x" "^1.2.0" - "is-object" "^1.0.1" - -"js-sha3@^0.5.7", "js-sha3@0.5.7": - "integrity" "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" - "resolved" "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz" - "version" "0.5.7" - -"js-sha3@^0.8.0", "js-sha3@0.8.0": - "integrity" "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" - "resolved" "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" - "version" "0.8.0" - -"js-sha3@0.5.5": - "integrity" "sha1-uvDA6MVK1ZA0R9+Wreekobynmko=" - "resolved" "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.5.tgz" - "version" "0.5.5" - -"js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0": - "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - "version" "4.0.0" - -"js-tokens@^3.0.2": - "integrity" "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==" - "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" - "version" "3.0.2" - -"js-yaml@^3.12.0", "js-yaml@^3.13.0", "js-yaml@^3.13.1", "js-yaml@3.13.1", "js-yaml@3.x": - "integrity" "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz" - "version" "3.13.1" - dependencies: - "argparse" "^1.0.7" - "esprima" "^4.0.0" - -"js-yaml@^4.1.0": - "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "argparse" "^2.0.1" - -"js-yaml@4.1.0": - "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "argparse" "^2.0.1" - -"jsbi@^3.1.4": - "integrity" "sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ==" - "resolved" "https://registry.npmjs.org/jsbi/-/jsbi-3.2.5.tgz" - "version" "3.2.5" - -"jsbn@~0.1.0": - "integrity" "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - "resolved" "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" - "version" "0.1.1" - -"jsesc@^1.3.0": - "integrity" "sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz" - "version" "1.3.0" - -"jsesc@~0.5.0": - "integrity" "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" - "version" "0.5.0" - -"json-buffer@3.0.0": - "integrity" "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" - "version" "3.0.0" - -"json-parse-better-errors@^1.0.1": - "integrity" "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - "resolved" "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" - "version" "1.0.2" - -"json-rpc-engine@^3.4.0", "json-rpc-engine@^3.6.0": - "integrity" "sha512-6QNcvm2gFuuK4TKU1uwfH0Qd/cOSb9c1lls0gbnIhciktIUQJwz6NQNAW4B1KiGPenv7IKu97V222Yo1bNhGuA==" - "resolved" "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-3.8.0.tgz" - "version" "3.8.0" - 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" - -"json-rpc-error@^2.0.0": - "integrity" "sha512-EwUeWP+KgAZ/xqFpaP6YDAXMtCJi+o/QQpCQFIYyxr01AdADi2y413eM8hSqJcoQym9WMePAJWoaODEJufC4Ug==" - "resolved" "https://registry.npmjs.org/json-rpc-error/-/json-rpc-error-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "inherits" "^2.0.1" - -"json-rpc-random-id@^1.0.0": - "integrity" "sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==" - "resolved" "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz" - "version" "1.0.1" - -"json-schema-traverse@^0.4.1": - "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - "version" "0.4.1" - -"json-schema-traverse@^1.0.0": - "integrity" "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" - "version" "1.0.0" - -"json-schema@0.2.3": - "version" "0.2.3" - -"json-schema@0.4.0": - "integrity" "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - "resolved" "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" - "version" "0.4.0" - -"json-stable-stringify-without-jsonify@^1.0.1": - "integrity" "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" - "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - "version" "1.0.1" - -"json-stable-stringify@^1.0.1": - "version" "1.0.1" - dependencies: - "jsonify" "~0.0.0" - -"json-stringify-safe@~5.0.1": - "integrity" "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - "resolved" "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - "version" "5.0.1" - -"json5@^0.5.1": - "integrity" "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==" - "resolved" "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz" - "version" "0.5.1" - -"json5@^1.0.1": - "integrity" "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==" - "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "minimist" "^1.2.0" - -"jsonfile@^2.1.0": - "integrity" "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==" - "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz" - "version" "2.4.0" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-regex@~1.0.5: + version "1.0.5" + dependencies: + has "^1.0.3" + +is-retry-allowed@^1.0.0: + version "1.2.0" + resolved "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== + +is-shared-array-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz" + integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== + +is-stream@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^1.0.1: + version "1.1.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +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: + has-tostringtag "^1.0.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== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.3, is-typed-array@^1.1.7: + version "1.1.8" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz" + integrity sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-abstract "^1.18.5" + foreach "^2.0.5" + has-tostringtag "^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 sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +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 sha1-jQsfp+eTOh5YSDYA7H2WYcuvdW8= + dependencies: + upper-case "^1.1.0" + +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 sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-weakref@^1.0.1: + 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: + call-bind "^1.0.2" + +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== + +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== + dependencies: + is-docker "^2.0.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 sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +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== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +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" + +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== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz" + integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + +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 sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= + +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== + +js-sha3@0.5.5: + version "0.5.5" + resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.5.tgz" + integrity sha1-uvDA6MVK1ZA0R9+Wreekobynmko= + +"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== + +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== + +js-yaml@^3.13.1, js-yaml@3.13.1, js-yaml@3.x: + version "3.13.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.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: + argparse "^2.0.1" + +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: + argparse "^2.0.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== + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +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== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + +json-parse-even-better-errors@^2.3.0: + 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: + 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" + +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: + inherits "^2.0.1" + +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== + +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== + +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== + +json-schema@0.2.3: + version "0.2.3" + +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== + +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 sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stable-stringify@^1.0.1: + version "1.0.1" + dependencies: + jsonify "~0.0.0" + +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 sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz" + integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +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" + graceful-fs "^4.1.6" -"jsonfile@^4.0.0": - "integrity" "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=" - "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" - "version" "4.0.0" +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= optionalDependencies: - "graceful-fs" "^4.1.6" + graceful-fs "^4.1.6" -"jsonfile@^6.0.1": - "integrity" "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==" - "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" - "version" "6.1.0" +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: - "universalify" "^2.0.0" + universalify "^2.0.0" optionalDependencies: - "graceful-fs" "^4.1.6" + graceful-fs "^4.1.6" -"jsonify@~0.0.0": - "version" "0.0.0" - -"jsonparse@^1.2.0": - "integrity" "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" - "resolved" "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" - "version" "1.3.1" - -"jsonschema@^1.2.4": - "integrity" "sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw==" - "resolved" "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.0.tgz" - "version" "1.4.0" +jsonify@~0.0.0: + version "0.0.0" + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" + integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= + +jsonschema@^1.2.4: + version "1.4.0" + resolved "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.0.tgz" + integrity sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw== -"JSONStream@^1.0.3": - "integrity" "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==" - "resolved" "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" - "version" "1.3.5" - dependencies: - "jsonparse" "^1.2.0" - "through" ">=2.2.7 <3" - -"jsprim@^1.2.2": - "integrity" "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==" - "resolved" "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" - "version" "1.4.2" - dependencies: - "assert-plus" "1.0.0" - "extsprintf" "1.3.0" - "json-schema" "0.4.0" - "verror" "1.10.0" - -"jsx-ast-utils@^2.4.1 || ^3.0.0", "jsx-ast-utils@^3.2.1": - "integrity" "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==" - "resolved" "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "array-includes" "^3.1.3" - "object.assign" "^4.1.2" - -"keccak@^2.0.0": - "integrity" "sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q==" - "resolved" "https://registry.npmjs.org/keccak/-/keccak-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "bindings" "^1.5.0" - "inherits" "^2.0.4" - "nan" "^2.14.0" - "safe-buffer" "^5.2.0" - -"keccak@^3.0.0", "keccak@^3.0.2": - "integrity" "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==" - "resolved" "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "node-addon-api" "^2.0.0" - "node-gyp-build" "^4.2.0" - "readable-stream" "^3.6.0" - -"keccak@3.0.1": - "integrity" "sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==" - "resolved" "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "node-addon-api" "^2.0.0" - "node-gyp-build" "^4.2.0" - -"keyv@^3.0.0": - "integrity" "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==" - "resolved" "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "json-buffer" "3.0.0" - -"kind-of@^3.0.2", "kind-of@^3.0.3": - "integrity" "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" - "version" "3.2.2" - dependencies: - "is-buffer" "^1.1.5" - -"kind-of@^3.2.0": - "integrity" "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" - "version" "3.2.2" - dependencies: - "is-buffer" "^1.1.5" - -"kind-of@^4.0.0": - "integrity" "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "is-buffer" "^1.1.5" - -"kind-of@^5.0.0": - "integrity" "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" - "version" "5.1.0" - -"kind-of@^6.0.0", "kind-of@^6.0.2": - "integrity" "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" - "version" "6.0.3" - -"klaw-sync@^6.0.0": - "integrity" "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==" - "resolved" "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "graceful-fs" "^4.1.11" - -"klaw@^1.0.0": - "integrity" "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=" - "resolved" "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz" - "version" "1.3.1" +JSONStream@^1.0.3: + version "1.3.5" + resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +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" + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz" + integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== + dependencies: + array-includes "^3.1.3" + object.assign "^4.1.2" + +keccak@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/keccak/-/keccak-2.1.0.tgz" + integrity sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q== + dependencies: + bindings "^1.5.0" + inherits "^2.0.4" + nan "^2.14.0" + safe-buffer "^5.2.0" + +keccak@^3.0.0, keccak@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz" + integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +keccak@3.0.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" + +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: + json-buffer "3.0.0" + +kind-of@^3.0.2, kind-of@^3.0.3: + 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" + +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" + +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" + +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== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +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: + graceful-fs "^4.1.11" + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz" + integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= optionalDependencies: - "graceful-fs" "^4.1.9" + graceful-fs "^4.1.9" -"kleur@^3.0.3": - "integrity" "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" - "resolved" "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" - "version" "3.0.3" +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -"labeled-stream-splicer@^2.0.0": - "integrity" "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==" - "resolved" "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz" - "version" "2.0.2" +labeled-stream-splicer@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz" + integrity sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw== dependencies: - "inherits" "^2.0.1" - "stream-splicer" "^2.0.0" + inherits "^2.0.1" + stream-splicer "^2.0.0" -"language-subtag-registry@~0.3.2": - "integrity" "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==" - "resolved" "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz" - "version" "0.3.21" - -"language-tags@^1.0.5": - "integrity" "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=" - "resolved" "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "language-subtag-registry" "~0.3.2" - -"lcid@^1.0.0": - "integrity" "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==" - "resolved" "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "invert-kv" "^1.0.0" - -"level-codec@^9.0.0": - "integrity" "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==" - "resolved" "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz" - "version" "9.0.2" - dependencies: - "buffer" "^5.6.0" - -"level-codec@~7.0.0": - "integrity" "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==" - "resolved" "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz" - "version" "7.0.1" - -"level-errors@^1.0.3", "level-errors@~1.0.3": - "integrity" "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==" - "resolved" "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "errno" "~0.1.1" - -"level-errors@^2.0.0", "level-errors@~2.0.0": - "integrity" "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==" - "resolved" "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "errno" "~0.1.1" - -"level-iterator-stream@^2.0.3": - "integrity" "sha512-I6Heg70nfF+e5Y3/qfthJFexhRw/Gi3bIymCoXAlijZdAcLaPuWSJs3KXyTYf23ID6g0o2QF62Yh+grOXY3Rig==" - "resolved" "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-2.0.3.tgz" - "version" "2.0.3" - dependencies: - "inherits" "^2.0.1" - "readable-stream" "^2.0.5" - "xtend" "^4.0.0" - -"level-iterator-stream@~1.3.0": - "integrity" "sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==" - "resolved" "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz" - "version" "1.3.1" - dependencies: - "inherits" "^2.0.1" - "level-errors" "^1.0.3" - "readable-stream" "^1.0.33" - "xtend" "^4.0.0" - -"level-iterator-stream@~3.0.0": - "integrity" "sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g==" - "resolved" "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "inherits" "^2.0.1" - "readable-stream" "^2.3.6" - "xtend" "^4.0.0" - -"level-mem@^3.0.1": - "integrity" "sha512-LbtfK9+3Ug1UmvvhR2DqLqXiPW1OJ5jEh0a3m9ZgAipiwpSxGj/qaVVy54RG5vAQN1nCuXqjvprCuKSCxcJHBg==" - "resolved" "https://registry.npmjs.org/level-mem/-/level-mem-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "level-packager" "~4.0.0" - "memdown" "~3.0.0" - -"level-packager@~4.0.0": - "integrity" "sha512-svCRKfYLn9/4CoFfi+d8krOtrp6RoX8+xm0Na5cgXMqSyRru0AnDYdLl+YI8u1FyS6gGZ94ILLZDE5dh2but3Q==" - "resolved" "https://registry.npmjs.org/level-packager/-/level-packager-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "encoding-down" "~5.0.0" - "levelup" "^3.0.0" - -"level-post@^1.0.7": - "integrity" "sha512-PWYqG4Q00asOrLhX7BejSajByB4EmG2GaKHfj3h5UmmZ2duciXLPGYWIjBzLECFWUGOZWlm5B20h/n3Gs3HKew==" - "resolved" "https://registry.npmjs.org/level-post/-/level-post-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "ltgt" "^2.1.2" - -"level-sublevel@6.6.4": - "integrity" "sha512-pcCrTUOiO48+Kp6F1+UAzF/OtWqLcQVTVF39HLdZ3RO8XBoXt+XVPKZO1vVr1aUoxHZA9OtD2e1v7G+3S5KFDA==" - "resolved" "https://registry.npmjs.org/level-sublevel/-/level-sublevel-6.6.4.tgz" - "version" "6.6.4" - 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" - -"level-supports@^4.0.0": - "integrity" "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==" - "resolved" "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz" - "version" "4.0.1" - -"level-transcoder@^1.0.1": - "integrity" "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==" - "resolved" "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "buffer" "^6.0.3" - "module-error" "^1.0.1" - -"level-ws@^1.0.0": - "integrity" "sha512-RXEfCmkd6WWFlArh3X8ONvQPm8jNpfA0s/36M4QzLqrLEIt1iJE9WBHLZ5vZJK6haMjJPJGJCQWfjMNnRcq/9Q==" - "resolved" "https://registry.npmjs.org/level-ws/-/level-ws-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "inherits" "^2.0.3" - "readable-stream" "^2.2.8" - "xtend" "^4.0.1" - -"level-ws@0.0.0": - "integrity" "sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw==" - "resolved" "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz" - "version" "0.0.0" - dependencies: - "readable-stream" "~1.0.15" - "xtend" "~2.1.1" - -"level@^8.0.0": - "integrity" "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==" - "resolved" "https://registry.npmjs.org/level/-/level-8.0.0.tgz" - "version" "8.0.0" - dependencies: - "browser-level" "^1.0.1" - "classic-level" "^1.2.0" - -"levelup@^1.2.1": - "integrity" "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==" - "resolved" "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz" - "version" "1.3.9" - dependencies: - "deferred-leveldown" "~1.2.1" - "level-codec" "~7.0.0" - "level-errors" "~1.0.3" - "level-iterator-stream" "~1.3.0" - "prr" "~1.0.1" - "semver" "~5.4.1" - "xtend" "~4.0.0" - -"levelup@^3.0.0", "levelup@3.1.1": - "integrity" "sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg==" - "resolved" "https://registry.npmjs.org/levelup/-/levelup-3.1.1.tgz" - "version" "3.1.1" - dependencies: - "deferred-leveldown" "~4.0.0" - "level-errors" "~2.0.0" - "level-iterator-stream" "~3.0.0" - "xtend" "~4.0.0" - -"levn@^0.3.0", "levn@~0.3.0": - "integrity" "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=" - "resolved" "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" - "version" "0.3.0" - dependencies: - "prelude-ls" "~1.1.2" - "type-check" "~0.3.2" - -"levn@^0.4.1": - "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" - "resolved" "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" - "version" "0.4.1" - dependencies: - "prelude-ls" "^1.2.1" - "type-check" "~0.4.0" - -"load-json-file@^1.0.0": - "integrity" "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==" - "resolved" "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz" - "version" "1.1.0" - 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" - -"locate-path@^2.0.0": - "integrity" "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "p-locate" "^2.0.0" - "path-exists" "^3.0.0" - -"locate-path@^3.0.0": - "integrity" "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "p-locate" "^3.0.0" - "path-exists" "^3.0.0" - -"locate-path@^5.0.0": - "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "p-locate" "^4.1.0" - -"locate-path@^6.0.0": - "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "p-locate" "^5.0.0" - -"lodash.assign@^4.0.3", "lodash.assign@^4.0.6": - "integrity" "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==" - "resolved" "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz" - "version" "4.2.0" - -"lodash.camelcase@^4.3.0": - "integrity" "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" - "resolved" "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" - "version" "4.3.0" - -"lodash.flatten@^4.4.0": - "integrity" "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" - "resolved" "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz" - "version" "4.4.0" - -"lodash.memoize@~3.0.3": - "integrity" "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=" - "resolved" "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz" - "version" "3.0.4" - -"lodash.merge@^4.6.2": - "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - "version" "4.6.2" - -"lodash.truncate@^4.4.2": - "integrity" "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=" - "resolved" "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" - "version" "4.4.2" - -"lodash@^4.17.11", "lodash@^4.17.12", "lodash@^4.17.14", "lodash@^4.17.15", "lodash@^4.17.19", "lodash@^4.17.21": - "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - "version" "4.17.21" - -"lodash@^4.17.4", "lodash@4.17.20": - "integrity" "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" - "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz" - "version" "4.17.20" - -"log-symbols@3.0.0": - "integrity" "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==" - "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "chalk" "^2.4.2" - -"log-symbols@4.1.0": - "integrity" "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==" - "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "chalk" "^4.1.0" - "is-unicode-supported" "^0.1.0" - -"looper@^2.0.0": - "integrity" "sha512-6DzMHJcjbQX/UPHc1rRCBfKlLwDkvuGZ715cIR36wSdYqWXFT35uLXq5P/2orl3tz+t+VOVPxw4yPinQlUDGDQ==" - "resolved" "https://registry.npmjs.org/looper/-/looper-2.0.0.tgz" - "version" "2.0.0" - -"looper@^3.0.0": - "integrity" "sha512-LJ9wplN/uSn72oJRsXTx+snxPet5c8XiZmOKCm906NVYu+ag6SB6vUcnJcWxgnl2NfbIyeobAn7Bwv6xRj2XJg==" - "resolved" "https://registry.npmjs.org/looper/-/looper-3.0.0.tgz" - "version" "3.0.0" - -"loose-envify@^1.0.0": - "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" - "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "js-tokens" "^3.0.0 || ^4.0.0" - -"loose-envify@^1.4.0": - "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" - "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "js-tokens" "^3.0.0 || ^4.0.0" - -"lower-case-first@^1.0.0": - "integrity" "sha1-5dp8JvKacHO+AtUrrJmA5ZIq36E=" - "resolved" "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "lower-case" "^1.1.2" - -"lower-case@^1.1.0", "lower-case@^1.1.1", "lower-case@^1.1.2": - "integrity" "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" - "resolved" "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz" - "version" "1.1.4" - -"lowercase-keys@^1.0.0", "lowercase-keys@^1.0.1": - "integrity" "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" - "version" "1.0.1" - -"lowercase-keys@^2.0.0": - "integrity" "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" - "version" "2.0.0" - -"lru_map@^0.3.3": - "integrity" "sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0=" - "resolved" "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz" - "version" "0.3.3" - -"lru-cache@^3.2.0": - "integrity" "sha512-91gyOKTc2k66UG6kHiH4h3S2eltcPwE1STVfMYC/NG+nZwf8IIuiamfmpGZjpbbxzSyEJaLC0tNSmhjlQUTJow==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "pseudomap" "^1.0.1" - -"lru-cache@^5.1.1", "lru-cache@5.1.1": - "integrity" "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "yallist" "^3.0.2" - -"lru-cache@^6.0.0": - "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "yallist" "^4.0.0" - -"ltgt@^2.1.2", "ltgt@~2.1.1": - "integrity" "sha512-5VjHC5GsENtIi5rbJd+feEpDKhfr7j0odoUR2Uh978g+2p93nd5o34cTjQWohXsPsCZeqoDnIqEf88mPCe0Pfw==" - "resolved" "https://registry.npmjs.org/ltgt/-/ltgt-2.1.3.tgz" - "version" "2.1.3" - -"ltgt@~2.2.0": - "integrity" "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==" - "resolved" "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz" - "version" "2.2.1" - -"make-error@^1.1.1": - "integrity" "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - "resolved" "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" - "version" "1.3.6" - -"map-cache@^0.2.2": - "integrity" "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" - "resolved" "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" - "version" "0.2.2" - -"map-visit@^1.0.0": - "integrity" "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==" - "resolved" "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "object-visit" "^1.0.0" - -"markdown-table@^1.1.3": - "integrity" "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==" - "resolved" "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz" - "version" "1.1.3" - -"match-all@^1.2.6": - "integrity" "sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==" - "resolved" "https://registry.npmjs.org/match-all/-/match-all-1.2.6.tgz" - "version" "1.2.6" - -"mcl-wasm@^0.7.1": - "integrity" "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==" - "resolved" "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz" - "version" "0.7.9" - -"md5.js@^1.3.4": - "integrity" "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==" - "resolved" "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" - "version" "1.3.5" - dependencies: - "hash-base" "^3.0.0" - "inherits" "^2.0.1" - "safe-buffer" "^5.1.2" - -"media-typer@0.3.0": - "integrity" "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - "version" "0.3.0" - -"memdown@^1.0.0": - "integrity" "sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==" - "resolved" "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz" - "version" "1.4.1" - dependencies: - "abstract-leveldown" "~2.7.1" - "functional-red-black-tree" "^1.0.1" - "immediate" "^3.2.3" - "inherits" "~2.0.1" - "ltgt" "~2.2.0" - "safe-buffer" "~5.1.1" - -"memdown@~3.0.0": - "integrity" "sha512-tbV02LfZMWLcHcq4tw++NuqMO+FZX8tNJEiD2aNRm48ZZusVg5N8NART+dmBkepJVye986oixErf7jfXboMGMA==" - "resolved" "https://registry.npmjs.org/memdown/-/memdown-3.0.0.tgz" - "version" "3.0.0" - 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" - -"memory-level@^1.0.0": - "integrity" "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==" - "resolved" "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "abstract-level" "^1.0.0" - "functional-red-black-tree" "^1.0.1" - "module-error" "^1.0.1" - -"memorystream@^0.3.1": - "integrity" "sha1-htcJCzDORV1j+64S3aUaR93K+bI=" - "resolved" "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz" - "version" "0.3.1" - -"merge-descriptors@1.0.1": - "integrity" "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" - "version" "1.0.1" - -"merge2@^1.2.3", "merge2@^1.3.0", "merge2@^1.4.1": - "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - "version" "1.4.1" - -"merkle-patricia-tree@^2.1.2", "merkle-patricia-tree@^2.3.2": - "integrity" "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==" - "resolved" "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz" - "version" "2.3.2" - dependencies: - "async" "^1.4.2" - "ethereumjs-util" "^5.0.0" - "level-ws" "0.0.0" - "levelup" "^1.2.1" - "memdown" "^1.0.0" - "readable-stream" "^2.0.0" - "rlp" "^2.0.0" - "semaphore" ">=1.0.1" - -"merkle-patricia-tree@3.0.0": - "integrity" "sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ==" - "resolved" "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-3.0.0.tgz" - "version" "3.0.0" - 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" - -"methods@~1.1.2": - "integrity" "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - "version" "1.1.2" - -"micromatch@^3.1.4": - "integrity" "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" - "version" "3.1.10" - 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" - -"micromatch@^4.0.2", "micromatch@^4.0.4": - "integrity" "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz" - "version" "4.0.4" - dependencies: - "braces" "^3.0.1" - "picomatch" "^2.2.3" - -"miller-rabin@^4.0.0": - "integrity" "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==" - "resolved" "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "bn.js" "^4.0.0" - "brorand" "^1.0.1" - -"mime-db@1.45.0": - "version" "1.45.0" - -"mime-db@1.51.0": - "integrity" "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" - "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz" - "version" "1.51.0" - -"mime-types@^2.1.12", "mime-types@^2.1.16", "mime-types@~2.1.19", "mime-types@~2.1.24", "mime-types@~2.1.34": - "integrity" "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==" - "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz" - "version" "2.1.34" - dependencies: - "mime-db" "1.51.0" - -"mime@1.6.0": - "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - "version" "1.6.0" - -"mimic-fn@^1.0.0": - "integrity" "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" - "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz" - "version" "1.2.0" - -"mimic-response@^1.0.0", "mimic-response@^1.0.1": - "integrity" "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" - "version" "1.0.1" - -"min-document@^2.19.0": - "integrity" "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=" - "resolved" "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz" - "version" "2.19.0" - dependencies: - "dom-walk" "^0.1.0" - -"minimalistic-assert@^1.0.0", "minimalistic-assert@^1.0.1": - "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - "version" "1.0.1" - -"minimalistic-crypto-utils@^1.0.0": - "integrity" "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - "resolved" "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" - "version" "1.0.1" - -"minimalistic-crypto-utils@^1.0.1": - "integrity" "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" - "resolved" "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" - "version" "1.0.1" - -"minimatch@^3.0.4", "minimatch@2 || 3", "minimatch@3.0.4": - "integrity" "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "brace-expansion" "^1.1.7" - -"minimatch@5.0.1": - "integrity" "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "brace-expansion" "^2.0.1" - -"minimist@^1.1.0", "minimist@^1.1.1", "minimist@^1.2.0", "minimist@^1.2.5", "minimist@~1.2.5": - "integrity" "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" - "version" "1.2.5" - -"minipass@^2.6.0", "minipass@^2.8.6", "minipass@^2.9.0": - "integrity" "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==" - "resolved" "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz" - "version" "2.9.0" - dependencies: - "safe-buffer" "^5.1.2" - "yallist" "^3.0.0" - -"minizlib@^1.2.1": - "version" "1.3.3" - dependencies: - "minipass" "^2.9.0" - -"minizlib@^1.3.3": - "integrity" "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==" - "resolved" "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz" - "version" "1.3.3" - dependencies: - "minipass" "^2.9.0" - -"mixin-deep@^1.2.0": - "integrity" "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==" - "resolved" "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "for-in" "^1.0.2" - "is-extendable" "^1.0.1" - -"mkdirp-classic@^0.5.2": - "integrity" "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - "resolved" "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz" - "version" "0.5.3" - -"mkdirp-promise@^5.0.1": - "integrity" "sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=" - "resolved" "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "mkdirp" "*" - -"mkdirp@*", "mkdirp@^0.5.0", "mkdirp@^0.5.1", "mkdirp@^0.5.5", "mkdirp@0.5.5", "mkdirp@0.5.x": - "integrity" "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" - "version" "0.5.5" - dependencies: - "minimist" "^1.2.5" - -"mkdirp@^1.0.4": - "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - "version" "1.0.4" - -"mnemonist@^0.38.0": - "integrity" "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==" - "resolved" "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz" - "version" "0.38.5" - dependencies: - "obliterator" "^2.0.0" - -"mocha@^10.0.0": - "integrity" "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==" - "resolved" "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz" - "version" "10.2.0" - 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" - -"mocha@^7.1.1": - "integrity" "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==" - "resolved" "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz" - "version" "7.2.0" - 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" - -"mock-fs@^4.1.0": - "integrity" "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==" - "resolved" "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz" - "version" "4.14.0" - -"module-deps@^6.2.3": - "integrity" "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==" - "resolved" "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz" - "version" "6.2.3" - dependencies: - "browser-resolve" "^2.0.0" - "cached-path-relative" "^1.0.2" - "concat-stream" "~1.6.0" - "defined" "^1.0.0" - "detective" "^5.2.0" - "duplexer2" "^0.1.2" - "inherits" "^2.0.1" - "JSONStream" "^1.0.3" - "parents" "^1.0.0" - "readable-stream" "^2.0.2" - "resolve" "^1.4.0" - "stream-combiner2" "^1.1.1" - "subarg" "^1.0.0" - "through2" "^2.0.0" - "xtend" "^4.0.0" - -"module-error@^1.0.1", "module-error@^1.0.2": - "integrity" "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==" - "resolved" "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz" - "version" "1.0.2" - -"ms@^2.1.1", "ms@2.1.2": - "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - "version" "2.1.2" - -"ms@2.0.0": - "integrity" "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - "version" "2.0.0" - -"ms@2.1.1": - "integrity" "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz" - "version" "2.1.1" - -"ms@2.1.3": - "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - "version" "2.1.3" - -"multibase@^0.7.0": - "integrity" "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==" - "resolved" "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz" - "version" "0.7.0" - dependencies: - "base-x" "^3.0.8" - "buffer" "^5.5.0" - -"multibase@~0.6.0": - "integrity" "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==" - "resolved" "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz" - "version" "0.6.1" - dependencies: - "base-x" "^3.0.8" - "buffer" "^5.5.0" - -"multicodec@^0.5.5": - "integrity" "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==" - "resolved" "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz" - "version" "0.5.7" - dependencies: - "varint" "^5.0.0" - -"multicodec@^1.0.0": - "integrity" "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==" - "resolved" "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "buffer" "^5.6.0" - "varint" "^5.0.0" - -"multihashes@^0.4.15", "multihashes@~0.4.15": - "integrity" "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==" - "resolved" "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz" - "version" "0.4.21" - dependencies: - "buffer" "^5.5.0" - "multibase" "^0.7.0" - "varint" "^5.0.0" - -"murmur-128@^0.2.1": - "integrity" "sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==" - "resolved" "https://registry.npmjs.org/murmur-128/-/murmur-128-0.2.1.tgz" - "version" "0.2.1" - dependencies: - "encode-utf8" "^1.0.2" - "fmix" "^0.1.0" - "imul" "^1.0.0" - -"mute-stream@0.0.7": - "integrity" "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" - "resolved" "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz" - "version" "0.0.7" - -"nan@^2.14.0": - "integrity" "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==" - "resolved" "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz" - "version" "2.15.0" - -"nano-base32@^1.0.1": - "integrity" "sha1-ulSMh578+5DaHE2eCX20pGySVe8=" - "resolved" "https://registry.npmjs.org/nano-base32/-/nano-base32-1.0.1.tgz" - "version" "1.0.1" - -"nano-json-stream-parser@^0.1.2": - "integrity" "sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18=" - "resolved" "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz" - "version" "0.1.2" - -"nanoid@3.3.3": - "integrity" "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==" - "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz" - "version" "3.3.3" - -"nanomatch@^1.2.9": - "integrity" "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==" - "resolved" "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" - "version" "1.2.13" - 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" - -"napi-macros@~2.0.0": - "integrity" "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==" - "resolved" "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz" - "version" "2.0.0" - -"natural-compare@^1.4.0": - "integrity" "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" - "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - "version" "1.4.0" - -"negotiator@0.6.2": - "version" "0.6.2" - -"negotiator@0.6.3": - "integrity" "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" - "version" "0.6.3" - -"neo-async@^2.6.0": - "integrity" "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - "resolved" "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" - "version" "2.6.2" - -"next-tick@~1.0.0": - "integrity" "sha1-yobR/ogoFpsBICCOPchCS524NCw=" - "resolved" "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz" - "version" "1.0.0" - -"nice-try@^1.0.4": - "integrity" "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - "resolved" "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" - "version" "1.0.5" - -"no-case@^2.2.0", "no-case@^2.3.2": - "integrity" "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==" - "resolved" "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz" - "version" "2.3.2" - dependencies: - "lower-case" "^1.1.1" - -"node-addon-api@^2.0.0": - "integrity" "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" - "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz" - "version" "2.0.2" - -"node-emoji@^1.10.0": - "integrity" "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==" - "resolved" "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" - "version" "1.11.0" - dependencies: - "lodash" "^4.17.21" - -"node-environment-flags@1.0.6": - "integrity" "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==" - "resolved" "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "object.getownpropertydescriptors" "^2.0.3" - "semver" "^5.7.0" - -"node-fetch@^2.6.0", "node-fetch@^2.6.1", "node-fetch@^2.6.5", "node-fetch@^2.6.7", "node-fetch@2.6.7": - "integrity" "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==" - "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" - "version" "2.6.7" - dependencies: - "whatwg-url" "^5.0.0" - -"node-fetch@~1.7.1": - "integrity" "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==" - "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz" - "version" "1.7.3" - dependencies: - "encoding" "^0.1.11" - "is-stream" "^1.0.1" - -"node-fetch@2.1.2": - "version" "2.1.2" - -"node-gyp-build@^4.2.0", "node-gyp-build@^4.3.0": - "integrity" "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==" - "resolved" "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz" - "version" "4.3.0" - -"nofilter@^1.0.4": - "integrity" "sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA==" - "resolved" "https://registry.npmjs.org/nofilter/-/nofilter-1.0.4.tgz" - "version" "1.0.4" - -"nofilter@^3.1.0": - "integrity" "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==" - "resolved" "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz" - "version" "3.1.0" - -"nopt@3.x": - "integrity" "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=" - "resolved" "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz" - "version" "3.0.6" - dependencies: - "abbrev" "1" - -"normalize-package-data@^2.3.2": - "integrity" "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==" - "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" - "version" "2.5.0" - dependencies: - "hosted-git-info" "^2.1.4" - "resolve" "^1.10.0" - "semver" "2 || 3 || 4 || 5" - "validate-npm-package-license" "^3.0.1" - -"normalize-path@^3.0.0", "normalize-path@~3.0.0": - "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - "version" "3.0.0" - -"normalize-url@^4.1.0": - "integrity" "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" - "version" "4.5.1" - -"nth-check@^2.0.1": - "integrity" "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==" - "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "boolbase" "^1.0.0" - -"number-is-nan@^1.0.0": - "integrity" "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==" - "resolved" "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" - "version" "1.0.1" - -"number-to-bn@1.7.0": - "integrity" "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=" - "resolved" "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz" - "version" "1.7.0" - dependencies: - "bn.js" "4.11.6" - "strip-hex-prefix" "1.0.0" - -"oauth-sign@~0.9.0": - "integrity" "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - "resolved" "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" - "version" "0.9.0" - -"object-assign@^4", "object-assign@^4.0.0", "object-assign@^4.1.0", "object-assign@^4.1.1": - "integrity" "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - "version" "4.1.1" - -"object-copy@^0.1.0": - "integrity" "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==" - "resolved" "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" - "version" "0.1.0" - dependencies: - "copy-descriptor" "^0.1.0" - "define-property" "^0.2.5" - "kind-of" "^3.0.3" - -"object-inspect@^1.11.0", "object-inspect@^1.9.0": - "integrity" "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==" - "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz" - "version" "1.11.1" - -"object-inspect@^1.8.0": - "version" "1.9.0" - -"object-inspect@~1.7.0": - "version" "1.7.0" - -"object-is@^1.0.1": - "version" "1.1.4" - dependencies: - "call-bind" "^1.0.0" - "define-properties" "^1.1.3" - -"object-keys@^1.0.11", "object-keys@^1.0.12", "object-keys@^1.1.1": - "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - "version" "1.1.1" - -"object-keys@~0.4.0": - "integrity" "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==" - "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz" - "version" "0.4.0" - -"object-visit@^1.0.0": - "integrity" "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==" - "resolved" "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "isobject" "^3.0.0" - -"object.assign@^4.1.1": - "version" "4.1.2" - dependencies: - "call-bind" "^1.0.0" - "define-properties" "^1.1.3" - "has-symbols" "^1.0.1" - "object-keys" "^1.1.1" - -"object.assign@^4.1.2": - "integrity" "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==" - "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "call-bind" "^1.0.0" - "define-properties" "^1.1.3" - "has-symbols" "^1.0.1" - "object-keys" "^1.1.1" - -"object.assign@4.1.0": - "integrity" "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==" - "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "define-properties" "^1.1.2" - "function-bind" "^1.1.1" - "has-symbols" "^1.0.0" - "object-keys" "^1.0.11" - -"object.entries@^1.1.2", "object.entries@^1.1.5": - "integrity" "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==" - "resolved" "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz" - "version" "1.1.5" +language-subtag-registry@~0.3.2: + version "0.3.21" + resolved "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz" + integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== + +language-tags@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz" + integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= + dependencies: + language-subtag-registry "~0.3.2" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz" + integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== + dependencies: + invert-kv "^1.0.0" + +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" + +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== + +level-errors@^1.0.3, 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" + +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" + +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: + inherits "^2.0.1" + readable-stream "^2.0.5" + xtend "^4.0.0" + +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" + +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: + inherits "^2.0.1" + readable-stream "^2.3.6" + xtend "^4.0.0" + +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: + level-packager "~4.0.0" + memdown "~3.0.0" + +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: + encoding-down "~5.0.0" + levelup "^3.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== + dependencies: + ltgt "^2.1.2" + +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" + +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== + +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: + buffer "^6.0.3" + module-error "^1.0.1" + +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" + +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: + readable-stream "~1.0.15" + xtend "~2.1.1" + +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: + browser-level "^1.0.1" + classic-level "^1.2.0" + +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" + +levelup@^3.0.0, levelup@3.1.1: + 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" + +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: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +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== + +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" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.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== + dependencies: + p-locate "^3.0.0" + path-exists "^3.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== + dependencies: + p-locate "^4.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== + dependencies: + p-locate "^5.0.0" + +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== + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz" + integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= + +lodash.memoize@~3.0.3: + version "3.0.4" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz" + integrity sha1-LcvSwofLwKVcxCMovQxzYVDVPj8= + +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== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= + +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +lodash@^4.17.4, lodash@4.17.20: + version "4.17.20" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + +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" + +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: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +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== + +loose-envify@^1.0.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: + js-tokens "^3.0.0 || ^4.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: + js-tokens "^3.0.0 || ^4.0.0" + +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 sha1-5dp8JvKacHO+AtUrrJmA5ZIq36E= + dependencies: + lower-case "^1.1.2" + +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 sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + +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== + +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== + +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz" + integrity sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0= + +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" + +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" + +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" + +ltgt@^2.1.2, ltgt@~2.1.1: + version "2.1.3" + resolved "https://registry.npmjs.org/ltgt/-/ltgt-2.1.3.tgz" + integrity sha512-5VjHC5GsENtIi5rbJd+feEpDKhfr7j0odoUR2Uh978g+2p93nd5o34cTjQWohXsPsCZeqoDnIqEf88mPCe0Pfw== + +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== + +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== + +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== + +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: + object-visit "^1.0.0" + +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== + +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== + +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== + +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: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +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" + +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: + 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" + +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: + 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 sha1-htcJCzDORV1j+64S3aUaR93K+bI= + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +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== + +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: + 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" + +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" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +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: + 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" + +micromatch@^4.0.2, 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" + +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: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.45.0: + version "1.45.0" + +mime-db@1.51.0: + version "1.51.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz" + integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== + +mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.34" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz" + integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== + dependencies: + mime-db "1.51.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +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== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz" + integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= + dependencies: + dom-walk "^0.1.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== + +minimalistic-crypto-utils@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +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 sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@^3.0.4, "minimatch@2 || 3", 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: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +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: + brace-expansion "^2.0.1" + +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.5: + version "1.2.5" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass@^2.6.0, minipass@^2.8.6, 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: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.2.1: + version "1.3.3" + dependencies: + minipass "^2.9.0" + +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" + +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" + +mkdirp-classic@^0.5.2: + version "0.5.3" + resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + +mkdirp-promise@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz" + integrity sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE= + dependencies: + mkdirp "*" + +mkdirp@*, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@0.5.5, mkdirp@0.5.x: + version "0.5.5" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +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" + +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: + 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" + +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" + +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== + +module-deps@^6.2.3: + version "6.2.3" + resolved "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz" + integrity sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA== + dependencies: + browser-resolve "^2.0.0" + cached-path-relative "^1.0.2" + concat-stream "~1.6.0" + defined "^1.0.0" + detective "^5.2.0" + duplexer2 "^0.1.2" + inherits "^2.0.1" + JSONStream "^1.0.3" + parents "^1.0.0" + readable-stream "^2.0.2" + resolve "^1.4.0" + stream-combiner2 "^1.1.1" + subarg "^1.0.0" + through2 "^2.0.0" + xtend "^4.0.0" + +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== + +ms@^2.1.1, 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.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +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.3: + 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: + base-x "^3.0.8" + buffer "^5.5.0" + +multibase@~0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz" + integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== + dependencies: + base-x "^3.0.8" + buffer "^5.5.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== + dependencies: + varint "^5.0.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== + dependencies: + buffer "^5.6.0" + varint "^5.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== + dependencies: + buffer "^5.5.0" + multibase "^0.7.0" + varint "^5.0.0" + +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: + encode-utf8 "^1.0.2" + fmix "^0.1.0" + imul "^1.0.0" + +nan@^2.14.0: + version "2.15.0" + resolved "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz" + integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== + +nano-base32@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/nano-base32/-/nano-base32-1.0.1.tgz" + integrity sha1-ulSMh578+5DaHE2eCX20pGySVe8= + +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 sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18= + +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== + +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: + 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" + +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== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +negotiator@0.6.2: + version "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== + +neo-async@^2.6.0: + version "2.6.2" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + +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== + +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: + lower-case "^1.1.1" + +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== + +node-emoji@^1.10.0: + version "1.11.0" + resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" + integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== + dependencies: + lodash "^4.17.21" + +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" + +node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.5, node-fetch@^2.6.7, 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" + +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: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-fetch@2.1.2: + version "2.1.2" + +node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz" + integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== + +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== + +nofilter@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz" + integrity sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g== + +nopt@3.x: + version "3.0.6" + resolved "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= + dependencies: + abbrev "1" + +normalize-package-data@^2.3.2: + 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: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + 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== + +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== + +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: + boolbase "^1.0.0" + +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== + +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 sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA= + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + +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== + +object-assign@^4, object-assign@^4.0.0, 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 sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +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: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.11.0, object-inspect@^1.9.0: + version "1.11.1" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz" + integrity sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA== + +object-inspect@^1.8.0: + version "1.9.0" + +object-inspect@~1.7.0: + version "1.7.0" + +object-is@^1.0.1: + version "1.1.4" + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +object-keys@^1.0.11, object-keys@^1.0.12, 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== + +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== + +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: + isobject "^3.0.0" + +object.assign@^4.1.1: + version "4.1.2" + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +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: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.entries@^1.1.2, object.entries@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz" + integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.1" + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" -"object.fromentries@^2.0.5": - "integrity" "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==" - "resolved" "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz" - "version" "2.0.5" +object.fromentries@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz" + integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.1" + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" -"object.getownpropertydescriptors@^2.0.3": - "integrity" "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==" - "resolved" "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz" - "version" "2.1.3" +object.getownpropertydescriptors@^2.0.3: + version "2.1.3" + resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz" + integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.getownpropertydescriptors@^2.1.1: + version "2.1.1" + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +object.hasown@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz" + integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.19.1" + +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: + isobject "^3.0.1" + +object.values@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +obliterator@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/obliterator/-/obliterator-2.0.1.tgz" + integrity sha512-XnkiCrrBcIZQitJPAI36mrrpEUvatbte8hLcTcQwKA1v9NkCKasSi+UAguLsLDs/out7MoRzAlmz7VXvY6ph6w== + +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: + http-https "^1.0.0" + +oboe@2.1.5: + version "2.1.5" + resolved "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz" + integrity sha1-VVQoTFQ6ImbXo48X4HOCH73jk80= + dependencies: + http-https "^1.0.0" + +on-finished@~2.3.0: + version "2.3.0" + dependencies: + ee-first "1.1.1" + +on-finished@2.4.1: + 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" + +once@^1.3.0, once@^1.3.1, once@^1.4.0, once@1.x: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +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" + +open@^8.4.0: + version "8.4.1" + resolved "https://registry.npmjs.org/open/-/open-8.4.1.tgz" + integrity sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.1" - -"object.getownpropertydescriptors@^2.1.1": - "version" "2.1.1" - dependencies: - "call-bind" "^1.0.0" - "define-properties" "^1.1.3" - "es-abstract" "^1.18.0-next.1" - -"object.hasown@^1.1.0": - "integrity" "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==" - "resolved" "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "define-properties" "^1.1.3" - "es-abstract" "^1.19.1" - -"object.pick@^1.3.0": - "integrity" "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==" - "resolved" "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "isobject" "^3.0.1" - -"object.values@^1.1.5": - "integrity" "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==" - "resolved" "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz" - "version" "1.1.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.1" - -"obliterator@^2.0.0": - "integrity" "sha512-XnkiCrrBcIZQitJPAI36mrrpEUvatbte8hLcTcQwKA1v9NkCKasSi+UAguLsLDs/out7MoRzAlmz7VXvY6ph6w==" - "resolved" "https://registry.npmjs.org/obliterator/-/obliterator-2.0.1.tgz" - "version" "2.0.1" - -"oboe@2.1.4": - "integrity" "sha512-ymBJ4xSC6GBXLT9Y7lirj+xbqBLa+jADGJldGEYG7u8sZbS9GyG+u1Xk9c5cbriKwSpCg41qUhPjvU5xOpvIyQ==" - "resolved" "https://registry.npmjs.org/oboe/-/oboe-2.1.4.tgz" - "version" "2.1.4" - dependencies: - "http-https" "^1.0.0" - -"oboe@2.1.5": - "integrity" "sha1-VVQoTFQ6ImbXo48X4HOCH73jk80=" - "resolved" "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz" - "version" "2.1.5" - dependencies: - "http-https" "^1.0.0" - -"on-finished@~2.3.0": - "version" "2.3.0" - dependencies: - "ee-first" "1.1.1" - -"on-finished@2.4.1": - "integrity" "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" - "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" - "version" "2.4.1" - dependencies: - "ee-first" "1.1.1" - -"once@^1.3.0", "once@^1.3.1", "once@^1.4.0", "once@1.x": - "integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" - "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "wrappy" "1" - -"onetime@^2.0.0": - "integrity" "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=" - "resolved" "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "mimic-fn" "^1.0.0" - -"open@^7.4.2": - "integrity" "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==" - "resolved" "https://registry.npmjs.org/open/-/open-7.4.2.tgz" - "version" "7.4.2" - dependencies: - "is-docker" "^2.0.0" - "is-wsl" "^2.1.1" - -"open@^8.4.0": - "integrity" "sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg==" - "resolved" "https://registry.npmjs.org/open/-/open-8.4.1.tgz" - "version" "8.4.1" - dependencies: - "define-lazy-prop" "^2.0.0" - "is-docker" "^2.1.1" - "is-wsl" "^2.2.0" - -"optionator@^0.8.1": - "integrity" "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==" - "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" - "version" "0.8.3" - dependencies: - "deep-is" "~0.1.3" - "fast-levenshtein" "~2.0.6" - "levn" "~0.3.0" - "prelude-ls" "~1.1.2" - "type-check" "~0.3.2" - "word-wrap" "~1.2.3" - -"optionator@^0.8.2": - "integrity" "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==" - "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" - "version" "0.8.3" - dependencies: - "deep-is" "~0.1.3" - "fast-levenshtein" "~2.0.6" - "levn" "~0.3.0" - "prelude-ls" "~1.1.2" - "type-check" "~0.3.2" - "word-wrap" "~1.2.3" - -"optionator@^0.9.1": - "integrity" "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==" - "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" - "version" "0.9.1" + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +optionator@^0.8.1: + 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.4.1" - "prelude-ls" "^1.2.1" - "type-check" "^0.4.0" - "word-wrap" "^1.2.3" + 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" -"os-browserify@~0.3.0": - "integrity" "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" - "resolved" "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" - "version" "0.3.0" - -"os-homedir@^1.0.0": - "integrity" "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==" - "resolved" "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" - "version" "1.0.2" +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" -"os-locale@^1.4.0": - "integrity" "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==" - "resolved" "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "lcid" "^1.0.0" +os-browserify@~0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= -"os-tmpdir@^1.0.1", "os-tmpdir@~1.0.2": - "integrity" "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - "resolved" "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" - "version" "1.0.2" - -"p-cancelable@^0.3.0": - "integrity" "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==" - "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz" - "version" "0.3.0" - -"p-cancelable@^1.0.0": - "integrity" "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" - "version" "1.1.0" - -"p-finally@^1.0.0": - "integrity" "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - "resolved" "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" - "version" "1.0.0" - -"p-limit@^1.1.0": - "integrity" "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "p-try" "^1.0.0" - -"p-limit@^2.0.0": - "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "p-try" "^2.0.0" - -"p-limit@^2.2.0": - "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "p-try" "^2.0.0" - -"p-limit@^3.0.2": - "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "yocto-queue" "^0.1.0" - -"p-locate@^2.0.0": - "integrity" "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "p-limit" "^1.1.0" - -"p-locate@^3.0.0": - "integrity" "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "p-limit" "^2.0.0" - -"p-locate@^4.1.0": - "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "p-limit" "^2.2.0" - -"p-locate@^5.0.0": - "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "p-limit" "^3.0.2" +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== -"p-map@^4.0.0": - "integrity" "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==" - "resolved" "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" - "version" "4.0.0" +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: - "aggregate-error" "^3.0.0" + lcid "^1.0.0" -"p-timeout@^1.1.1": - "integrity" "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=" - "resolved" "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "p-finally" "^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 sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -"p-try@^1.0.0": - "integrity" "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - "resolved" "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" - "version" "1.0.0" +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz" + integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== -"p-try@^2.0.0": - "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" - "version" "2.2.0" +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== -"pako@~1.0.5": - "integrity" "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - "resolved" "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" - "version" "1.0.11" +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -"param-case@^2.1.0": - "integrity" "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=" - "resolved" "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz" - "version" "2.1.1" +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: - "no-case" "^2.2.0" + p-try "^1.0.0" -"parent-module@^1.0.0": - "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" - "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - "version" "1.0.1" +p-limit@^2.0.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: - "callsites" "^3.0.0" + p-try "^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: + p-try "^2.0.0" + +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: + yocto-queue "^0.1.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +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" + +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" -"parents@^1.0.0", "parents@^1.0.1": - "integrity" "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=" - "resolved" "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz" - "version" "1.0.1" +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: - "path-platform" "~0.11.15" + p-limit "^3.0.2" -"parse-asn1@^5.0.0", "parse-asn1@^5.1.5": - "integrity" "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==" - "resolved" "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz" - "version" "5.1.6" +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: - "asn1.js" "^5.2.0" - "browserify-aes" "^1.0.0" - "evp_bytestokey" "^1.0.0" - "pbkdf2" "^3.0.3" - "safe-buffer" "^5.1.1" + aggregate-error "^3.0.0" -"parse-cache-control@^1.0.1": - "integrity" "sha1-juqz5U+laSD+Fro493+iGqzC104=" - "resolved" "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz" - "version" "1.0.1" +p-timeout@^1.1.1: + version "1.2.1" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz" + integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= + dependencies: + p-finally "^1.0.0" -"parse-headers@^2.0.0": - "integrity" "sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw==" - "resolved" "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.4.tgz" - "version" "2.0.4" +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= -"parse-json@^2.2.0": - "integrity" "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "error-ex" "^1.2.0" +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== -"parse-json@^4.0.0": - "integrity" "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" - "version" "4.0.0" +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== + +param-case@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz" + integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= dependencies: - "error-ex" "^1.3.1" - "json-parse-better-errors" "^1.0.1" + no-case "^2.2.0" -"parse5-htmlparser2-tree-adapter@^7.0.0": - "integrity" "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==" - "resolved" "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz" - "version" "7.0.0" +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: - "domhandler" "^5.0.2" - "parse5" "^7.0.0" + callsites "^3.0.0" -"parse5@^7.0.0": - "integrity" "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==" - "resolved" "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" - "version" "7.1.2" +parents@^1.0.0, parents@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz" + integrity sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E= dependencies: - "entities" "^4.4.0" - -"parseurl@~1.3.3": - "integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - "resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" - "version" "1.3.3" + path-platform "~0.11.15" -"pascal-case@^2.0.0": - "integrity" "sha1-LVeNNFX2YNpl7KGO+VtODekSdh4=" - "resolved" "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz" - "version" "2.0.1" +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: - "camel-case" "^3.0.0" - "upper-case-first" "^1.1.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" -"pascalcase@^0.1.1": - "integrity" "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==" - "resolved" "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" - "version" "0.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 sha1-juqz5U+laSD+Fro493+iGqzC104= -"patch-package@^6.2.2": - "integrity" "sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ==" - "resolved" "https://registry.npmjs.org/patch-package/-/patch-package-6.4.7.tgz" - "version" "6.4.7" - dependencies: - "@yarnpkg/lockfile" "^1.1.0" - "chalk" "^2.4.2" - "cross-spawn" "^6.0.5" - "find-yarn-workspace-root" "^2.0.0" - "fs-extra" "^7.0.1" - "is-ci" "^2.0.0" - "klaw-sync" "^6.0.0" - "minimist" "^1.2.0" - "open" "^7.4.2" - "rimraf" "^2.6.3" - "semver" "^5.6.0" - "slash" "^2.0.0" - "tmp" "^0.0.33" - -"patch-package@6.2.2": - "integrity" "sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg==" - "resolved" "https://registry.npmjs.org/patch-package/-/patch-package-6.2.2.tgz" - "version" "6.2.2" +parse-headers@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.4.tgz" + integrity sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw== + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= 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" - -"path-browserify@^1.0.0": - "integrity" "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" - "resolved" "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" - "version" "1.0.1" - -"path-case@^2.1.0": - "integrity" "sha1-lLgDfDctP+KQbkZbtF4l0ibo7qU=" - "resolved" "https://registry.npmjs.org/path-case/-/path-case-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "no-case" "^2.2.0" - -"path-exists@^2.0.0": - "integrity" "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "pinkie-promise" "^2.0.0" - -"path-exists@^3.0.0": - "integrity" "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" - "version" "3.0.0" - -"path-exists@^4.0.0": - "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - "version" "4.0.0" - -"path-is-absolute@^1.0.0", "path-is-absolute@^1.0.1": - "integrity" "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - "version" "1.0.1" - -"path-is-inside@^1.0.2": - "integrity" "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" - "resolved" "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" - "version" "1.0.2" - -"path-key@^2.0.1": - "integrity" "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" - "version" "2.0.1" - -"path-key@^3.1.0": - "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - "version" "3.1.1" - -"path-parse@^1.0.6": - "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - "version" "1.0.7" - -"path-platform@~0.11.15": - "integrity" "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=" - "resolved" "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz" - "version" "0.11.15" - -"path-to-regexp@0.1.7": - "integrity" "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" - "version" "0.1.7" - -"path-type@^1.0.0": - "integrity" "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==" - "resolved" "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "graceful-fs" "^4.1.2" - "pify" "^2.0.0" - "pinkie-promise" "^2.0.0" - -"path-type@^4.0.0": - "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" - "version" "4.0.0" - -"pathval@^1.1.1": - "integrity" "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==" - "resolved" "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" - "version" "1.1.1" - -"pbkdf2@^3.0.17", "pbkdf2@^3.0.3": - "integrity" "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==" - "resolved" "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "create-hash" "^1.1.2" - "create-hmac" "^1.1.4" - "ripemd160" "^2.0.1" - "safe-buffer" "^5.0.1" - "sha.js" "^2.4.8" - -"pbkdf2@^3.0.9": - "version" "3.1.1" - 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" - -"performance-now@^2.1.0": - "integrity" "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - "resolved" "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" - "version" "2.1.0" - -"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.2.3": - "integrity" "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" - "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz" - "version" "2.3.0" - -"pify@^2.0.0": - "integrity" "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" - "resolved" "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - "version" "2.3.0" - -"pify@^2.3.0": - "integrity" "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" - "resolved" "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - "version" "2.3.0" - -"pify@^4.0.1": - "integrity" "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - "resolved" "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" - "version" "4.0.1" - -"pinkie-promise@^2.0.0": - "integrity" "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==" - "resolved" "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "pinkie" "^2.0.0" - -"pinkie@^2.0.0": - "integrity" "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==" - "resolved" "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - "version" "2.0.4" - -"pkg-dir@^2.0.0": - "integrity" "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "find-up" "^2.1.0" - -"posix-character-classes@^0.1.0": - "integrity" "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==" - "resolved" "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" - "version" "0.1.1" - -"postinstall-postinstall@^2.1.0": - "integrity" "sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ==" - "resolved" "https://registry.npmjs.org/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz" - "version" "2.1.0" - -"precond@0.2": - "integrity" "sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==" - "resolved" "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz" - "version" "0.2.3" - -"prelude-ls@^1.2.1": - "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" - "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" - "version" "1.2.1" - -"prelude-ls@~1.1.2": - "integrity" "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" - "version" "1.1.2" - -"prepend-http@^1.0.1": - "integrity" "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" - "resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz" - "version" "1.0.4" - -"prepend-http@^2.0.0": - "integrity" "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - "resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" - "version" "2.0.0" - -"prettier-linter-helpers@^1.0.0": - "integrity" "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==" - "resolved" "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "fast-diff" "^1.1.2" - -"prettier-plugin-solidity@^1.0.0-beta.13": - "integrity" "sha512-xxRQ5ZiiZyUoMFLE9h7HnUDXI/daf1tnmL1msEdcKmyh7ZGQ4YklkYLC71bfBpYU2WruTb5/SFLUaEb3RApg5g==" - "resolved" "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-beta.19.tgz" - "version" "1.0.0-beta.19" + error-ex "^1.2.0" + +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: - "@solidity-parser/parser" "^0.14.0" - "emoji-regex" "^10.0.0" - "escape-string-regexp" "^4.0.0" - "semver" "^7.3.5" - "solidity-comments-extractor" "^0.0.7" - "string-width" "^4.2.3" - -"prettier@^1.14.3": - "integrity" "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==" - "resolved" "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz" - "version" "1.19.1" - -"prettier@^2.1.2", "prettier@^2.3.0", "prettier@^2.5.1", "prettier@>=1.13.0": - "integrity" "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==" - "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz" - "version" "2.5.1" - -"printj@~1.1.0": - "integrity" "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" - "resolved" "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz" - "version" "1.1.2" - -"private@^0.1.6", "private@^0.1.8": - "integrity" "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" - "resolved" "https://registry.npmjs.org/private/-/private-0.1.8.tgz" - "version" "0.1.8" - -"process-nextick-args@~2.0.0": - "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" - "version" "2.0.1" - -"process@^0.11.10", "process@~0.11.0": - "integrity" "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" - "resolved" "https://registry.npmjs.org/process/-/process-0.11.10.tgz" - "version" "0.11.10" - -"progress@^2.0.0": - "integrity" "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - "resolved" "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" - "version" "2.0.3" - -"promise-to-callback@^1.0.0": - "integrity" "sha512-uhMIZmKM5ZteDMfLgJnoSq9GCwsNKrYau73Awf1jIy6/eUcuuZ3P+CD9zUv0kJsIUbU+x6uLNIhXhLHDs1pNPA==" - "resolved" "https://registry.npmjs.org/promise-to-callback/-/promise-to-callback-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "is-fn" "^1.0.0" - "set-immediate-shim" "^1.0.1" - -"promise@^8.0.0": - "integrity" "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==" - "resolved" "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz" - "version" "8.1.0" - dependencies: - "asap" "~2.0.6" - -"prompts@^2.4.2": - "integrity" "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==" - "resolved" "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "kleur" "^3.0.3" - "sisteransi" "^1.0.5" - -"prop-types@^15.7.2": - "integrity" "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==" - "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz" - "version" "15.7.2" - dependencies: - "loose-envify" "^1.4.0" - "object-assign" "^4.1.1" - "react-is" "^16.8.1" - -"proper-lockfile@^4.1.1": - "integrity" "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==" - "resolved" "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "graceful-fs" "^4.2.4" - "retry" "^0.12.0" - "signal-exit" "^3.0.2" - -"proxy-addr@~2.0.5": - "version" "2.0.6" - dependencies: - "forwarded" "~0.1.2" - "ipaddr.js" "1.9.1" - -"proxy-addr@~2.0.7": - "integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" - "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" - "version" "2.0.7" - dependencies: - "forwarded" "0.2.0" - "ipaddr.js" "1.9.1" - -"proxy-from-env@^1.1.0": - "integrity" "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - "resolved" "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" - "version" "1.1.0" - -"prr@~1.0.1": - "integrity" "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" - "resolved" "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" - "version" "1.0.1" - -"pseudomap@^1.0.1": - "integrity" "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" - "resolved" "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" - "version" "1.0.2" - -"psl@^1.1.28": - "integrity" "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - "resolved" "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz" - "version" "1.8.0" - -"public-encrypt@^4.0.0": - "integrity" "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==" - "resolved" "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "bn.js" "^4.1.0" - "browserify-rsa" "^4.0.0" - "create-hash" "^1.1.0" - "parse-asn1" "^5.0.0" - "randombytes" "^2.0.1" - "safe-buffer" "^5.1.2" - -"pull-cat@^1.1.9": - "integrity" "sha512-i3w+xZ3DCtTVz8S62hBOuNLRHqVDsHMNZmgrZsjPnsxXUgbWtXEee84lo1XswE7W2a3WHyqsNuDJTjVLAQR8xg==" - "resolved" "https://registry.npmjs.org/pull-cat/-/pull-cat-1.1.11.tgz" - "version" "1.1.11" - -"pull-defer@^0.2.2": - "integrity" "sha512-/An3KE7mVjZCqNhZsr22k1Tx8MACnUnHZZNPSJ0S62td8JtYr/AiRG42Vz7Syu31SoTLUzVIe61jtT/pNdjVYA==" - "resolved" "https://registry.npmjs.org/pull-defer/-/pull-defer-0.2.3.tgz" - "version" "0.2.3" - -"pull-level@^2.0.3": - "integrity" "sha512-fW6pljDeUThpq5KXwKbRG3X7Ogk3vc75d5OQU/TvXXui65ykm+Bn+fiktg+MOx2jJ85cd+sheufPL+rw9QSVZg==" - "resolved" "https://registry.npmjs.org/pull-level/-/pull-level-2.0.4.tgz" - "version" "2.0.4" - dependencies: - "level-post" "^1.0.7" - "pull-cat" "^1.1.9" - "pull-live" "^1.0.1" - "pull-pushable" "^2.0.0" - "pull-stream" "^3.4.0" - "pull-window" "^2.1.4" - "stream-to-pull-stream" "^1.7.1" - -"pull-live@^1.0.1": - "integrity" "sha512-tkNz1QT5gId8aPhV5+dmwoIiA1nmfDOzJDlOOUpU5DNusj6neNd3EePybJ5+sITr2FwyCs/FVpx74YMCfc8YeA==" - "resolved" "https://registry.npmjs.org/pull-live/-/pull-live-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "pull-cat" "^1.1.9" - "pull-stream" "^3.4.0" - -"pull-pushable@^2.0.0": - "integrity" "sha512-M7dp95enQ2kaHvfCt2+DJfyzgCSpWVR2h2kWYnVsW6ZpxQBx5wOu0QWOvQPVoPnBLUZYitYP2y7HyHkLQNeGXg==" - "resolved" "https://registry.npmjs.org/pull-pushable/-/pull-pushable-2.2.0.tgz" - "version" "2.2.0" - -"pull-stream@^3.2.3", "pull-stream@^3.4.0", "pull-stream@^3.6.8": - "version" "3.6.14" - -"pull-window@^2.1.4": - "integrity" "sha512-cbDzN76BMlcGG46OImrgpkMf/VkCnupj8JhsrpBw3aWBM9ye345aYnqitmZCgauBkc0HbbRRn9hCnsa3k2FNUg==" - "resolved" "https://registry.npmjs.org/pull-window/-/pull-window-2.1.4.tgz" - "version" "2.1.4" - dependencies: - "looper" "^2.0.0" - -"pump@^3.0.0": - "integrity" "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==" - "resolved" "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "end-of-stream" "^1.1.0" - "once" "^1.3.1" - -"punycode@^1.3.2": - "integrity" "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" - "version" "1.4.1" - -"punycode@^2.1.0", "punycode@2.1.0": - "integrity" "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz" - "version" "2.1.0" - -"punycode@^2.1.1": - "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" - "version" "2.1.1" - -"punycode@1.3.2": - "integrity" "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - "version" "1.3.2" - -"pure-rand@^5.0.0", "pure-rand@^5.0.1": - "integrity" "sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw==" - "resolved" "https://registry.npmjs.org/pure-rand/-/pure-rand-5.0.5.tgz" - "version" "5.0.5" - -"qs@^6.4.0", "qs@^6.7.0", "qs@^6.9.4", "qs@6.11.0": - "integrity" "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" - "version" "6.11.0" - dependencies: - "side-channel" "^1.0.4" - -"qs@~6.5.2": - "integrity" "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz" - "version" "6.5.2" - -"qs@6.7.0": - "version" "6.7.0" - -"query-string@^5.0.1": - "integrity" "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==" - "resolved" "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "decode-uri-component" "^0.2.0" - "object-assign" "^4.1.0" - "strict-uri-encode" "^1.0.0" - -"querystring-es3@~0.2.0": - "integrity" "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" - "resolved" "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" - "version" "0.2.1" - -"querystring@0.2.0": - "integrity" "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - "resolved" "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" - "version" "0.2.0" - -"queue-microtask@^1.2.2", "queue-microtask@^1.2.3": - "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" - "version" "1.2.3" - -"randombytes@^2.0.0", "randombytes@^2.0.1", "randombytes@^2.0.5", "randombytes@^2.0.6", "randombytes@^2.1.0": - "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" - "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "safe-buffer" "^5.1.0" - -"randomfill@^1.0.3": - "integrity" "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==" - "resolved" "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "randombytes" "^2.0.5" - "safe-buffer" "^5.1.0" - -"range-parser@~1.2.1": - "integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" - "version" "1.2.1" - -"raw-body@^2.4.1", "raw-body@2.5.1": - "integrity" "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==" - "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" - "version" "2.5.1" - dependencies: - "bytes" "3.1.2" - "http-errors" "2.0.0" - "iconv-lite" "0.4.24" - "unpipe" "1.0.0" - -"raw-body@2.4.0": - "version" "2.4.0" - dependencies: - "bytes" "3.1.0" - "http-errors" "1.7.2" - "iconv-lite" "0.4.24" - "unpipe" "1.0.0" - -"react-is@^16.8.1": - "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - "version" "16.13.1" - -"read-only-stream@^2.0.0": - "integrity" "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=" - "resolved" "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "readable-stream" "^2.0.2" - -"read-pkg-up@^1.0.1": - "integrity" "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==" - "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "find-up" "^1.0.0" - "read-pkg" "^1.0.0" - -"read-pkg@^1.0.0": - "integrity" "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==" - "resolved" "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "load-json-file" "^1.0.0" - "normalize-package-data" "^2.3.2" - "path-type" "^1.0.0" - -"readable-stream@^1.0.33": - "integrity" "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" - "version" "1.1.14" - dependencies: - "core-util-is" "~1.0.0" - "inherits" "~2.0.1" - "isarray" "0.0.1" - "string_decoder" "~0.10.x" - -"readable-stream@^2.0.0", "readable-stream@^2.0.5", "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": - "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - "version" "2.3.7" - dependencies: - "core-util-is" "~1.0.0" - "inherits" "~2.0.3" - "isarray" "~1.0.0" - "process-nextick-args" "~2.0.0" - "safe-buffer" "~5.1.1" - "string_decoder" "~1.1.1" - "util-deprecate" "~1.0.1" - -"readable-stream@^2.0.2": - "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - "version" "2.3.7" - dependencies: - "core-util-is" "~1.0.0" - "inherits" "~2.0.3" - "isarray" "~1.0.0" - "process-nextick-args" "~2.0.0" - "safe-buffer" "~5.1.1" - "string_decoder" "~1.1.1" - "util-deprecate" "~1.0.1" - -"readable-stream@^3.0.6": - "version" "3.6.0" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readable-stream@^3.5.0": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readable-stream@^3.6.0": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readable-stream@~1.0.15": - "integrity" "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" - "version" "1.0.34" - dependencies: - "core-util-is" "~1.0.0" - "inherits" "~2.0.1" - "isarray" "0.0.1" - "string_decoder" "~0.10.x" - -"readable-stream@~2.3.6": - "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - "version" "2.3.7" - dependencies: - "core-util-is" "~1.0.0" - "inherits" "~2.0.3" - "isarray" "~1.0.0" - "process-nextick-args" "~2.0.0" - "safe-buffer" "~5.1.1" - "string_decoder" "~1.1.1" - "util-deprecate" "~1.0.1" - -"readdirp@~3.2.0": - "integrity" "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==" - "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "picomatch" "^2.0.4" - -"readdirp@~3.6.0": - "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" - "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "picomatch" "^2.2.1" - -"rechoir@^0.6.2": - "integrity" "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=" - "resolved" "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" - "version" "0.6.2" - dependencies: - "resolve" "^1.1.6" - -"recursive-readdir@^2.2.2": - "integrity" "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==" - "resolved" "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz" - "version" "2.2.2" - dependencies: - "minimatch" "3.0.4" - -"reduce-flatten@^2.0.0": - "integrity" "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==" - "resolved" "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz" - "version" "2.0.0" - -"regenerate@^1.2.1": - "integrity" "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - "resolved" "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" - "version" "1.4.2" - -"regenerator-runtime@^0.11.0": - "integrity" "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" - "version" "0.11.1" - -"regenerator-runtime@^0.13.4": - "integrity" "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz" - "version" "0.13.9" - -"regenerator-transform@^0.10.0": - "integrity" "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==" - "resolved" "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz" - "version" "0.10.1" - dependencies: - "babel-runtime" "^6.18.0" - "babel-types" "^6.19.0" - "private" "^0.1.6" - -"regex-not@^1.0.0", "regex-not@^1.0.2": - "integrity" "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==" - "resolved" "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "extend-shallow" "^3.0.2" - "safe-regex" "^1.1.0" - -"regexp.prototype.flags@^1.2.0": - "version" "1.3.0" - dependencies: - "define-properties" "^1.1.3" - "es-abstract" "^1.17.0-next.1" - -"regexp.prototype.flags@^1.3.1": - "integrity" "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==" - "resolved" "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz" - "version" "1.3.1" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - -"regexpp@^2.0.1": - "integrity" "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" - "resolved" "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz" - "version" "2.0.1" - -"regexpp@^3.0.0", "regexpp@^3.1.0", "regexpp@^3.2.0": - "integrity" "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" - "resolved" "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" - "version" "3.2.0" - -"regexpu-core@^2.0.0": - "integrity" "sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ==" - "resolved" "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "regenerate" "^1.2.1" - "regjsgen" "^0.2.0" - "regjsparser" "^0.1.4" - -"regjsgen@^0.2.0": - "integrity" "sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g==" - "resolved" "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz" - "version" "0.2.0" - -"regjsparser@^0.1.4": - "integrity" "sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw==" - "resolved" "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz" - "version" "0.1.5" - dependencies: - "jsesc" "~0.5.0" - -"repeat-element@^1.1.2": - "version" "1.1.3" - -"repeat-string@^1.6.1": - "integrity" "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" - "resolved" "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" - "version" "1.6.1" - -"repeating@^2.0.0": - "integrity" "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==" - "resolved" "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "is-finite" "^1.0.0" - -"req-cwd@^2.0.0": - "integrity" "sha1-1AgrTURZgDZkD7c93qAe1T20nrw=" - "resolved" "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "req-from" "^2.0.0" - -"req-from@^2.0.0": - "integrity" "sha1-10GI5H+TeW9Kpx327jWuaJ8+DnA=" - "resolved" "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "resolve-from" "^3.0.0" - -"request-promise-core@1.1.4": - "integrity" "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==" - "resolved" "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz" - "version" "1.1.4" - dependencies: - "lodash" "^4.17.19" - -"request-promise-native@^1.0.5": - "integrity" "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==" - "resolved" "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz" - "version" "1.0.9" - dependencies: - "request-promise-core" "1.1.4" - "stealthy-require" "^1.1.1" - "tough-cookie" "^2.3.3" - -"request@^2.34", "request@^2.79.0", "request@^2.85.0", "request@^2.88.0": - "integrity" "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==" - "resolved" "https://registry.npmjs.org/request/-/request-2.88.2.tgz" - "version" "2.88.2" - dependencies: - "aws-sign2" "~0.7.0" - "aws4" "^1.8.0" - "caseless" "~0.12.0" - "combined-stream" "~1.0.6" - "extend" "~3.0.2" - "forever-agent" "~0.6.1" - "form-data" "~2.3.2" - "har-validator" "~5.1.3" - "http-signature" "~1.2.0" - "is-typedarray" "~1.0.0" - "isstream" "~0.1.2" - "json-stringify-safe" "~5.0.1" - "mime-types" "~2.1.19" - "oauth-sign" "~0.9.0" - "performance-now" "^2.1.0" - "qs" "~6.5.2" - "safe-buffer" "^5.1.2" - "tough-cookie" "~2.5.0" - "tunnel-agent" "^0.6.0" - "uuid" "^3.3.2" - -"require-directory@^2.1.1": - "integrity" "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - "version" "2.1.1" - -"require-from-string@^1.1.0": - "integrity" "sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==" - "resolved" "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz" - "version" "1.2.1" - -"require-from-string@^2.0.0", "require-from-string@^2.0.2": - "integrity" "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - "resolved" "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" - "version" "2.0.2" - -"require-main-filename@^1.0.1": - "integrity" "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==" - "resolved" "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz" - "version" "1.0.1" - -"require-main-filename@^2.0.0": - "integrity" "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - "resolved" "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" - "version" "2.0.0" - -"resolve-from@^3.0.0": - "integrity" "sha1-six699nWiBvItuZTM17rywoYh0g=" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" - "version" "3.0.0" - -"resolve-from@^4.0.0": - "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - "version" "4.0.0" - -"resolve-url@^0.2.1": - "integrity" "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==" - "resolved" "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" - "version" "0.2.1" - -"resolve@^1.1.4", "resolve@^1.1.6", "resolve@^1.10.0", "resolve@^1.10.1", "resolve@^1.17.0", "resolve@^1.4.0", "resolve@^1.8.1", "resolve@1.17.0": - "integrity" "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz" - "version" "1.17.0" - dependencies: - "path-parse" "^1.0.6" - -"resolve@^1.20.0": - "integrity" "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz" - "version" "1.20.0" - dependencies: - "is-core-module" "^2.2.0" - "path-parse" "^1.0.6" - -"resolve@^2.0.0-next.3": - "integrity" "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz" - "version" "2.0.0-next.3" - dependencies: - "is-core-module" "^2.2.0" - "path-parse" "^1.0.6" - -"resolve@~1.17.0": - "version" "1.17.0" - dependencies: - "path-parse" "^1.0.6" - -"resolve@1.1.x": - "integrity" "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" - "version" "1.1.7" - -"responselike@^1.0.2": - "integrity" "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=" - "resolved" "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "lowercase-keys" "^1.0.0" - -"restore-cursor@^2.0.0": - "integrity" "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=" - "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "onetime" "^2.0.0" - "signal-exit" "^3.0.2" - -"resumer@~0.0.0": - "integrity" "sha512-Fn9X8rX8yYF4m81rZCK/5VmrmsSbqS/i3rDLl6ZZHAXgC2nTAx3dhwG8q8odP/RmdLa2YrybDJaAMg+X1ajY3w==" - "resolved" "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz" - "version" "0.0.0" - dependencies: - "through" "~2.3.4" - -"ret@~0.1.10": - "integrity" "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - "resolved" "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" - "version" "0.1.15" + "@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" -"retry@^0.12.0": - "integrity" "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" - "resolved" "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" - "version" "0.12.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== + dependencies: + domhandler "^5.0.2" + parse5 "^7.0.0" -"reusify@^1.0.4": - "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" - "version" "1.0.4" +parse5@^7.0.0: + version "7.1.2" + resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + dependencies: + entities "^4.4.0" -"ricochet-exchange-sfcontracts-used@^1.0.2": - "integrity" "sha512-jg4F/Ztfj6Z0sOVhUf66JDjNav1fJ4Lizm0EvYAmNIyxAWGH/r2ywEadesHeCCZOuytvGti/nGTX51ZdbovCgA==" - "resolved" "https://registry.npmjs.org/ricochet-exchange-sfcontracts-used/-/ricochet-exchange-sfcontracts-used-1.0.2.tgz" - "version" "1.0.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== -"rimraf@^2.2.8", "rimraf@^2.6.3": - "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - "version" "2.7.1" +pascal-case@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz" + integrity sha1-LVeNNFX2YNpl7KGO+VtODekSdh4= dependencies: - "glob" "^7.1.3" + camel-case "^3.0.0" + upper-case-first "^1.1.0" -"rimraf@^3.0.2": - "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "glob" "^7.1.3" +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== -"rimraf@2.6.3": - "integrity" "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" - "version" "2.6.3" +patch-package@^6.2.2: + version "6.4.7" + resolved "https://registry.npmjs.org/patch-package/-/patch-package-6.4.7.tgz" + integrity sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^2.4.2" + cross-spawn "^6.0.5" + find-yarn-workspace-root "^2.0.0" + fs-extra "^7.0.1" + is-ci "^2.0.0" + klaw-sync "^6.0.0" + minimist "^1.2.0" + open "^7.4.2" + rimraf "^2.6.3" + semver "^5.6.0" + slash "^2.0.0" + tmp "^0.0.33" + +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: - "glob" "^7.1.3" + "@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" + +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== + +path-case@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/path-case/-/path-case-2.1.1.tgz" + integrity sha1-lLgDfDctP+KQbkZbtF4l0ibo7qU= + dependencies: + no-case "^2.2.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== + 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 sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +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== + +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 sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +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== + +path-parse@^1.0.6: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-platform@~0.11.15: + version "0.11.15" + resolved "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz" + integrity sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I= + +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 sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +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: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.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== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +pbkdf2@^3.0.17, pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +pbkdf2@^3.0.9: + version "3.1.1" + 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" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: + version "2.3.0" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +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== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +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: + 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== + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + +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== + +postinstall-postinstall@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz" + integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== + +precond@0.2: + version "0.2.3" + resolved "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz" + integrity sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier-plugin-solidity@^1.0.0-alpha.14, prettier-plugin-solidity@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.1.3.tgz" + integrity sha512-fQ9yucPi2sBbA2U2Xjh6m4isUTJ7S7QLc/XDDsktqqxYfTwdYKJ0EnnywXHwCGAaYbQNK+HIYPL1OemxuMsgeg== + dependencies: + "@solidity-parser/parser" "^0.16.0" + semver "^7.3.8" + solidity-comments-extractor "^0.0.7" + +"prettier@^1.15.0 || ^2.0.0", prettier@^2.1.2, prettier@^2.8.3, prettier@^2.8.8, prettier@>=1.13.0, "prettier@>=2.3.0 || >=3.0.0-alpha.0": + version "2.8.8" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +printj@~1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz" + integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== + +private@^0.1.6, private@^0.1.8: + version "0.1.8" + resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10, process@~0.11.0: + version "0.11.10" + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-to-callback@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/promise-to-callback/-/promise-to-callback-1.0.0.tgz" + integrity sha512-uhMIZmKM5ZteDMfLgJnoSq9GCwsNKrYau73Awf1jIy6/eUcuuZ3P+CD9zUv0kJsIUbU+x6uLNIhXhLHDs1pNPA== + dependencies: + is-fn "^1.0.0" + set-immediate-shim "^1.0.1" + +promise@^8.0.0: + version "8.1.0" + resolved "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz" + integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== + dependencies: + asap "~2.0.6" + +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +proper-lockfile@^4.1.1: + version "4.1.2" + resolved "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz" + integrity sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA== + dependencies: + graceful-fs "^4.2.4" + retry "^0.12.0" + signal-exit "^3.0.2" + +proxy-addr@~2.0.5: + version "2.0.6" + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.1" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +pseudomap@^1.0.1: + version "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: + version "1.8.0" + resolved "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pull-cat@^1.1.9: + version "1.1.11" + resolved "https://registry.npmjs.org/pull-cat/-/pull-cat-1.1.11.tgz" + integrity sha512-i3w+xZ3DCtTVz8S62hBOuNLRHqVDsHMNZmgrZsjPnsxXUgbWtXEee84lo1XswE7W2a3WHyqsNuDJTjVLAQR8xg== + +pull-defer@^0.2.2: + version "0.2.3" + resolved "https://registry.npmjs.org/pull-defer/-/pull-defer-0.2.3.tgz" + integrity sha512-/An3KE7mVjZCqNhZsr22k1Tx8MACnUnHZZNPSJ0S62td8JtYr/AiRG42Vz7Syu31SoTLUzVIe61jtT/pNdjVYA== + +pull-level@^2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/pull-level/-/pull-level-2.0.4.tgz" + integrity sha512-fW6pljDeUThpq5KXwKbRG3X7Ogk3vc75d5OQU/TvXXui65ykm+Bn+fiktg+MOx2jJ85cd+sheufPL+rw9QSVZg== + dependencies: + level-post "^1.0.7" + pull-cat "^1.1.9" + pull-live "^1.0.1" + pull-pushable "^2.0.0" + pull-stream "^3.4.0" + pull-window "^2.1.4" + stream-to-pull-stream "^1.7.1" + +pull-live@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/pull-live/-/pull-live-1.0.1.tgz" + integrity sha512-tkNz1QT5gId8aPhV5+dmwoIiA1nmfDOzJDlOOUpU5DNusj6neNd3EePybJ5+sITr2FwyCs/FVpx74YMCfc8YeA== + dependencies: + pull-cat "^1.1.9" + pull-stream "^3.4.0" + +pull-pushable@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/pull-pushable/-/pull-pushable-2.2.0.tgz" + integrity sha512-M7dp95enQ2kaHvfCt2+DJfyzgCSpWVR2h2kWYnVsW6ZpxQBx5wOu0QWOvQPVoPnBLUZYitYP2y7HyHkLQNeGXg== + +pull-stream@^3.2.3, pull-stream@^3.4.0, pull-stream@^3.6.8: + version "3.6.14" + +pull-window@^2.1.4: + version "2.1.4" + resolved "https://registry.npmjs.org/pull-window/-/pull-window-2.1.4.tgz" + integrity sha512-cbDzN76BMlcGG46OImrgpkMf/VkCnupj8JhsrpBw3aWBM9ye345aYnqitmZCgauBkc0HbbRRn9hCnsa3k2FNUg== + dependencies: + looper "^2.0.0" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^1.3.2: + version "1.4.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz" + integrity sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0= + +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== + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +pure-rand@^5.0.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== + +qs@^6.4.0, qs@^6.7.0, qs@^6.9.4, qs@6.11.0: + version "6.11.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +qs@6.7.0: + version "6.7.0" + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@~0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +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" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.0.6, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@^2.4.1, raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-body@2.4.0: + version "2.4.0" + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-is@^16.8.1: + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +read-only-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz" + integrity sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A= + dependencies: + readable-stream "^2.0.2" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz" + integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" + integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +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== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.0, readable-stream@^2.0.5, 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== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^2.0.2: + version "2.3.7" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6: + version "3.6.0" + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^3.5.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~1.0.15: + version "1.0.34" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +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== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readdirp@~3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz" + integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== + dependencies: + picomatch "^2.0.4" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" + +recursive-readdir@^2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + dependencies: + minimatch "3.0.4" + +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== + +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== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz" + integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +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" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.2.0: + version "1.3.0" + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexp.prototype.flags@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexpp@^3.0.0, regexpp@^3.1.0, regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz" + integrity sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ== + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz" + integrity sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g== + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz" + integrity sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw== + dependencies: + jsesc "~0.5.0" + +repeat-element@^1.1.2: + version "1.1.3" + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz" + integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== + dependencies: + is-finite "^1.0.0" + +req-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz" + integrity sha1-1AgrTURZgDZkD7c93qAe1T20nrw= + dependencies: + req-from "^2.0.0" + +req-from@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz" + integrity sha1-10GI5H+TeW9Kpx327jWuaJ8+DnA= + dependencies: + resolve-from "^3.0.0" + +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== + dependencies: + lodash "^4.17.19" + +request-promise-native@^1.0.5: + version "1.0.9" + resolved "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== + dependencies: + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.34, request@^2.79.0, request@^2.85.0, request@^2.88.0: + version "2.88.2" + resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-from-string@^1.1.0: + version "1.2.1" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz" + integrity sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q== + +require-from-string@^2.0.0, require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz" + integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +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@^1.1.4, resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.17.0, resolve@^1.4.0, resolve@^1.8.1, resolve@1.17.0: + version "1.17.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +resolve@^1.20.0: + version "1.20.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +resolve@^2.0.0-next.3: + version "2.0.0-next.3" + resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz" + integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +resolve@~1.17.0: + version "1.17.0" + dependencies: + path-parse "^1.0.6" + +resolve@1.1.x: + version "1.1.7" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + +resumer@~0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz" + integrity sha512-Fn9X8rX8yYF4m81rZCK/5VmrmsSbqS/i3rDLl6ZZHAXgC2nTAx3dhwG8q8odP/RmdLa2YrybDJaAMg+X1ajY3w== + dependencies: + through "~2.3.4" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -"ripemd160-min@0.0.6": - "integrity" "sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A==" - "resolved" "https://registry.npmjs.org/ripemd160-min/-/ripemd160-min-0.0.6.tgz" - "version" "0.0.6" - -"ripemd160@^2.0.0", "ripemd160@^2.0.1", "ripemd160@^2.0.2": - "integrity" "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==" - "resolved" "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "hash-base" "^3.0.0" - "inherits" "^2.0.1" - -"rlp@^2.0.0", "rlp@^2.2.1", "rlp@^2.2.2": - "version" "2.2.6" - dependencies: - "bn.js" "^4.11.1" - -"rlp@^2.2.3", "rlp@^2.2.4": - "integrity" "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==" - "resolved" "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz" - "version" "2.2.7" - dependencies: - "bn.js" "^5.2.0" - -"run-async@^2.2.0": - "integrity" "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" - "resolved" "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" - "version" "2.4.1" - -"run-parallel-limit@^1.1.0": - "integrity" "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==" - "resolved" "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "queue-microtask" "^1.2.2" - -"run-parallel@^1.1.9": - "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" - "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "queue-microtask" "^1.2.2" - -"rustbn.js@~0.2.0": - "integrity" "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==" - "resolved" "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz" - "version" "0.2.0" - -"rxjs@^6.4.0": - "integrity" "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==" - "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" - "version" "6.6.7" - dependencies: - "tslib" "^1.9.0" - -"safe-buffer@^5.0.1", "safe-buffer@^5.1.0", "safe-buffer@^5.1.1", "safe-buffer@^5.1.2", "safe-buffer@^5.2.0", "safe-buffer@^5.2.1", "safe-buffer@~5.2.0", "safe-buffer@5.2.1": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" - -"safe-buffer@~5.1.0", "safe-buffer@~5.1.1": - "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - "version" "5.1.2" - -"safe-buffer@5.1.2": - "version" "5.1.2" - -"safe-event-emitter@^1.0.1": - "integrity" "sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg==" - "resolved" "https://registry.npmjs.org/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "events" "^3.0.0" - -"safe-regex@^1.1.0": - "integrity" "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==" - "resolved" "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "ret" "~0.1.10" - -"safer-buffer@^2.0.2", "safer-buffer@^2.1.0", "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", "safer-buffer@~2.1.0": - "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - "version" "2.1.2" - -"sc-istanbul@^0.4.5": - "integrity" "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==" - "resolved" "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz" - "version" "0.4.6" - 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" - -"scrypt-js@^3.0.0", "scrypt-js@^3.0.1", "scrypt-js@3.0.1": - "integrity" "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" - "resolved" "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz" - "version" "3.0.1" - -"scrypt-js@2.0.4": - "integrity" "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==" - "resolved" "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz" - "version" "2.0.4" - -"scryptsy@^1.2.1": - "integrity" "sha512-aldIRgMozSJ/Gl6K6qmJZysRP82lz83Wb42vl4PWN8SaLFHIaOzLPc9nUUW2jQN88CuGm5q5HefJ9jZ3nWSmTw==" - "resolved" "https://registry.npmjs.org/scryptsy/-/scryptsy-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "pbkdf2" "^3.0.3" - -"secp256k1@^3.0.1": - "integrity" "sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw==" - "resolved" "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz" - "version" "3.8.0" - dependencies: - "bindings" "^1.5.0" - "bip66" "^1.1.5" - "bn.js" "^4.11.8" - "create-hash" "^1.2.0" - "drbg.js" "^1.0.1" - "elliptic" "^6.5.2" - "nan" "^2.14.0" - "safe-buffer" "^5.1.2" - -"secp256k1@^4.0.1": - "integrity" "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==" - "resolved" "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "elliptic" "^6.5.2" - "node-addon-api" "^2.0.0" - "node-gyp-build" "^4.2.0" - -"seedrandom@3.0.1": - "integrity" "sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg==" - "resolved" "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.1.tgz" - "version" "3.0.1" - -"semaphore@^1.0.3", "semaphore@^1.1.0", "semaphore@>=1.0.1": - "integrity" "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==" - "resolved" "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz" - "version" "1.1.0" - -"semver@^5.3.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^5.5.0", "semver@^5.6.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^5.5.1": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^5.7.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^6.1.0", "semver@^6.3.0": - "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - "version" "6.3.0" - -"semver@^7.2.1": - "integrity" "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" - "version" "7.3.5" - dependencies: - "lru-cache" "^6.0.0" - -"semver@^7.3.4": - "integrity" "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" - "version" "7.3.5" - dependencies: - "lru-cache" "^6.0.0" - -"semver@^7.3.5": - "integrity" "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" - "version" "7.3.5" - dependencies: - "lru-cache" "^6.0.0" - -"semver@~5.4.1": - "integrity" "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz" - "version" "5.4.1" +ricochet-exchange-sfcontracts-used@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/ricochet-exchange-sfcontracts-used/-/ricochet-exchange-sfcontracts-used-1.0.2.tgz" + integrity sha512-jg4F/Ztfj6Z0sOVhUf66JDjNav1fJ4Lizm0EvYAmNIyxAWGH/r2ywEadesHeCCZOuytvGti/nGTX51ZdbovCgA== + +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== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160-min@0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/ripemd160-min/-/ripemd160-min-0.0.6.tgz" + integrity sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A== + +ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2: + version "2.2.6" + dependencies: + bn.js "^4.11.1" + +rlp@^2.2.3, rlp@^2.2.4: + version "2.2.7" + resolved "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== + dependencies: + bn.js "^5.2.0" + +run-parallel-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz" + integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== + dependencies: + queue-microtask "^1.2.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rustbn.js@~0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz" + integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== + +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: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +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.1.2: + version "5.1.2" + +safe-event-emitter@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz" + integrity sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg== + dependencies: + events "^3.0.0" + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== + dependencies: + ret "~0.1.10" + +safer-buffer@^2.0.2, safer-buffer@^2.1.0, "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sc-istanbul@^0.4.5: + version "0.4.6" + resolved "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz" + integrity sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g== + 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" + +scrypt-js@^3.0.0, scrypt-js@^3.0.1, scrypt-js@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +scrypt-js@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz" + integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== + +scryptsy@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/scryptsy/-/scryptsy-1.2.1.tgz" + integrity sha512-aldIRgMozSJ/Gl6K6qmJZysRP82lz83Wb42vl4PWN8SaLFHIaOzLPc9nUUW2jQN88CuGm5q5HefJ9jZ3nWSmTw== + dependencies: + pbkdf2 "^3.0.3" + +secp256k1@^3.0.1: + version "3.8.0" + resolved "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz" + integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw== + dependencies: + bindings "^1.5.0" + bip66 "^1.1.5" + bn.js "^4.11.8" + create-hash "^1.2.0" + drbg.js "^1.0.1" + elliptic "^6.5.2" + nan "^2.14.0" + safe-buffer "^5.1.2" + +secp256k1@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz" + integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== + dependencies: + elliptic "^6.5.2" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +seedrandom@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.1.tgz" + integrity sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg== + +semaphore@^1.0.3, semaphore@^1.1.0, semaphore@>=1.0.1: + version "1.1.0" + resolved "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz" + integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== + +semver@^5.3.0: + version "5.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^5.7.0: + version "5.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +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@^7.2.1: + version "7.3.5" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +semver@^7.3.4: + version "7.3.5" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +semver@^7.3.5: + version "7.3.5" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +semver@^7.3.8: + version "7.5.0" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz" + integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== + dependencies: + lru-cache "^6.0.0" + +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@2 || 3 || 4 || 5": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@7.3.7": - "integrity" "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz" - "version" "7.3.7" - dependencies: - "lru-cache" "^6.0.0" - -"send@0.17.1": - "version" "0.17.1" - dependencies: - "debug" "2.6.9" - "depd" "~1.1.2" - "destroy" "~1.0.4" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "etag" "~1.8.1" - "fresh" "0.5.2" - "http-errors" "~1.7.2" - "mime" "1.6.0" - "ms" "2.1.1" - "on-finished" "~2.3.0" - "range-parser" "~1.2.1" - "statuses" "~1.5.0" - -"send@0.18.0": - "integrity" "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==" - "resolved" "https://registry.npmjs.org/send/-/send-0.18.0.tgz" - "version" "0.18.0" - dependencies: - "debug" "2.6.9" - "depd" "2.0.0" - "destroy" "1.2.0" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "etag" "~1.8.1" - "fresh" "0.5.2" - "http-errors" "2.0.0" - "mime" "1.6.0" - "ms" "2.1.3" - "on-finished" "2.4.1" - "range-parser" "~1.2.1" - "statuses" "2.0.1" - -"sentence-case@^2.1.0": - "integrity" "sha1-H24t2jnBaL+S0T+G1KkYkz9mftQ=" - "resolved" "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "no-case" "^2.2.0" - "upper-case-first" "^1.1.2" - -"serialize-javascript@6.0.0": - "integrity" "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==" - "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "randombytes" "^2.1.0" - -"serve-static@1.14.1": - "version" "1.14.1" - dependencies: - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "parseurl" "~1.3.3" - "send" "0.17.1" - -"serve-static@1.15.0": - "integrity" "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==" - "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" - "version" "1.15.0" - dependencies: - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "parseurl" "~1.3.3" - "send" "0.18.0" - -"servify@^0.1.12": - "integrity" "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==" - "resolved" "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz" - "version" "0.1.12" - dependencies: - "body-parser" "^1.16.0" - "cors" "^2.8.1" - "express" "^4.14.0" - "request" "^2.79.0" - "xhr" "^2.3.3" - -"set-blocking@^2.0.0": - "integrity" "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - "resolved" "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" - "version" "2.0.0" - -"set-immediate-shim@^1.0.1": - "integrity" "sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ==" - "resolved" "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz" - "version" "1.0.1" - -"set-value@^2.0.0", "set-value@^2.0.1": - "integrity" "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==" - "resolved" "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "extend-shallow" "^2.0.1" - "is-extendable" "^0.1.1" - "is-plain-object" "^2.0.3" - "split-string" "^3.0.1" - -"setimmediate@^1.0.5": - "integrity" "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - "resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" - "version" "1.0.5" - -"setimmediate@1.0.4": - "integrity" "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=" - "resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz" - "version" "1.0.4" - -"setprototypeof@1.1.1": - "version" "1.1.1" - -"setprototypeof@1.2.0": - "integrity" "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" - "version" "1.2.0" - -"sha.js@^2.4.0", "sha.js@^2.4.8": - "integrity" "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==" - "resolved" "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" - "version" "2.4.11" - dependencies: - "inherits" "^2.0.1" - "safe-buffer" "^5.0.1" - -"sha1@^1.1.1": - "integrity" "sha1-rdqnqTFo85PxnrKxUJFhjicA+Eg=" - "resolved" "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "charenc" ">= 0.0.1" - "crypt" ">= 0.0.1" - -"sha3@^2.1.1": - "integrity" "sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==" - "resolved" "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz" - "version" "2.1.4" - dependencies: - "buffer" "6.0.3" - -"shasum-object@^1.0.0": - "integrity" "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==" - "resolved" "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "fast-safe-stringify" "^2.0.7" - -"shebang-command@^1.2.0": - "integrity" "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=" - "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "shebang-regex" "^1.0.0" - -"shebang-command@^2.0.0": - "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" - "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "shebang-regex" "^3.0.0" - -"shebang-regex@^1.0.0": - "integrity" "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" - "version" "1.0.0" - -"shebang-regex@^3.0.0": - "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - "version" "3.0.0" - -"shell-quote@^1.6.1": - "integrity" "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" - "resolved" "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz" - "version" "1.7.3" - -"shelljs@^0.8.3": - "integrity" "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==" - "resolved" "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz" - "version" "0.8.4" - dependencies: - "glob" "^7.0.0" - "interpret" "^1.0.0" - "rechoir" "^0.6.2" - -"side-channel@^1.0.4": - "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" - "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "call-bind" "^1.0.0" - "get-intrinsic" "^1.0.2" - "object-inspect" "^1.9.0" - -"signal-exit@^3.0.2": - "integrity" "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" - "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz" - "version" "3.0.6" - -"simple-concat@^1.0.0": - "integrity" "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" - "resolved" "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" - "version" "1.0.1" - -"simple-get@^2.7.0": - "integrity" "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==" - "resolved" "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz" - "version" "2.8.1" - dependencies: - "decompress-response" "^3.3.0" - "once" "^1.3.1" - "simple-concat" "^1.0.0" - -"sisteransi@^1.0.5": - "integrity" "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - "resolved" "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" - "version" "1.0.5" - -"slash@^1.0.0": - "integrity" "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==" - "resolved" "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" - "version" "1.0.0" - -"slash@^2.0.0": - "integrity" "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" - "resolved" "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz" - "version" "2.0.0" - -"slash@^3.0.0": - "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" - "version" "3.0.0" - -"slice-ansi@^2.1.0": - "integrity" "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==" - "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "ansi-styles" "^3.2.0" - "astral-regex" "^1.0.0" - "is-fullwidth-code-point" "^2.0.0" - -"slice-ansi@^4.0.0": - "integrity" "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==" - "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "ansi-styles" "^4.0.0" - "astral-regex" "^2.0.0" - "is-fullwidth-code-point" "^3.0.0" - -"snake-case@^2.1.0": - "integrity" "sha1-Qb2xtz8w7GagTU4srRt2OH1NbZ8=" - "resolved" "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "no-case" "^2.2.0" - -"snapdragon-node@^2.0.1": - "integrity" "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==" - "resolved" "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "define-property" "^1.0.0" - "isobject" "^3.0.0" - "snapdragon-util" "^3.0.1" - -"snapdragon-util@^3.0.1": - "integrity" "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==" - "resolved" "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "kind-of" "^3.2.0" - -"snapdragon@^0.8.1": - "integrity" "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==" - "resolved" "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" - "version" "0.8.2" - dependencies: - "base" "^0.11.1" - "debug" "^2.2.0" - "define-property" "^0.2.5" - "extend-shallow" "^2.0.1" - "map-cache" "^0.2.2" - "source-map" "^0.5.6" - "source-map-resolve" "^0.5.0" - "use" "^3.1.0" - -"solc@^0.4.20": - "integrity" "sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA==" - "resolved" "https://registry.npmjs.org/solc/-/solc-0.4.26.tgz" - "version" "0.4.26" - dependencies: - "fs-extra" "^0.30.0" - "memorystream" "^0.3.1" - "require-from-string" "^1.1.0" - "semver" "^5.3.0" - "yargs" "^4.7.1" - -"solc@^0.6.3": - "integrity" "sha512-Lm0Ql2G9Qc7yPP2Ba+WNmzw2jwsrd3u4PobHYlSOxaut3TtUbj9+5ZrT6f4DUpNPEoBaFUOEg9Op9C0mk7ge9g==" - "resolved" "https://registry.npmjs.org/solc/-/solc-0.6.12.tgz" - "version" "0.6.12" - dependencies: - "command-exists" "^1.2.8" - "commander" "3.0.2" - "fs-extra" "^0.30.0" - "js-sha3" "0.8.0" - "memorystream" "^0.3.1" - "require-from-string" "^2.0.0" - "semver" "^5.5.0" - "tmp" "0.0.33" - -"solc@0.7.3": - "integrity" "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==" - "resolved" "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz" - "version" "0.7.3" - dependencies: - "command-exists" "^1.2.8" - "commander" "3.0.2" - "follow-redirects" "^1.12.1" - "fs-extra" "^0.30.0" - "js-sha3" "0.8.0" - "memorystream" "^0.3.1" - "require-from-string" "^2.0.0" - "semver" "^5.5.0" - "tmp" "0.0.33" - -"solhint@^3.3.6": - "integrity" "sha512-HWUxTAv2h7hx3s3hAab3ifnlwb02ZWhwFU/wSudUHqteMS3ll9c+m1FlGn9V8ztE2rf3Z82fQZA005Wv7KpcFA==" - "resolved" "https://registry.npmjs.org/solhint/-/solhint-3.3.6.tgz" - "version" "3.3.6" - dependencies: - "@solidity-parser/parser" "^0.13.2" - "ajv" "^6.6.1" - "antlr4" "4.7.1" - "ast-parents" "0.0.1" - "chalk" "^2.4.2" - "commander" "2.18.0" - "cosmiconfig" "^5.0.7" - "eslint" "^5.6.0" - "fast-diff" "^1.1.2" - "glob" "^7.1.3" - "ignore" "^4.0.6" - "js-yaml" "^3.12.0" - "lodash" "^4.17.11" - "semver" "^6.3.0" + version "5.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.3.7: + version "7.3.7" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +send@0.17.1: + version "0.17.1" + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +sentence-case@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz" + integrity sha1-H24t2jnBaL+S0T+G1KkYkz9mftQ= + dependencies: + no-case "^2.2.0" + upper-case-first "^1.1.2" + +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + +serve-static@1.14.1: + version "1.14.1" + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +servify@^0.1.12: + version "0.1.12" + resolved "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz" + integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== + dependencies: + body-parser "^1.16.0" + cors "^2.8.1" + express "^4.14.0" + request "^2.79.0" + xhr "^2.3.3" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz" + integrity sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ== + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setimmediate@1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz" + integrity sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48= + +setprototypeof@1.1.1: + version "1.1.1" + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +sha1@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz" + integrity sha1-rdqnqTFo85PxnrKxUJFhjicA+Eg= + dependencies: + charenc ">= 0.0.1" + crypt ">= 0.0.1" + +sha3@^2.1.1: + version "2.1.4" + resolved "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz" + integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== + dependencies: + buffer "6.0.3" + +shasum-object@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz" + integrity sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg== + dependencies: + fast-safe-stringify "^2.0.7" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.6.1: + version "1.7.3" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz" + integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== + +shelljs@^0.8.3: + version "0.8.4" + resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz" + integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2: + version "3.0.6" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz" + integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^2.7.0: + version "2.8.1" + resolved "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz" + integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw== + dependencies: + decompress-response "^3.3.0" + once "^1.3.1" + simple-concat "^1.0.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" + integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +snake-case@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz" + integrity sha1-Qb2xtz8w7GagTU4srRt2OH1NbZ8= + dependencies: + no-case "^2.2.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +solc@^0.4.20: + version "0.4.26" + resolved "https://registry.npmjs.org/solc/-/solc-0.4.26.tgz" + integrity sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA== + dependencies: + fs-extra "^0.30.0" + memorystream "^0.3.1" + require-from-string "^1.1.0" + semver "^5.3.0" + yargs "^4.7.1" + +solc@^0.6.3: + version "0.6.12" + resolved "https://registry.npmjs.org/solc/-/solc-0.6.12.tgz" + integrity sha512-Lm0Ql2G9Qc7yPP2Ba+WNmzw2jwsrd3u4PobHYlSOxaut3TtUbj9+5ZrT6f4DUpNPEoBaFUOEg9Op9C0mk7ge9g== + dependencies: + command-exists "^1.2.8" + commander "3.0.2" + fs-extra "^0.30.0" + js-sha3 "0.8.0" + memorystream "^0.3.1" + require-from-string "^2.0.0" + semver "^5.5.0" + tmp "0.0.33" + +solc@0.7.3: + version "0.7.3" + resolved "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz" + integrity sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA== + dependencies: + command-exists "^1.2.8" + commander "3.0.2" + follow-redirects "^1.12.1" + fs-extra "^0.30.0" + js-sha3 "0.8.0" + memorystream "^0.3.1" + require-from-string "^2.0.0" + semver "^5.5.0" + tmp "0.0.33" + +solhint-plugin-prettier@^0.0.5: + version "0.0.5" + resolved "https://registry.npmjs.org/solhint-plugin-prettier/-/solhint-plugin-prettier-0.0.5.tgz" + integrity sha512-7jmWcnVshIrO2FFinIvDQmhQpfpS2rRRn3RejiYgnjIE68xO2bvrYvjqVNfrio4xH9ghOqn83tKuTzLjEbmGIA== + dependencies: + prettier-linter-helpers "^1.0.0" + +solhint@^3.3.6, solhint@^3.4.0: + version "3.4.1" + resolved "https://registry.npmjs.org/solhint/-/solhint-3.4.1.tgz" + integrity sha512-pzZn2RlZhws1XwvLPVSsxfHrwsteFf5eySOhpAytzXwKQYbTCJV6z8EevYDiSVKMpWrvbKpEtJ055CuEmzp4Xg== + dependencies: + "@solidity-parser/parser" "^0.16.0" + ajv "^6.12.6" + antlr4 "^4.11.0" + ast-parents "^0.0.1" + chalk "^4.1.2" + commander "^10.0.0" + cosmiconfig "^8.0.0" + fast-diff "^1.2.0" + glob "^8.0.3" + ignore "^5.2.4" + js-yaml "^4.1.0" + lodash "^4.17.21" + pluralize "^8.0.0" + semver "^6.3.0" + strip-ansi "^6.0.1" + table "^6.8.1" + text-table "^0.2.0" optionalDependencies: - "prettier" "^1.14.3" + prettier "^2.8.3" -"solidity-ast@^0.4.15": - "integrity" "sha512-RtZCP5tSvZMadVtg9/IfLmAMKDOnQEvG2HA6VnPuoTMxqxsbbn4lQy8jgH3RVbqW0eO1hd7cSCKecb72/OeOIw==" - "resolved" "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.28.tgz" - "version" "0.4.28" +solidity-ast@^0.4.15: + version "0.4.28" + resolved "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.28.tgz" + integrity sha512-RtZCP5tSvZMadVtg9/IfLmAMKDOnQEvG2HA6VnPuoTMxqxsbbn4lQy8jgH3RVbqW0eO1hd7cSCKecb72/OeOIw== -"solidity-comments-extractor@^0.0.7": - "integrity" "sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw==" - "resolved" "https://registry.npmjs.org/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz" - "version" "0.0.7" +solidity-comments-extractor@^0.0.7: + version "0.0.7" + resolved "https://registry.npmjs.org/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz" + integrity sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw== -"solidity-coverage@^0.7.22": - "integrity" "sha512-I6Zd5tsFY+gmj1FDIp6w7OrUePx6ZpMgKQZg7dWgPaQHePLi3Jk+iJ8lwZxsWEoNy2Lcv91rMxATWHqRaFdQpw==" - "resolved" "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.7.22.tgz" - "version" "0.7.22" +solidity-coverage@^0.7.22: + version "0.7.22" + resolved "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.7.22.tgz" + integrity sha512-I6Zd5tsFY+gmj1FDIp6w7OrUePx6ZpMgKQZg7dWgPaQHePLi3Jk+iJ8lwZxsWEoNy2Lcv91rMxATWHqRaFdQpw== dependencies: "@solidity-parser/parser" "^0.14.0" "@truffle/provider" "^0.2.24" - "chalk" "^2.4.2" - "death" "^1.1.0" - "detect-port" "^1.3.0" - "fs-extra" "^8.1.0" - "ghost-testrpc" "^0.0.2" - "global-modules" "^2.0.0" - "globby" "^10.0.1" - "jsonschema" "^1.2.4" - "lodash" "^4.17.15" - "node-emoji" "^1.10.0" - "pify" "^4.0.1" - "recursive-readdir" "^2.2.2" - "sc-istanbul" "^0.4.5" - "semver" "^7.3.4" - "shelljs" "^0.8.3" - "web3-utils" "^1.3.0" - -"source-map-resolve@^0.5.0": - "integrity" "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==" - "resolved" "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" - "version" "0.5.3" - dependencies: - "atob" "^2.1.2" - "decode-uri-component" "^0.2.0" - "resolve-url" "^0.2.1" - "source-map-url" "^0.4.0" - "urix" "^0.1.0" - -"source-map-support@^0.4.15": - "integrity" "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz" - "version" "0.4.18" - dependencies: - "source-map" "^0.5.6" - -"source-map-support@^0.5.13": - "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" - "version" "0.5.21" - dependencies: - "buffer-from" "^1.0.0" - "source-map" "^0.6.0" - -"source-map-support@0.5.12": - "integrity" "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz" - "version" "0.5.12" - dependencies: - "buffer-from" "^1.0.0" - "source-map" "^0.6.0" - -"source-map-url@^0.4.0": - "version" "0.4.0" - -"source-map@^0.5.6", "source-map@^0.5.7": - "integrity" "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" - "version" "0.5.7" - -"source-map@^0.6.0", "source-map@^0.6.1": - "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - "version" "0.6.1" - -"source-map@~0.2.0": - "integrity" "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz" - "version" "0.2.0" - dependencies: - "amdefine" ">=0.0.4" - -"source-map@~0.5.3": - "integrity" "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" - "version" "0.5.7" - -"spdx-correct@^3.0.0": - "integrity" "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==" - "resolved" "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" - "version" "3.1.1" - dependencies: - "spdx-expression-parse" "^3.0.0" - "spdx-license-ids" "^3.0.0" - -"spdx-exceptions@^2.1.0": - "integrity" "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - "resolved" "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" - "version" "2.3.0" - -"spdx-expression-parse@^3.0.0": - "integrity" "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==" - "resolved" "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "spdx-exceptions" "^2.1.0" - "spdx-license-ids" "^3.0.0" - -"spdx-license-ids@^3.0.0": - "integrity" "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" - "resolved" "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz" - "version" "3.0.12" - -"split-string@^3.0.1", "split-string@^3.0.2": - "integrity" "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==" - "resolved" "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "extend-shallow" "^3.0.0" - -"sprintf-js@~1.0.2": - "integrity" "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - "version" "1.0.3" - -"sshpk@^1.7.0": - "integrity" "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==" - "resolved" "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz" - "version" "1.16.1" - dependencies: - "asn1" "~0.2.3" - "assert-plus" "^1.0.0" - "bcrypt-pbkdf" "^1.0.0" - "dashdash" "^1.12.0" - "ecc-jsbn" "~0.1.1" - "getpass" "^0.1.1" - "jsbn" "~0.1.0" - "safer-buffer" "^2.0.2" - "tweetnacl" "~0.14.0" - -"stack-trace@0.0.10": - "integrity" "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" - "resolved" "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz" - "version" "0.0.10" - -"stacktrace-parser@^0.1.10": - "integrity" "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==" - "resolved" "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz" - "version" "0.1.10" - dependencies: - "type-fest" "^0.7.1" - -"static-extend@^0.1.1": - "integrity" "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==" - "resolved" "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" - "version" "0.1.2" - dependencies: - "define-property" "^0.2.5" - "object-copy" "^0.1.0" - -"statuses@>= 1.5.0 < 2", "statuses@~1.5.0": - "version" "1.5.0" - -"statuses@2.0.1": - "integrity" "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - "resolved" "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - "version" "2.0.1" - -"stealthy-require@^1.1.1": - "integrity" "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" - "resolved" "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz" - "version" "1.1.1" - -"stream-browserify@^3.0.0": - "integrity" "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==" - "resolved" "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "inherits" "~2.0.4" - "readable-stream" "^3.5.0" - -"stream-combiner2@^1.1.1": - "integrity" "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=" - "resolved" "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "duplexer2" "~0.1.0" - "readable-stream" "^2.0.2" - -"stream-http@^3.0.0": - "integrity" "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==" - "resolved" "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "builtin-status-codes" "^3.0.0" - "inherits" "^2.0.4" - "readable-stream" "^3.6.0" - "xtend" "^4.0.2" - -"stream-splicer@^2.0.0": - "integrity" "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==" - "resolved" "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "inherits" "^2.0.1" - "readable-stream" "^2.0.2" - -"stream-to-pull-stream@^1.7.1": - "integrity" "sha512-6sNyqJpr5dIOQdgNy/xcDWwDuzAsAwVzhzrWlAPAQ7Lkjx/rv0wgvxEyKwTq6FmNd5rjTrELt/CLmaSw7crMGg==" - "resolved" "https://registry.npmjs.org/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz" - "version" "1.7.3" - dependencies: - "looper" "^3.0.0" - "pull-stream" "^3.2.3" - -"streamsearch@^1.1.0": - "integrity" "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" - "resolved" "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" - "version" "1.1.0" - -"strict-uri-encode@^1.0.0": - "integrity" "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" - "resolved" "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" - "version" "1.1.0" - -"string_decoder@^1.1.1": - "integrity" "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==" - "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "safe-buffer" "~5.2.0" - -"string_decoder@~0.10.x": - "integrity" "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" - "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - "version" "0.10.31" - -"string_decoder@~1.1.1": - "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" - "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "safe-buffer" "~5.1.0" - -"string-format@^2.0.0": - "integrity" "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==" - "resolved" "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz" - "version" "2.0.0" - -"string-width@^1.0.1": - "integrity" "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "code-point-at" "^1.0.0" - "is-fullwidth-code-point" "^1.0.0" - "strip-ansi" "^3.0.0" - -"string-width@^1.0.2 || 2", "string-width@^2.1.0", "string-width@^2.1.1": - "integrity" "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "is-fullwidth-code-point" "^2.0.0" - "strip-ansi" "^4.0.0" - -"string-width@^3.0.0": - "integrity" "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "emoji-regex" "^7.0.1" - "is-fullwidth-code-point" "^2.0.0" - "strip-ansi" "^5.1.0" - -"string-width@^3.1.0": - "integrity" "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "emoji-regex" "^7.0.1" - "is-fullwidth-code-point" "^2.0.0" - "strip-ansi" "^5.1.0" - -"string-width@^4.1.0", "string-width@^4.2.0": - "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - "version" "4.2.3" - dependencies: - "emoji-regex" "^8.0.0" - "is-fullwidth-code-point" "^3.0.0" - "strip-ansi" "^6.0.1" - -"string-width@^4.2.3": - "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - "version" "4.2.3" + chalk "^2.4.2" + death "^1.1.0" + detect-port "^1.3.0" + fs-extra "^8.1.0" + ghost-testrpc "^0.0.2" + global-modules "^2.0.0" + globby "^10.0.1" + jsonschema "^1.2.4" + lodash "^4.17.15" + node-emoji "^1.10.0" + pify "^4.0.1" + recursive-readdir "^2.2.2" + sc-istanbul "^0.4.5" + semver "^7.3.4" + shelljs "^0.8.3" + web3-utils "^1.3.0" + +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" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== + dependencies: + source-map "^0.5.6" + +source-map-support@^0.5.13: + 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== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@0.5.12: + version "0.5.12" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz" + integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + +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.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" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz" + integrity sha1-2rc/vPwrqBm03gO9b26qSBZLP50= + dependencies: + amdefine ">=0.0.4" + +source-map@~0.5.3: + version "0.5.7" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.12" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz" + integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +stack-trace@0.0.10: + version "0.0.10" + resolved "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz" + integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= + +stacktrace-parser@^0.1.10: + version "0.1.10" + resolved "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-browserify@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz" + integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== + dependencies: + inherits "~2.0.4" + readable-stream "^3.5.0" + +stream-combiner2@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz" + integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4= + dependencies: + duplexer2 "~0.1.0" + readable-stream "^2.0.2" + +stream-http@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz" + integrity sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.4" + readable-stream "^3.6.0" + xtend "^4.0.2" + +stream-splicer@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz" + integrity sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.2" + +stream-to-pull-stream@^1.7.1: + version "1.7.3" + resolved "https://registry.npmjs.org/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz" + integrity sha512-6sNyqJpr5dIOQdgNy/xcDWwDuzAsAwVzhzrWlAPAQ7Lkjx/rv0wgvxEyKwTq6FmNd5rjTrELt/CLmaSw7crMGg== + dependencies: + looper "^3.0.0" + pull-stream "^3.2.3" + +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +string-format@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz" + integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", 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== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: - "emoji-regex" "^8.0.0" - "is-fullwidth-code-point" "^3.0.0" - "strip-ansi" "^6.0.1" - -"string.prototype.matchall@^4.0.6": - "integrity" "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==" - "resolved" "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz" - "version" "4.0.6" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.1" - "get-intrinsic" "^1.1.1" - "has-symbols" "^1.0.2" - "internal-slot" "^1.0.3" - "regexp.prototype.flags" "^1.3.1" - "side-channel" "^1.0.4" - -"string.prototype.trim@~1.2.1": - "version" "1.2.3" - dependencies: - "call-bind" "^1.0.0" - "define-properties" "^1.1.3" - "es-abstract" "^1.18.0-next.1" - -"string.prototype.trimend@^1.0.1": - "version" "1.0.3" - dependencies: - "call-bind" "^1.0.0" - "define-properties" "^1.1.3" - -"string.prototype.trimend@^1.0.4": - "integrity" "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==" - "resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - -"string.prototype.trimstart@^1.0.1": - "version" "1.0.3" - dependencies: - "call-bind" "^1.0.0" - "define-properties" "^1.1.3" - -"string.prototype.trimstart@^1.0.4": - "integrity" "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==" - "resolved" "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - -"strip-ansi@^3.0.0", "strip-ansi@^3.0.1": - "integrity" "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - "version" "3.0.1" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.matchall@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz" + integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.3.1" + side-channel "^1.0.4" + +string.prototype.trim@~1.2.1: + version "1.2.3" + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +string.prototype.trimend@^1.0.1: + version "1.0.3" + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.1: + version "1.0.3" + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +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" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== dependencies: - "ansi-regex" "^2.0.0" + ansi-regex "^2.0.0" -"strip-ansi@^4.0.0": - "integrity" "sha1-qEeQIusaw2iocTibY1JixQXuNo8=" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" - "version" "4.0.0" +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= dependencies: - "ansi-regex" "^3.0.0" + ansi-regex "^3.0.0" -"strip-ansi@^5.0.0", "strip-ansi@^5.1.0", "strip-ansi@^5.2.0": - "integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" - "version" "5.2.0" +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: - "ansi-regex" "^4.1.0" + ansi-regex "^4.1.0" -"strip-ansi@^6.0.0", "strip-ansi@^6.0.1": - "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - "version" "6.0.1" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - "ansi-regex" "^5.0.1" + ansi-regex "^5.0.1" -"strip-bom@^2.0.0": - "integrity" "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==" - "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" - "version" "2.0.0" +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" + integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== dependencies: - "is-utf8" "^0.2.0" + is-utf8 "^0.2.0" -"strip-bom@^3.0.0": - "integrity" "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" - "version" "3.0.0" - -"strip-hex-prefix@1.0.0": - "integrity" "sha1-DF8VX+8RUTczd96du1iNoFUA428=" - "resolved" "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "is-hex-prefixed" "1.0.0" - -"strip-indent@^2.0.0": - "integrity" "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==" - "resolved" "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz" - "version" "2.0.0" - -"strip-json-comments@^2.0.0", "strip-json-comments@^2.0.1", "strip-json-comments@2.0.1": - "integrity" "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" - "version" "2.0.1" - -"strip-json-comments@^3.1.0": - "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - "version" "3.1.1" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz" + integrity sha1-DF8VX+8RUTczd96du1iNoFUA428= + dependencies: + is-hex-prefixed "1.0.0" + +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz" + integrity sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA== + +strip-json-comments@^2.0.0, strip-json-comments@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +strip-json-comments@^3.1.0: + 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== -"strip-json-comments@^3.1.1": - "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - "version" "3.1.1" +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== -"strip-json-comments@3.1.1": - "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - "version" "3.1.1" +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== -"subarg@^1.0.0": - "integrity" "sha1-9izxdYHplrSPyWVpn1TAauJouNI=" - "resolved" "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz" - "version" "1.0.0" +subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz" + integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI= dependencies: - "minimist" "^1.1.0" - -"supports-color@^2.0.0": - "integrity" "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - "version" "2.0.0" - -"supports-color@^3.1.0": - "integrity" "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz" - "version" "3.2.3" - dependencies: - "has-flag" "^1.0.0" - -"supports-color@^5.3.0": - "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "has-flag" "^3.0.0" - -"supports-color@^7.1.0": - "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - "version" "7.2.0" - dependencies: - "has-flag" "^4.0.0" - -"supports-color@6.0.0": - "integrity" "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "has-flag" "^3.0.0" - -"supports-color@8.1.1": - "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - "version" "8.1.1" - dependencies: - "has-flag" "^4.0.0" - -"swap-case@^1.1.0": - "integrity" "sha1-w5IDpFhzhfrTyFCgvRvK+ggZdOM=" - "resolved" "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "lower-case" "^1.1.1" - "upper-case" "^1.1.1" - -"swarm-js@^0.1.40": - "integrity" "sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA==" - "resolved" "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.40.tgz" - "version" "0.1.40" - dependencies: - "bluebird" "^3.5.0" - "buffer" "^5.0.5" - "eth-lib" "^0.1.26" - "fs-extra" "^4.0.2" - "got" "^7.1.0" - "mime-types" "^2.1.16" - "mkdirp-promise" "^5.0.1" - "mock-fs" "^4.1.0" - "setimmediate" "^1.0.5" - "tar" "^4.0.2" - "xhr-request" "^1.0.1" - -"sync-request@^6.0.0": - "integrity" "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==" - "resolved" "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "http-response-object" "^3.0.1" - "sync-rpc" "^1.2.1" - "then-request" "^6.0.0" - -"sync-rpc@^1.2.1": - "integrity" "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==" - "resolved" "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz" - "version" "1.3.6" - dependencies: - "get-port" "^3.1.0" - -"syntax-error@^1.1.1": - "integrity" "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==" - "resolved" "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "acorn-node" "^1.2.0" - -"table-layout@^1.0.1": - "integrity" "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==" - "resolved" "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "array-back" "^4.0.1" - "deep-extend" "~0.6.0" - "typical" "^5.2.0" - "wordwrapjs" "^4.0.0" - -"table@^5.2.3": - "integrity" "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==" - "resolved" "https://registry.npmjs.org/table/-/table-5.4.6.tgz" - "version" "5.4.6" - dependencies: - "ajv" "^6.10.2" - "lodash" "^4.17.14" - "slice-ansi" "^2.1.0" - "string-width" "^3.0.0" - -"table@^6.0.9": - "integrity" "sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw==" - "resolved" "https://registry.npmjs.org/table/-/table-6.7.5.tgz" - "version" "6.7.5" - dependencies: - "ajv" "^8.0.1" - "lodash.truncate" "^4.4.2" - "slice-ansi" "^4.0.0" - "string-width" "^4.2.3" - "strip-ansi" "^6.0.1" - -"tape@^4.6.3": - "version" "4.13.3" - dependencies: - "deep-equal" "~1.1.1" - "defined" "~1.0.0" - "dotignore" "~0.1.2" - "for-each" "~0.3.3" - "function-bind" "~1.1.1" - "glob" "~7.1.6" - "has" "~1.0.3" - "inherits" "~2.0.4" - "is-regex" "~1.0.5" - "minimist" "~1.2.5" - "object-inspect" "~1.7.0" - "resolve" "~1.17.0" - "resumer" "~0.0.0" - "string.prototype.trim" "~1.2.1" - "through" "~2.3.8" - -"tar@^4.0.2": - "integrity" "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==" - "resolved" "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz" - "version" "4.4.19" - dependencies: - "chownr" "^1.1.4" - "fs-minipass" "^1.2.7" - "minipass" "^2.9.0" - "minizlib" "^1.3.3" - "mkdirp" "^0.5.5" - "safe-buffer" "^5.2.1" - "yallist" "^3.1.1" - -"tenderly@^0.3.0": - "integrity" "sha512-JulOh626MZUzfur4YGJeIjpGS+1e3f+dfutHg+JkaDTFaGdEzhE68qVyBAmhynbCcXUItkZTpLARdhQEpEXW5w==" - "resolved" "https://registry.npmjs.org/tenderly/-/tenderly-0.3.0.tgz" - "version" "0.3.0" - dependencies: - "axios" "^0.27.2" - "cli-table3" "^0.6.2" - "commander" "^9.4.0" - "express" "^4.18.1" - "hyperlinker" "^1.0.0" - "js-yaml" "^4.1.0" - "open" "^8.4.0" - "prompts" "^2.4.2" - "tslog" "^4.4.0" - -"test-value@^2.1.0": - "integrity" "sha1-Edpv9nDzRxpztiXKTz/c97t0gpE=" - "resolved" "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "array-back" "^1.0.3" - "typical" "^2.6.0" - -"testrpc@0.0.1": - "integrity" "sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA==" - "resolved" "https://registry.npmjs.org/testrpc/-/testrpc-0.0.1.tgz" - "version" "0.0.1" - -"text-table@^0.2.0": - "integrity" "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" - "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - "version" "0.2.0" - -"then-request@^6.0.0": - "integrity" "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==" - "resolved" "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz" - "version" "6.0.2" + minimist "^1.1.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== + +supports-color@^3.1.0: + version "3.2.3" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= + dependencies: + has-flag "^1.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.1.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== + dependencies: + has-flag "^4.0.0" + +supports-color@6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz" + integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== + dependencies: + has-flag "^3.0.0" + +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +swap-case@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz" + integrity sha1-w5IDpFhzhfrTyFCgvRvK+ggZdOM= + dependencies: + lower-case "^1.1.1" + upper-case "^1.1.1" + +swarm-js@^0.1.40: + version "0.1.40" + resolved "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.40.tgz" + integrity sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA== + dependencies: + bluebird "^3.5.0" + buffer "^5.0.5" + eth-lib "^0.1.26" + fs-extra "^4.0.2" + got "^7.1.0" + mime-types "^2.1.16" + mkdirp-promise "^5.0.1" + mock-fs "^4.1.0" + setimmediate "^1.0.5" + tar "^4.0.2" + xhr-request "^1.0.1" + +sync-request@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz" + integrity sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw== + dependencies: + http-response-object "^3.0.1" + sync-rpc "^1.2.1" + then-request "^6.0.0" + +sync-rpc@^1.2.1: + version "1.3.6" + resolved "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz" + integrity sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw== + dependencies: + get-port "^3.1.0" + +syntax-error@^1.1.1: + version "1.4.0" + resolved "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz" + integrity sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w== + dependencies: + acorn-node "^1.2.0" + +table-layout@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + +table@^6.0.9, table@^6.8.1: + version "6.8.1" + resolved "https://registry.npmjs.org/table/-/table-6.8.1.tgz" + integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +tape@^4.6.3: + version "4.13.3" + dependencies: + deep-equal "~1.1.1" + defined "~1.0.0" + dotignore "~0.1.2" + for-each "~0.3.3" + function-bind "~1.1.1" + glob "~7.1.6" + has "~1.0.3" + inherits "~2.0.4" + is-regex "~1.0.5" + minimist "~1.2.5" + object-inspect "~1.7.0" + resolve "~1.17.0" + resumer "~0.0.0" + string.prototype.trim "~1.2.1" + through "~2.3.8" + +tar@^4.0.2: + version "4.4.19" + resolved "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz" + integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== + dependencies: + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" + +tenderly@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/tenderly/-/tenderly-0.3.0.tgz" + integrity sha512-JulOh626MZUzfur4YGJeIjpGS+1e3f+dfutHg+JkaDTFaGdEzhE68qVyBAmhynbCcXUItkZTpLARdhQEpEXW5w== + dependencies: + axios "^0.27.2" + cli-table3 "^0.6.2" + commander "^9.4.0" + express "^4.18.1" + hyperlinker "^1.0.0" + js-yaml "^4.1.0" + open "^8.4.0" + prompts "^2.4.2" + tslog "^4.4.0" + +test-value@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz" + integrity sha1-Edpv9nDzRxpztiXKTz/c97t0gpE= + dependencies: + array-back "^1.0.3" + typical "^2.6.0" + +testrpc@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/testrpc/-/testrpc-0.0.1.tgz" + integrity sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA== + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +then-request@^6.0.0: + version "6.0.2" + resolved "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz" + integrity sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA== dependencies: "@types/concat-stream" "^1.6.0" "@types/form-data" "0.0.33" "@types/node" "^8.0.0" "@types/qs" "^6.2.31" - "caseless" "~0.12.0" - "concat-stream" "^1.6.0" - "form-data" "^2.2.0" - "http-basic" "^8.1.1" - "http-response-object" "^3.0.1" - "promise" "^8.0.0" - "qs" "^6.4.0" - -"through@^2.3.6", "through@>=2.2.7 <3": - "integrity" "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - "version" "2.3.8" - -"through@~2.3.4", "through@~2.3.8": - "integrity" "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - "version" "2.3.8" - -"through2@^2.0.0": - "integrity" "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==" - "resolved" "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" - "version" "2.0.5" - dependencies: - "readable-stream" "~2.3.6" - "xtend" "~4.0.1" - -"through2@^2.0.3": - "integrity" "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==" - "resolved" "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" - "version" "2.0.5" - dependencies: - "readable-stream" "~2.3.6" - "xtend" "~4.0.1" - -"timed-out@^4.0.0", "timed-out@^4.0.1": - "integrity" "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" - "resolved" "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz" - "version" "4.0.1" - -"timers-browserify@^1.0.1": - "integrity" "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=" - "resolved" "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz" - "version" "1.4.2" - dependencies: - "process" "~0.11.0" - -"tiny-invariant@^1.1.0": - "integrity" "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" - "resolved" "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz" - "version" "1.3.1" - -"tiny-warning@^1.0.3": - "integrity" "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - "resolved" "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" - "version" "1.0.3" - -"title-case@^2.1.0": - "integrity" "sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o=" - "resolved" "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "no-case" "^2.2.0" - "upper-case" "^1.0.3" - -"tmp@^0.0.33", "tmp@0.0.33": - "integrity" "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==" - "resolved" "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" - "version" "0.0.33" - dependencies: - "os-tmpdir" "~1.0.2" - -"tmp@0.1.0": - "integrity" "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==" - "resolved" "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz" - "version" "0.1.0" - dependencies: - "rimraf" "^2.6.3" - -"to-fast-properties@^1.0.3": - "integrity" "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==" - "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" - "version" "1.0.3" - -"to-object-path@^0.3.0": - "integrity" "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==" - "resolved" "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" - "version" "0.3.0" - dependencies: - "kind-of" "^3.0.2" - -"to-readable-stream@^1.0.0": - "integrity" "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - "resolved" "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" - "version" "1.0.0" - -"to-regex-range@^2.1.0": - "integrity" "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==" - "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "is-number" "^3.0.0" - "repeat-string" "^1.6.1" - -"to-regex-range@^5.0.1": - "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" - "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "is-number" "^7.0.0" - -"to-regex@^3.0.1", "to-regex@^3.0.2": - "integrity" "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==" - "resolved" "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "define-property" "^2.0.2" - "extend-shallow" "^3.0.2" - "regex-not" "^1.0.2" - "safe-regex" "^1.1.0" - -"toformat@^2.0.0": - "integrity" "sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ==" - "resolved" "https://registry.npmjs.org/toformat/-/toformat-2.0.0.tgz" - "version" "2.0.0" - -"toidentifier@1.0.0": - "version" "1.0.0" - -"toidentifier@1.0.1": - "integrity" "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" - "version" "1.0.1" - -"tough-cookie@^2.3.3", "tough-cookie@~2.5.0": - "integrity" "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==" - "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" - "version" "2.5.0" - dependencies: - "psl" "^1.1.28" - "punycode" "^2.1.1" - -"tr46@~0.0.3": - "integrity" "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - "resolved" "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" - "version" "0.0.3" - -"trim-right@^1.0.1": - "integrity" "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==" - "resolved" "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" - "version" "1.0.1" - -"ts-command-line-args@^2.2.0": - "integrity" "sha512-mnK68QA86FYzQYTSA/rxIjT/8EpKsvQw9QkawPic8I8t0gjAOw3Oa509NIRoaY1FmH7hdrncMp7t7o+vYoceNQ==" - "resolved" "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.2.1.tgz" - "version" "2.2.1" - dependencies: - "chalk" "^4.1.0" - "command-line-args" "^5.1.1" - "command-line-usage" "^6.1.0" - "string-format" "^2.0.0" - -"ts-essentials@^1.0.0": - "integrity" "sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ==" - "resolved" "https://registry.npmjs.org/ts-essentials/-/ts-essentials-1.0.4.tgz" - "version" "1.0.4" - -"ts-essentials@^6.0.3": - "integrity" "sha512-2E4HIIj4tQJlIHuATRHayv0EfMGK3ris/GRk1E3CFnsZzeNV+hUmelbaTZHLtXaZppM5oLhHRtO04gINC4Jusw==" - "resolved" "https://registry.npmjs.org/ts-essentials/-/ts-essentials-6.0.7.tgz" - "version" "6.0.7" - -"ts-essentials@^7.0.1": - "integrity" "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==" - "resolved" "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz" - "version" "7.0.3" - -"ts-generator@^0.1.1": - "integrity" "sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ==" - "resolved" "https://registry.npmjs.org/ts-generator/-/ts-generator-0.1.1.tgz" - "version" "0.1.1" + caseless "~0.12.0" + concat-stream "^1.6.0" + form-data "^2.2.0" + http-basic "^8.1.1" + http-response-object "^3.0.1" + promise "^8.0.0" + qs "^6.4.0" + +"through@>=2.2.7 <3": + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +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== + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through2@^2.0.3: + version "2.0.5" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +timed-out@^4.0.0, timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz" + integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= + +timers-browserify@^1.0.1: + version "1.4.2" + resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz" + integrity sha1-ycWLV1voQHN1y14kYtrO50NZ9B0= + dependencies: + process "~0.11.0" + +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.3: + version "1.0.3" + resolved "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +title-case@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz" + integrity sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o= + dependencies: + no-case "^2.2.0" + upper-case "^1.0.3" + +tmp@^0.0.33, tmp@0.0.33: + version "0.0.33" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmp@0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz" + integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== + dependencies: + rimraf "^2.6.3" + +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" + integrity sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== + dependencies: + kind-of "^3.0.2" + +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toformat@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/toformat/-/toformat-2.0.0.tgz" + integrity sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ== + +toidentifier@1.0.0: + version "1.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" + integrity sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw== + +ts-command-line-args@^2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.2.1.tgz" + integrity sha512-mnK68QA86FYzQYTSA/rxIjT/8EpKsvQw9QkawPic8I8t0gjAOw3Oa509NIRoaY1FmH7hdrncMp7t7o+vYoceNQ== + dependencies: + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.0" + string-format "^2.0.0" + +ts-essentials@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/ts-essentials/-/ts-essentials-1.0.4.tgz" + integrity sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ== + +ts-essentials@^6.0.3: + version "6.0.7" + resolved "https://registry.npmjs.org/ts-essentials/-/ts-essentials-6.0.7.tgz" + integrity sha512-2E4HIIj4tQJlIHuATRHayv0EfMGK3ris/GRk1E3CFnsZzeNV+hUmelbaTZHLtXaZppM5oLhHRtO04gINC4Jusw== + +ts-essentials@^7.0.1: + version "7.0.3" + resolved "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz" + integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== + +ts-generator@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/ts-generator/-/ts-generator-0.1.1.tgz" + integrity sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ== dependencies: "@types/mkdirp" "^0.5.2" "@types/prettier" "^2.1.1" "@types/resolve" "^0.0.8" - "chalk" "^2.4.1" - "glob" "^7.1.2" - "mkdirp" "^0.5.1" - "prettier" "^2.1.2" - "resolve" "^1.8.1" - "ts-essentials" "^1.0.0" - -"ts-node@*", "ts-node@^10.5.0": - "integrity" "sha512-6kEJKwVxAJ35W4akuiysfKwKmjkbYxwQMTBaAxo9KKAx/Yd26mPUyhGz3ji+EsJoAgrLqVsYHNuuYwQe22lbtw==" - "resolved" "https://registry.npmjs.org/ts-node/-/ts-node-10.5.0.tgz" - "version" "10.5.0" + chalk "^2.4.1" + glob "^7.1.2" + mkdirp "^0.5.1" + prettier "^2.1.2" + resolve "^1.8.1" + ts-essentials "^1.0.0" + +ts-node@*, ts-node@^10.5.0: + version "10.5.0" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.5.0.tgz" + integrity sha512-6kEJKwVxAJ35W4akuiysfKwKmjkbYxwQMTBaAxo9KKAx/Yd26mPUyhGz3ji+EsJoAgrLqVsYHNuuYwQe22lbtw== dependencies: "@cspotcode/source-map-support" "0.7.0" "@tsconfig/node10" "^1.0.7" "@tsconfig/node12" "^1.0.7" "@tsconfig/node14" "^1.0.0" "@tsconfig/node16" "^1.0.2" - "acorn" "^8.4.1" - "acorn-walk" "^8.1.1" - "arg" "^4.1.0" - "create-require" "^1.1.0" - "diff" "^4.0.1" - "make-error" "^1.1.1" - "v8-compile-cache-lib" "^3.0.0" - "yn" "3.1.1" - -"tsconfig-paths@^3.11.0": - "integrity" "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==" - "resolved" "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz" - "version" "3.12.0" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.0" + yn "3.1.1" + +tsconfig-paths@^3.11.0: + version "3.12.0" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz" + integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg== dependencies: "@types/json5" "^0.0.29" - "json5" "^1.0.1" - "minimist" "^1.2.0" - "strip-bom" "^3.0.0" - -"tsconfig@^5.0.3": - "integrity" "sha1-X0J45wGACWeo/Dg/0ZZIh48qbjo=" - "resolved" "https://registry.npmjs.org/tsconfig/-/tsconfig-5.0.3.tgz" - "version" "5.0.3" - dependencies: - "any-promise" "^1.3.0" - "parse-json" "^2.2.0" - "strip-bom" "^2.0.0" - "strip-json-comments" "^2.0.0" - -"tsify@^5.0.4": - "integrity" "sha512-XAZtQ5OMPsJFclkZ9xMZWkSNyMhMxEPsz3D2zu79yoKorH9j/DT4xCloJeXk5+cDhosEibu4bseMVjyPOAyLJA==" - "resolved" "https://registry.npmjs.org/tsify/-/tsify-5.0.4.tgz" - "version" "5.0.4" - dependencies: - "convert-source-map" "^1.1.0" - "fs.realpath" "^1.0.0" - "object-assign" "^4.1.0" - "semver" "^6.1.0" - "through2" "^2.0.0" - "tsconfig" "^5.0.3" - -"tslib@^1.8.1", "tslib@^1.9.0", "tslib@^1.9.3": - "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - "version" "1.14.1" - -"tslog@^4.3.1", "tslog@^4.4.0": - "integrity" "sha512-NZCunFmbQK25tt+Egv28MLcmbo8M1HgUy6X2hdVbgrAlcR7zRGvPmM8SnpoljXZ48zHRRYWp9vYIHFHKWsR4HA==" - "resolved" "https://registry.npmjs.org/tslog/-/tslog-4.7.2.tgz" - "version" "4.7.2" - -"tsort@0.0.1": - "integrity" "sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y=" - "resolved" "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz" - "version" "0.0.1" - -"tsutils@^3.21.0": - "integrity" "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==" - "resolved" "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" - "version" "3.21.0" - dependencies: - "tslib" "^1.8.1" - -"tty-browserify@0.0.1": - "integrity" "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" - "resolved" "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz" - "version" "0.0.1" - -"tunnel-agent@^0.6.0": - "integrity" "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=" - "resolved" "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" - "version" "0.6.0" - dependencies: - "safe-buffer" "^5.0.1" - -"tweetnacl-util@^0.15.0": - "integrity" "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" - "resolved" "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz" - "version" "0.15.1" - -"tweetnacl-util@^0.15.1": - "integrity" "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" - "resolved" "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz" - "version" "0.15.1" - -"tweetnacl@^0.14.3": - "integrity" "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" - "version" "0.14.5" - -"tweetnacl@^1.0.0": - "integrity" "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" - "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" - "version" "1.0.3" - -"tweetnacl@^1.0.3": - "integrity" "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" - "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" - "version" "1.0.3" - -"tweetnacl@~0.14.0": - "integrity" "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" - "version" "0.14.5" - -"type-check@^0.4.0", "type-check@~0.4.0": - "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" - "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - "version" "0.4.0" - dependencies: - "prelude-ls" "^1.2.1" - -"type-check@~0.3.2": - "integrity" "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=" - "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" - "version" "0.3.2" - dependencies: - "prelude-ls" "~1.1.2" - -"type-detect@^4.0.0", "type-detect@^4.0.5", "type-detect@4.0.8": - "integrity" "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" - "resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" - "version" "4.0.8" - -"type-fest@^0.20.2": - "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - "version" "0.20.2" - -"type-fest@^0.21.3": - "integrity" "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" - "version" "0.21.3" - -"type-fest@^0.7.1": - "integrity" "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz" - "version" "0.7.1" - -"type-is@~1.6.17", "type-is@~1.6.18": - "integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" - "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" - "version" "1.6.18" - dependencies: - "media-typer" "0.3.0" - "mime-types" "~2.1.24" - -"type@^1.0.1": - "integrity" "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - "resolved" "https://registry.npmjs.org/type/-/type-1.2.0.tgz" - "version" "1.2.0" - -"type@^2.0.0": - "version" "2.1.0" - -"type@^2.5.0": - "integrity" "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" - "resolved" "https://registry.npmjs.org/type/-/type-2.5.0.tgz" - "version" "2.5.0" - -"typechain@^3.0.0": - "integrity" "sha512-ft4KVmiN3zH4JUFu2WJBrwfHeDf772Tt2d8bssDTo/YcckKW2D+OwFrHXRC6hJvO3mHjFQTihoMV6fJOi0Hngg==" - "resolved" "https://registry.npmjs.org/typechain/-/typechain-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "command-line-args" "^4.0.7" - "debug" "^4.1.1" - "fs-extra" "^7.0.0" - "js-sha3" "^0.8.0" - "lodash" "^4.17.15" - "ts-essentials" "^6.0.3" - "ts-generator" "^0.1.1" - -"typechain@^7.0.0": - "integrity" "sha512-ILfvBBFJ7j9aIk0crX03+N2GmzoDN1gtk32G1+XrasjuvXS0XAw2XxwQeQMMgKwlnxViJjIkG87sTMYXPkXA9g==" - "resolved" "https://registry.npmjs.org/typechain/-/typechain-7.0.0.tgz" - "version" "7.0.0" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + +tsconfig@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/tsconfig/-/tsconfig-5.0.3.tgz" + integrity sha1-X0J45wGACWeo/Dg/0ZZIh48qbjo= + dependencies: + any-promise "^1.3.0" + parse-json "^2.2.0" + strip-bom "^2.0.0" + strip-json-comments "^2.0.0" + +tsify@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/tsify/-/tsify-5.0.4.tgz" + integrity sha512-XAZtQ5OMPsJFclkZ9xMZWkSNyMhMxEPsz3D2zu79yoKorH9j/DT4xCloJeXk5+cDhosEibu4bseMVjyPOAyLJA== + dependencies: + convert-source-map "^1.1.0" + fs.realpath "^1.0.0" + object-assign "^4.1.0" + semver "^6.1.0" + through2 "^2.0.0" + tsconfig "^5.0.3" + +tslib@^1.8.1, tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslog@^4.3.1, tslog@^4.4.0: + version "4.7.2" + resolved "https://registry.npmjs.org/tslog/-/tslog-4.7.2.tgz" + integrity sha512-NZCunFmbQK25tt+Egv28MLcmbo8M1HgUy6X2hdVbgrAlcR7zRGvPmM8SnpoljXZ48zHRRYWp9vYIHFHKWsR4HA== + +tsort@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz" + integrity sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y= + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +tty-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz" + integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl-util@^0.15.0: + version "0.15.1" + resolved "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz" + integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== + +tweetnacl-util@^0.15.1: + version "0.15.1" + resolved "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz" + integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== + +tweetnacl@^0.14.3: + version "0.14.5" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +tweetnacl@^1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-detect@^4.0.0, type-detect@^4.0.5, type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.npmjs.org/type/-/type-1.2.0.tgz" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.1.0" + +type@^2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/type/-/type-2.5.0.tgz" + integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== + +typechain@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/typechain/-/typechain-3.0.0.tgz" + integrity sha512-ft4KVmiN3zH4JUFu2WJBrwfHeDf772Tt2d8bssDTo/YcckKW2D+OwFrHXRC6hJvO3mHjFQTihoMV6fJOi0Hngg== + dependencies: + command-line-args "^4.0.7" + debug "^4.1.1" + fs-extra "^7.0.0" + js-sha3 "^0.8.0" + lodash "^4.17.15" + ts-essentials "^6.0.3" + ts-generator "^0.1.1" + +typechain@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/typechain/-/typechain-7.0.0.tgz" + integrity sha512-ILfvBBFJ7j9aIk0crX03+N2GmzoDN1gtk32G1+XrasjuvXS0XAw2XxwQeQMMgKwlnxViJjIkG87sTMYXPkXA9g== dependencies: "@types/prettier" "^2.1.1" - "debug" "^4.1.1" - "fs-extra" "^7.0.0" - "glob" "^7.1.6" - "js-sha3" "^0.8.0" - "lodash" "^4.17.15" - "mkdirp" "^1.0.4" - "prettier" "^2.1.2" - "ts-command-line-args" "^2.2.0" - "ts-essentials" "^7.0.1" - -"typedarray-to-buffer@^3.1.5": - "integrity" "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==" - "resolved" "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" - "version" "3.1.5" - dependencies: - "is-typedarray" "^1.0.0" - -"typedarray@^0.0.6": - "integrity" "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - "resolved" "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" - "version" "0.0.6" - -"typescript@*", "typescript@^4.5.5", "typescript@>= 2.8", "typescript@>=2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", "typescript@>=3.7.0", "typescript@>=4.0.0", "typescript@>=4.1.0": - "integrity" "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==" - "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz" - "version" "4.5.5" - -"typewise-core@^1.2", "typewise-core@^1.2.0": - "integrity" "sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==" - "resolved" "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz" - "version" "1.2.0" - -"typewise@^1.0.3": - "integrity" "sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==" - "resolved" "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "typewise-core" "^1.2.0" - -"typewiselite@~1.0.0": - "integrity" "sha512-J9alhjVHupW3Wfz6qFRGgQw0N3gr8hOkw6zm7FZ6UR1Cse/oD9/JVok7DNE9TT9IbciDHX2Ex9+ksE6cRmtymw==" - "resolved" "https://registry.npmjs.org/typewiselite/-/typewiselite-1.0.0.tgz" - "version" "1.0.0" - -"typical@^2.6.0", "typical@^2.6.1": - "integrity" "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=" - "resolved" "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz" - "version" "2.6.1" - -"typical@^4.0.0": - "integrity" "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==" - "resolved" "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz" - "version" "4.0.0" - -"typical@^5.2.0": - "integrity" "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==" - "resolved" "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz" - "version" "5.2.0" - -"uglify-js@^3.1.4": - "integrity" "sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ==" - "resolved" "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.5.tgz" - "version" "3.14.5" - -"ultron@~1.1.0": - "integrity" "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" - "resolved" "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz" - "version" "1.1.1" - -"umd@^3.0.0": - "integrity" "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==" - "resolved" "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz" - "version" "3.0.3" - -"unbox-primitive@^1.0.1": - "integrity" "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==" - "resolved" "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "function-bind" "^1.1.1" - "has-bigints" "^1.0.1" - "has-symbols" "^1.0.2" - "which-boxed-primitive" "^1.0.2" - -"undeclared-identifiers@^1.1.2": - "integrity" "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==" - "resolved" "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "acorn-node" "^1.3.0" - "dash-ast" "^1.0.0" - "get-assigned-identifiers" "^1.2.0" - "simple-concat" "^1.0.0" - "xtend" "^4.0.1" - -"underscore@1.9.1": - "integrity" "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" - "resolved" "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz" - "version" "1.9.1" - -"undici@^5.14.0": - "integrity" "sha512-1iVwbhonhFytNdg0P4PqyIAXbdlVZVebtPDvuM36m66mRw4OGrCm2MYynJv/UENFLdP13J1nPVQzVE2zTs1OeA==" - "resolved" "https://registry.npmjs.org/undici/-/undici-5.18.0.tgz" - "version" "5.18.0" - dependencies: - "busboy" "^1.6.0" - -"union-value@^1.0.0": - "integrity" "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==" - "resolved" "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "arr-union" "^3.1.0" - "get-value" "^2.0.6" - "is-extendable" "^0.1.1" - "set-value" "^2.0.1" - -"universalify@^0.1.0": - "integrity" "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" - "version" "0.1.2" - -"universalify@^2.0.0": - "integrity" "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" - "version" "2.0.0" - -"unorm@^1.3.3": - "integrity" "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==" - "resolved" "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz" - "version" "1.6.0" - -"unpipe@~1.0.0", "unpipe@1.0.0": - "integrity" "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - "version" "1.0.0" - -"unset-value@^1.0.0": - "integrity" "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==" - "resolved" "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "has-value" "^0.3.1" - "isobject" "^3.0.0" - -"upper-case-first@^1.1.0", "upper-case-first@^1.1.2": - "integrity" "sha1-XXm+3P8UQZUY/S7bCgUHybaFkRU=" - "resolved" "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "upper-case" "^1.1.1" - -"upper-case@^1.0.3", "upper-case@^1.1.0", "upper-case@^1.1.1", "upper-case@^1.1.3": - "integrity" "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" - "resolved" "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz" - "version" "1.1.3" - -"uri-js@^4.2.2": - "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" - "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - "version" "4.4.1" - dependencies: - "punycode" "^2.1.0" - -"urix@^0.1.0": - "integrity" "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==" - "resolved" "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" - "version" "0.1.0" - -"url-parse-lax@^1.0.0": - "integrity" "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=" - "resolved" "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "prepend-http" "^1.0.1" - -"url-parse-lax@^3.0.0": - "integrity" "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=" - "resolved" "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "prepend-http" "^2.0.0" - -"url-set-query@^1.0.0": - "integrity" "sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=" - "resolved" "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz" - "version" "1.0.0" - -"url-to-options@^1.0.1": - "integrity" "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" - "resolved" "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz" - "version" "1.0.1" - -"url@^0.11.0", "url@~0.11.0": - "integrity" "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=" - "resolved" "https://registry.npmjs.org/url/-/url-0.11.0.tgz" - "version" "0.11.0" - dependencies: - "punycode" "1.3.2" - "querystring" "0.2.0" - -"use@^3.1.0": - "integrity" "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - "resolved" "https://registry.npmjs.org/use/-/use-3.1.1.tgz" - "version" "3.1.1" - -"utf-8-validate@^5.0.2": - "integrity" "sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q==" - "resolved" "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.7.tgz" - "version" "5.0.7" - dependencies: - "node-gyp-build" "^4.3.0" - -"utf8@^3.0.0", "utf8@3.0.0": - "integrity" "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" - "resolved" "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz" - "version" "3.0.0" - -"util-deprecate@^1.0.1", "util-deprecate@~1.0.1": - "integrity" "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - "version" "1.0.2" - -"util.promisify@^1.0.0": - "integrity" "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==" - "resolved" "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "call-bind" "^1.0.0" - "define-properties" "^1.1.3" - "for-each" "^0.3.3" - "has-symbols" "^1.0.1" - "object.getownpropertydescriptors" "^2.1.1" - -"util@^0.12.0", "util@~0.12.0": - "integrity" "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==" - "resolved" "https://registry.npmjs.org/util/-/util-0.12.4.tgz" - "version" "0.12.4" - dependencies: - "inherits" "^2.0.3" - "is-arguments" "^1.0.4" - "is-generator-function" "^1.0.7" - "is-typed-array" "^1.1.3" - "safe-buffer" "^5.1.2" - "which-typed-array" "^1.1.2" - -"util@0.10.3": - "integrity" "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=" - "resolved" "https://registry.npmjs.org/util/-/util-0.10.3.tgz" - "version" "0.10.3" - dependencies: - "inherits" "2.0.1" - -"utils-merge@1.0.1": - "integrity" "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" - "version" "1.0.1" - -"uuid@^3.3.2": - "integrity" "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" - "version" "3.4.0" - -"uuid@^8.3.2": - "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" - "version" "8.3.2" - -"uuid@2.0.1": - "integrity" "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz" - "version" "2.0.1" - -"uuid@3.3.2": - "integrity" "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz" - "version" "3.3.2" - -"v8-compile-cache-lib@^3.0.0": - "integrity" "sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==" - "resolved" "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz" - "version" "3.0.0" - -"v8-compile-cache@^2.0.3": - "integrity" "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" - "resolved" "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" - "version" "2.3.0" - -"validate-npm-package-license@^3.0.1": - "integrity" "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==" - "resolved" "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "spdx-correct" "^3.0.0" - "spdx-expression-parse" "^3.0.0" - -"varint@^5.0.0": - "integrity" "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - "resolved" "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz" - "version" "5.0.2" - -"vary@^1", "vary@~1.1.2": - "integrity" "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" - "version" "1.1.2" - -"verror@1.10.0": - "integrity" "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=" - "resolved" "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" - "version" "1.10.0" - dependencies: - "assert-plus" "^1.0.0" - "core-util-is" "1.0.2" - "extsprintf" "^1.2.0" - -"vm-browserify@^1.0.0": - "integrity" "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" - "resolved" "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz" - "version" "1.1.2" - -"web3-bzz@1.2.11": - "integrity" "sha512-XGpWUEElGypBjeFyUhTkiPXFbDVD6Nr/S5jznE3t8cWUA0FxRf1n3n/NuIZeb0H9RkN2Ctd/jNma/k8XGa3YKg==" - "resolved" "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.11.tgz" - "version" "1.2.11" + debug "^4.1.1" + fs-extra "^7.0.0" + glob "^7.1.6" + js-sha3 "^0.8.0" + lodash "^4.17.15" + mkdirp "^1.0.4" + prettier "^2.1.2" + ts-command-line-args "^2.2.0" + ts-essentials "^7.0.1" + +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@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +typescript@*, typescript@^4.5.5, "typescript@>= 2.8", typescript@>=2.7, "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", typescript@>=3.7.0, typescript@>=4.0.0, typescript@>=4.1.0: + version "4.5.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz" + integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== + +typewise-core@^1.2, typewise-core@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz" + integrity sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg== + +typewise@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz" + integrity sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ== + dependencies: + typewise-core "^1.2.0" + +typewiselite@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/typewiselite/-/typewiselite-1.0.0.tgz" + integrity sha512-J9alhjVHupW3Wfz6qFRGgQw0N3gr8hOkw6zm7FZ6UR1Cse/oD9/JVok7DNE9TT9IbciDHX2Ex9+ksE6cRmtymw== + +typical@^2.6.0, typical@^2.6.1: + version "2.6.1" + resolved "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz" + integrity sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0= + +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + +uglify-js@^3.1.4: + version "3.14.5" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.5.tgz" + integrity sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ== + +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + +umd@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz" + integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow== + +unbox-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + +undeclared-identifiers@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz" + integrity sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw== + dependencies: + acorn-node "^1.3.0" + dash-ast "^1.0.0" + get-assigned-identifiers "^1.2.0" + simple-concat "^1.0.0" + xtend "^4.0.1" + +underscore@1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz" + integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== + +undici@^5.14.0: + version "5.18.0" + resolved "https://registry.npmjs.org/undici/-/undici-5.18.0.tgz" + integrity sha512-1iVwbhonhFytNdg0P4PqyIAXbdlVZVebtPDvuM36m66mRw4OGrCm2MYynJv/UENFLdP13J1nPVQzVE2zTs1OeA== + dependencies: + busboy "^1.6.0" + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unorm@^1.3.3: + version "1.6.0" + resolved "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz" + integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== + +unpipe@~1.0.0, unpipe@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upper-case-first@^1.1.0, upper-case-first@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz" + integrity sha1-XXm+3P8UQZUY/S7bCgUHybaFkRU= + dependencies: + upper-case "^1.1.1" + +upper-case@^1.0.3, upper-case@^1.1.0, upper-case@^1.1.1, upper-case@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz" + integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= + dependencies: + prepend-http "^1.0.1" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.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" + integrity sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk= + +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz" + integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= + +url@^0.11.0, url@~0.11.0: + version "0.11.0" + resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +utf-8-validate@^5.0.2: + version "5.0.7" + resolved "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.7.tgz" + integrity sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q== + dependencies: + node-gyp-build "^4.3.0" + +utf8@^3.0.0, utf8@3.0.0: + version "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.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz" + integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + for-each "^0.3.3" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.1" + +util@^0.12.0, util@~0.12.0: + version "0.12.4" + resolved "https://registry.npmjs.org/util/-/util-0.12.4.tgz" + integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + safe-buffer "^5.1.2" + which-typed-array "^1.1.2" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.npmjs.org/util/-/util-0.10.3.tgz" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +uuid@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz" + integrity sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w= + +uuid@3.3.2: + version "3.3.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +v8-compile-cache-lib@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz" + integrity sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA== + +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +varint@^5.0.0: + version "5.0.2" + resolved "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +web3-bzz@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.11.tgz" + integrity sha512-XGpWUEElGypBjeFyUhTkiPXFbDVD6Nr/S5jznE3t8cWUA0FxRf1n3n/NuIZeb0H9RkN2Ctd/jNma/k8XGa3YKg== dependencies: "@types/node" "^12.12.6" - "got" "9.6.0" - "swarm-js" "^0.1.40" - "underscore" "1.9.1" + got "9.6.0" + swarm-js "^0.1.40" + underscore "1.9.1" -"web3-bzz@1.5.3": - "integrity" "sha512-SlIkAqG0eS6cBS9Q2eBOTI1XFzqh83RqGJWnyrNZMDxUwsTVHL+zNnaPShVPvrWQA1Ub5b0bx1Kc5+qJVxsTJg==" - "resolved" "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.5.3.tgz" - "version" "1.5.3" +web3-bzz@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.5.3.tgz" + integrity sha512-SlIkAqG0eS6cBS9Q2eBOTI1XFzqh83RqGJWnyrNZMDxUwsTVHL+zNnaPShVPvrWQA1Ub5b0bx1Kc5+qJVxsTJg== dependencies: "@types/node" "^12.12.6" - "got" "9.6.0" - "swarm-js" "^0.1.40" + got "9.6.0" + swarm-js "^0.1.40" -"web3-bzz@1.7.4": - "integrity" "sha512-w9zRhyEqTK/yi0LGRHjZMcPCfP24LBjYXI/9YxFw9VqsIZ9/G0CRCnUt12lUx0A56LRAMpF7iQ8eA73aBcO29Q==" - "resolved" "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.7.4.tgz" - "version" "1.7.4" +web3-bzz@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.7.4.tgz" + integrity sha512-w9zRhyEqTK/yi0LGRHjZMcPCfP24LBjYXI/9YxFw9VqsIZ9/G0CRCnUt12lUx0A56LRAMpF7iQ8eA73aBcO29Q== dependencies: "@types/node" "^12.12.6" - "got" "9.6.0" - "swarm-js" "^0.1.40" + got "9.6.0" + swarm-js "^0.1.40" -"web3-core-helpers@1.2.11": - "integrity" "sha512-PEPoAoZd5ME7UfbnCZBdzIerpe74GEvlwT4AjOmHeCVZoIFk7EqvOZDejJHt+feJA6kMVTdd0xzRNN295UhC1A==" - "resolved" "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.11.tgz" - "version" "1.2.11" +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" + integrity sha512-PEPoAoZd5ME7UfbnCZBdzIerpe74GEvlwT4AjOmHeCVZoIFk7EqvOZDejJHt+feJA6kMVTdd0xzRNN295UhC1A== dependencies: - "underscore" "1.9.1" - "web3-eth-iban" "1.2.11" - "web3-utils" "1.2.11" + underscore "1.9.1" + web3-eth-iban "1.2.11" + web3-utils "1.2.11" -"web3-core-helpers@1.5.3": - "integrity" "sha512-Ip1IjB3S8vN7Kf1PPjK41U5gskmMk6IJQlxIVuS8/1U7n/o0jC8krqtpRwiMfAgYyw3TXwBFtxSRTvJtnLyXZw==" - "resolved" "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.5.3.tgz" - "version" "1.5.3" +web3-core-helpers@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.5.3.tgz" + integrity sha512-Ip1IjB3S8vN7Kf1PPjK41U5gskmMk6IJQlxIVuS8/1U7n/o0jC8krqtpRwiMfAgYyw3TXwBFtxSRTvJtnLyXZw== dependencies: - "web3-eth-iban" "1.5.3" - "web3-utils" "1.5.3" + web3-eth-iban "1.5.3" + web3-utils "1.5.3" -"web3-core-helpers@1.7.4": - "integrity" "sha512-F8PH11qIkE/LpK4/h1fF/lGYgt4B6doeMi8rukeV/s4ivseZHHslv1L6aaijLX/g/j4PsFmR42byynBI/MIzFg==" - "resolved" "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.7.4.tgz" - "version" "1.7.4" +web3-core-helpers@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.7.4.tgz" + integrity sha512-F8PH11qIkE/LpK4/h1fF/lGYgt4B6doeMi8rukeV/s4ivseZHHslv1L6aaijLX/g/j4PsFmR42byynBI/MIzFg== dependencies: - "web3-eth-iban" "1.7.4" - "web3-utils" "1.7.4" + web3-eth-iban "1.7.4" + web3-utils "1.7.4" -"web3-core-method@1.2.11": - "integrity" "sha512-ff0q76Cde94HAxLDZ6DbdmKniYCQVtvuaYh+rtOUMB6kssa5FX0q3vPmixi7NPooFnbKmmZCM6NvXg4IreTPIw==" - "resolved" "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.11.tgz" - "version" "1.2.11" +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" + integrity sha512-ff0q76Cde94HAxLDZ6DbdmKniYCQVtvuaYh+rtOUMB6kssa5FX0q3vPmixi7NPooFnbKmmZCM6NvXg4IreTPIw== dependencies: "@ethersproject/transactions" "^5.0.0-beta.135" - "underscore" "1.9.1" - "web3-core-helpers" "1.2.11" - "web3-core-promievent" "1.2.11" - "web3-core-subscriptions" "1.2.11" - "web3-utils" "1.2.11" + underscore "1.9.1" + web3-core-helpers "1.2.11" + web3-core-promievent "1.2.11" + web3-core-subscriptions "1.2.11" + web3-utils "1.2.11" -"web3-core-method@1.5.3": - "integrity" "sha512-8wJrwQ2qD9ibWieF9oHXwrJsUGrv3XAtEkNeyvyNMpktNTIjxJ2jaFGQUuLiyUrMubD18XXgLk4JS6PJU4Loeg==" - "resolved" "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.5.3.tgz" - "version" "1.5.3" +web3-core-method@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.5.3.tgz" + integrity sha512-8wJrwQ2qD9ibWieF9oHXwrJsUGrv3XAtEkNeyvyNMpktNTIjxJ2jaFGQUuLiyUrMubD18XXgLk4JS6PJU4Loeg== dependencies: "@ethereumjs/common" "^2.4.0" "@ethersproject/transactions" "^5.0.0-beta.135" - "web3-core-helpers" "1.5.3" - "web3-core-promievent" "1.5.3" - "web3-core-subscriptions" "1.5.3" - "web3-utils" "1.5.3" + web3-core-helpers "1.5.3" + web3-core-promievent "1.5.3" + web3-core-subscriptions "1.5.3" + web3-utils "1.5.3" -"web3-core-method@1.7.4": - "integrity" "sha512-56K7pq+8lZRkxJyzf5MHQPI9/VL3IJLoy4L/+q8HRdZJ3CkB1DkXYaXGU2PeylG1GosGiSzgIfu1ljqS7CP9xQ==" - "resolved" "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.7.4.tgz" - "version" "1.7.4" +web3-core-method@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.7.4.tgz" + integrity sha512-56K7pq+8lZRkxJyzf5MHQPI9/VL3IJLoy4L/+q8HRdZJ3CkB1DkXYaXGU2PeylG1GosGiSzgIfu1ljqS7CP9xQ== dependencies: "@ethersproject/transactions" "^5.6.2" - "web3-core-helpers" "1.7.4" - "web3-core-promievent" "1.7.4" - "web3-core-subscriptions" "1.7.4" - "web3-utils" "1.7.4" - -"web3-core-promievent@1.2.11": - "integrity" "sha512-il4McoDa/Ox9Agh4kyfQ8Ak/9ABYpnF8poBLL33R/EnxLsJOGQG2nZhkJa3I067hocrPSjEdlPt/0bHXsln4qA==" - "resolved" "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz" - "version" "1.2.11" - dependencies: - "eventemitter3" "4.0.4" - -"web3-core-promievent@1.5.3": - "integrity" "sha512-CFfgqvk3Vk6PIAxtLLuX+pOMozxkKCY+/GdGr7weMh033mDXEPvwyVjoSRO1PqIKj668/hMGQsVoIgbyxkJ9Mg==" - "resolved" "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.5.3.tgz" - "version" "1.5.3" - dependencies: - "eventemitter3" "4.0.4" - -"web3-core-promievent@1.7.4": - "integrity" "sha512-o4uxwXKDldN7ER7VUvDfWsqTx9nQSP1aDssi1XYXeYC2xJbVo0n+z6ryKtmcoWoRdRj7uSpVzal3nEmlr480mA==" - "resolved" "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.7.4.tgz" - "version" "1.7.4" - dependencies: - "eventemitter3" "4.0.4" - -"web3-core-requestmanager@1.2.11": - "integrity" "sha512-oFhBtLfOiIbmfl6T6gYjjj9igOvtyxJ+fjS+byRxiwFJyJ5BQOz4/9/17gWR1Cq74paTlI7vDGxYfuvfE/mKvA==" - "resolved" "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz" - "version" "1.2.11" - dependencies: - "underscore" "1.9.1" - "web3-core-helpers" "1.2.11" - "web3-providers-http" "1.2.11" - "web3-providers-ipc" "1.2.11" - "web3-providers-ws" "1.2.11" - -"web3-core-requestmanager@1.5.3": - "integrity" "sha512-9k/Bze2rs8ONix5IZR+hYdMNQv+ark2Ek2kVcrFgWO+LdLgZui/rn8FikPunjE+ub7x7pJaKCgVRbYFXjo3ZWg==" - "resolved" "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.5.3.tgz" - "version" "1.5.3" - dependencies: - "util" "^0.12.0" - "web3-core-helpers" "1.5.3" - "web3-providers-http" "1.5.3" - "web3-providers-ipc" "1.5.3" - "web3-providers-ws" "1.5.3" - -"web3-core-requestmanager@1.7.4": - "integrity" "sha512-IuXdAm65BQtPL4aI6LZJJOrKAs0SM5IK2Cqo2/lMNvVMT9Kssq6qOk68Uf7EBDH0rPuINi+ReLP+uH+0g3AnPA==" - "resolved" "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.7.4.tgz" - "version" "1.7.4" - dependencies: - "util" "^0.12.0" - "web3-core-helpers" "1.7.4" - "web3-providers-http" "1.7.4" - "web3-providers-ipc" "1.7.4" - "web3-providers-ws" "1.7.4" - -"web3-core-subscriptions@1.2.11": - "integrity" "sha512-qEF/OVqkCvQ7MPs1JylIZCZkin0aKK9lDxpAtQ1F8niEDGFqn7DT8E/vzbIa0GsOjL2fZjDhWJsaW+BSoAW1gg==" - "resolved" "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz" - "version" "1.2.11" - dependencies: - "eventemitter3" "4.0.4" - "underscore" "1.9.1" - "web3-core-helpers" "1.2.11" - -"web3-core-subscriptions@1.5.3": - "integrity" "sha512-L2m9vG1iRN6thvmv/HQwO2YLhOQlmZU8dpLG6GSo9FBN14Uch868Swk0dYVr3rFSYjZ/GETevSXU+O+vhCummA==" - "resolved" "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.5.3.tgz" - "version" "1.5.3" - dependencies: - "eventemitter3" "4.0.4" - "web3-core-helpers" "1.5.3" - -"web3-core-subscriptions@1.7.4": - "integrity" "sha512-VJvKWaXRyxk2nFWumOR94ut9xvjzMrRtS38c4qj8WBIRSsugrZr5lqUwgndtj0qx4F+50JhnU++QEqUEAtKm3g==" - "resolved" "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.7.4.tgz" - "version" "1.7.4" - dependencies: - "eventemitter3" "4.0.4" - "web3-core-helpers" "1.7.4" - -"web3-core@1.2.11": - "integrity" "sha512-CN7MEYOY5ryo5iVleIWRE3a3cZqVaLlIbIzDPsvQRUfzYnvzZQRZBm9Mq+ttDi2STOOzc1MKylspz/o3yq/LjQ==" - "resolved" "https://registry.npmjs.org/web3-core/-/web3-core-1.2.11.tgz" - "version" "1.2.11" + web3-core-helpers "1.7.4" + web3-core-promievent "1.7.4" + web3-core-subscriptions "1.7.4" + web3-utils "1.7.4" + +web3-core-promievent@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz" + integrity sha512-il4McoDa/Ox9Agh4kyfQ8Ak/9ABYpnF8poBLL33R/EnxLsJOGQG2nZhkJa3I067hocrPSjEdlPt/0bHXsln4qA== + dependencies: + eventemitter3 "4.0.4" + +web3-core-promievent@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.5.3.tgz" + integrity sha512-CFfgqvk3Vk6PIAxtLLuX+pOMozxkKCY+/GdGr7weMh033mDXEPvwyVjoSRO1PqIKj668/hMGQsVoIgbyxkJ9Mg== + dependencies: + eventemitter3 "4.0.4" + +web3-core-promievent@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.7.4.tgz" + integrity sha512-o4uxwXKDldN7ER7VUvDfWsqTx9nQSP1aDssi1XYXeYC2xJbVo0n+z6ryKtmcoWoRdRj7uSpVzal3nEmlr480mA== + 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" + integrity sha512-oFhBtLfOiIbmfl6T6gYjjj9igOvtyxJ+fjS+byRxiwFJyJ5BQOz4/9/17gWR1Cq74paTlI7vDGxYfuvfE/mKvA== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.11" + web3-providers-http "1.2.11" + web3-providers-ipc "1.2.11" + web3-providers-ws "1.2.11" + +web3-core-requestmanager@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.5.3.tgz" + integrity sha512-9k/Bze2rs8ONix5IZR+hYdMNQv+ark2Ek2kVcrFgWO+LdLgZui/rn8FikPunjE+ub7x7pJaKCgVRbYFXjo3ZWg== + dependencies: + util "^0.12.0" + web3-core-helpers "1.5.3" + web3-providers-http "1.5.3" + web3-providers-ipc "1.5.3" + web3-providers-ws "1.5.3" + +web3-core-requestmanager@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.7.4.tgz" + integrity sha512-IuXdAm65BQtPL4aI6LZJJOrKAs0SM5IK2Cqo2/lMNvVMT9Kssq6qOk68Uf7EBDH0rPuINi+ReLP+uH+0g3AnPA== + dependencies: + util "^0.12.0" + web3-core-helpers "1.7.4" + web3-providers-http "1.7.4" + web3-providers-ipc "1.7.4" + web3-providers-ws "1.7.4" + +web3-core-subscriptions@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz" + integrity sha512-qEF/OVqkCvQ7MPs1JylIZCZkin0aKK9lDxpAtQ1F8niEDGFqn7DT8E/vzbIa0GsOjL2fZjDhWJsaW+BSoAW1gg== + dependencies: + eventemitter3 "4.0.4" + underscore "1.9.1" + web3-core-helpers "1.2.11" + +web3-core-subscriptions@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.5.3.tgz" + integrity sha512-L2m9vG1iRN6thvmv/HQwO2YLhOQlmZU8dpLG6GSo9FBN14Uch868Swk0dYVr3rFSYjZ/GETevSXU+O+vhCummA== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.5.3" + +web3-core-subscriptions@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.7.4.tgz" + integrity sha512-VJvKWaXRyxk2nFWumOR94ut9xvjzMrRtS38c4qj8WBIRSsugrZr5lqUwgndtj0qx4F+50JhnU++QEqUEAtKm3g== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.7.4" + +web3-core@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-core/-/web3-core-1.2.11.tgz" + integrity sha512-CN7MEYOY5ryo5iVleIWRE3a3cZqVaLlIbIzDPsvQRUfzYnvzZQRZBm9Mq+ttDi2STOOzc1MKylspz/o3yq/LjQ== dependencies: "@types/bn.js" "^4.11.5" "@types/node" "^12.12.6" - "bignumber.js" "^9.0.0" - "web3-core-helpers" "1.2.11" - "web3-core-method" "1.2.11" - "web3-core-requestmanager" "1.2.11" - "web3-utils" "1.2.11" + bignumber.js "^9.0.0" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-core-requestmanager "1.2.11" + web3-utils "1.2.11" -"web3-core@1.5.3": - "integrity" "sha512-ACTbu8COCu+0eUNmd9pG7Q9EVsNkAg2w3Y7SqhDr+zjTgbSHZV01jXKlapm9z+G3AN/BziV3zGwudClJ4u4xXQ==" - "resolved" "https://registry.npmjs.org/web3-core/-/web3-core-1.5.3.tgz" - "version" "1.5.3" +web3-core@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3-core/-/web3-core-1.5.3.tgz" + integrity sha512-ACTbu8COCu+0eUNmd9pG7Q9EVsNkAg2w3Y7SqhDr+zjTgbSHZV01jXKlapm9z+G3AN/BziV3zGwudClJ4u4xXQ== dependencies: "@types/bn.js" "^4.11.5" "@types/node" "^12.12.6" - "bignumber.js" "^9.0.0" - "web3-core-helpers" "1.5.3" - "web3-core-method" "1.5.3" - "web3-core-requestmanager" "1.5.3" - "web3-utils" "1.5.3" + bignumber.js "^9.0.0" + web3-core-helpers "1.5.3" + web3-core-method "1.5.3" + web3-core-requestmanager "1.5.3" + web3-utils "1.5.3" -"web3-core@1.7.4": - "integrity" "sha512-L0DCPlIh9bgIED37tYbe7bsWrddoXYc897ANGvTJ6MFkSNGiMwDkTLWSgYd9Mf8qu8b4iuPqXZHMwIo4atoh7Q==" - "resolved" "https://registry.npmjs.org/web3-core/-/web3-core-1.7.4.tgz" - "version" "1.7.4" +web3-core@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3-core/-/web3-core-1.7.4.tgz" + integrity sha512-L0DCPlIh9bgIED37tYbe7bsWrddoXYc897ANGvTJ6MFkSNGiMwDkTLWSgYd9Mf8qu8b4iuPqXZHMwIo4atoh7Q== dependencies: "@types/bn.js" "^5.1.0" "@types/node" "^12.12.6" - "bignumber.js" "^9.0.0" - "web3-core-helpers" "1.7.4" - "web3-core-method" "1.7.4" - "web3-core-requestmanager" "1.7.4" - "web3-utils" "1.7.4" + bignumber.js "^9.0.0" + web3-core-helpers "1.7.4" + web3-core-method "1.7.4" + web3-core-requestmanager "1.7.4" + web3-utils "1.7.4" -"web3-eth-abi@1.2.11": - "integrity" "sha512-PkRYc0+MjuLSgg03QVWqWlQivJqRwKItKtEpRUaxUAeLE7i/uU39gmzm2keHGcQXo3POXAbOnMqkDvOep89Crg==" - "resolved" "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz" - "version" "1.2.11" +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" + integrity sha512-PkRYc0+MjuLSgg03QVWqWlQivJqRwKItKtEpRUaxUAeLE7i/uU39gmzm2keHGcQXo3POXAbOnMqkDvOep89Crg== dependencies: "@ethersproject/abi" "5.0.0-beta.153" - "underscore" "1.9.1" - "web3-utils" "1.2.11" + underscore "1.9.1" + web3-utils "1.2.11" -"web3-eth-abi@1.5.3": - "integrity" "sha512-i/qhuFsoNrnV130CSRYX/z4SlCfSQ4mHntti5yTmmQpt70xZKYZ57BsU0R29ueSQ9/P+aQrL2t2rqkQkAloUxg==" - "resolved" "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.5.3.tgz" - "version" "1.5.3" +web3-eth-abi@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.5.3.tgz" + integrity sha512-i/qhuFsoNrnV130CSRYX/z4SlCfSQ4mHntti5yTmmQpt70xZKYZ57BsU0R29ueSQ9/P+aQrL2t2rqkQkAloUxg== dependencies: "@ethersproject/abi" "5.0.7" - "web3-utils" "1.5.3" + web3-utils "1.5.3" -"web3-eth-abi@1.7.4": - "integrity" "sha512-eMZr8zgTbqyL9MCTCAvb67RbVyN5ZX7DvA0jbLOqRWCiw+KlJKTGnymKO6jPE8n5yjk4w01e165Qb11hTDwHgg==" - "resolved" "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.7.4.tgz" - "version" "1.7.4" +web3-eth-abi@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.7.4.tgz" + integrity sha512-eMZr8zgTbqyL9MCTCAvb67RbVyN5ZX7DvA0jbLOqRWCiw+KlJKTGnymKO6jPE8n5yjk4w01e165Qb11hTDwHgg== dependencies: "@ethersproject/abi" "^5.6.3" - "web3-utils" "1.7.4" - -"web3-eth-accounts@1.2.11": - "integrity" "sha512-6FwPqEpCfKIh3nSSGeo3uBm2iFSnFJDfwL3oS9pyegRBXNsGRVpgiW63yhNzL0796StsvjHWwQnQHsZNxWAkGw==" - "resolved" "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz" - "version" "1.2.11" - dependencies: - "crypto-browserify" "3.12.0" - "eth-lib" "0.2.8" - "ethereumjs-common" "^1.3.2" - "ethereumjs-tx" "^2.1.1" - "scrypt-js" "^3.0.1" - "underscore" "1.9.1" - "uuid" "3.3.2" - "web3-core" "1.2.11" - "web3-core-helpers" "1.2.11" - "web3-core-method" "1.2.11" - "web3-utils" "1.2.11" - -"web3-eth-accounts@1.5.3": - "integrity" "sha512-pdGhXgeBaEJENMvRT6W9cmji3Zz/46ugFSvmnLLw79qi5EH7XJhKISNVb41eWCrs4am5GhI67GLx5d2s2a72iw==" - "resolved" "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.5.3.tgz" - "version" "1.5.3" + web3-utils "1.7.4" + +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" + integrity sha512-6FwPqEpCfKIh3nSSGeo3uBm2iFSnFJDfwL3oS9pyegRBXNsGRVpgiW63yhNzL0796StsvjHWwQnQHsZNxWAkGw== + dependencies: + crypto-browserify "3.12.0" + eth-lib "0.2.8" + ethereumjs-common "^1.3.2" + ethereumjs-tx "^2.1.1" + scrypt-js "^3.0.1" + underscore "1.9.1" + uuid "3.3.2" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-utils "1.2.11" + +web3-eth-accounts@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.5.3.tgz" + integrity sha512-pdGhXgeBaEJENMvRT6W9cmji3Zz/46ugFSvmnLLw79qi5EH7XJhKISNVb41eWCrs4am5GhI67GLx5d2s2a72iw== dependencies: "@ethereumjs/common" "^2.3.0" "@ethereumjs/tx" "^3.2.1" - "crypto-browserify" "3.12.0" - "eth-lib" "0.2.8" - "ethereumjs-util" "^7.0.10" - "scrypt-js" "^3.0.1" - "uuid" "3.3.2" - "web3-core" "1.5.3" - "web3-core-helpers" "1.5.3" - "web3-core-method" "1.5.3" - "web3-utils" "1.5.3" - -"web3-eth-accounts@1.7.4": - "integrity" "sha512-Y9vYLRKP7VU7Cgq6wG1jFaG2k3/eIuiTKAG8RAuQnb6Cd9k5BRqTm5uPIiSo0AP/u11jDomZ8j7+WEgkU9+Btw==" - "resolved" "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.7.4.tgz" - "version" "1.7.4" + crypto-browserify "3.12.0" + eth-lib "0.2.8" + ethereumjs-util "^7.0.10" + scrypt-js "^3.0.1" + uuid "3.3.2" + web3-core "1.5.3" + web3-core-helpers "1.5.3" + web3-core-method "1.5.3" + web3-utils "1.5.3" + +web3-eth-accounts@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.7.4.tgz" + integrity sha512-Y9vYLRKP7VU7Cgq6wG1jFaG2k3/eIuiTKAG8RAuQnb6Cd9k5BRqTm5uPIiSo0AP/u11jDomZ8j7+WEgkU9+Btw== dependencies: "@ethereumjs/common" "^2.5.0" "@ethereumjs/tx" "^3.3.2" - "crypto-browserify" "3.12.0" - "eth-lib" "0.2.8" - "ethereumjs-util" "^7.0.10" - "scrypt-js" "^3.0.1" - "uuid" "3.3.2" - "web3-core" "1.7.4" - "web3-core-helpers" "1.7.4" - "web3-core-method" "1.7.4" - "web3-utils" "1.7.4" - -"web3-eth-contract@1.2.11": - "integrity" "sha512-MzYuI/Rq2o6gn7vCGcnQgco63isPNK5lMAan2E51AJLknjSLnOxwNY3gM8BcKoy4Z+v5Dv00a03Xuk78JowFow==" - "resolved" "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.11.tgz" - "version" "1.2.11" + crypto-browserify "3.12.0" + eth-lib "0.2.8" + ethereumjs-util "^7.0.10" + scrypt-js "^3.0.1" + uuid "3.3.2" + web3-core "1.7.4" + web3-core-helpers "1.7.4" + web3-core-method "1.7.4" + web3-utils "1.7.4" + +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" + integrity sha512-MzYuI/Rq2o6gn7vCGcnQgco63isPNK5lMAan2E51AJLknjSLnOxwNY3gM8BcKoy4Z+v5Dv00a03Xuk78JowFow== dependencies: "@types/bn.js" "^4.11.5" - "underscore" "1.9.1" - "web3-core" "1.2.11" - "web3-core-helpers" "1.2.11" - "web3-core-method" "1.2.11" - "web3-core-promievent" "1.2.11" - "web3-core-subscriptions" "1.2.11" - "web3-eth-abi" "1.2.11" - "web3-utils" "1.2.11" - -"web3-eth-contract@1.5.3": - "integrity" "sha512-Gdlt1L6cdHe83k7SdV6xhqCytVtOZkjD0kY/15x441AuuJ4JLubCHuqu69k2Dr3tWifHYVys/vG8QE/W16syGg==" - "resolved" "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.5.3.tgz" - "version" "1.5.3" + underscore "1.9.1" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-core-promievent "1.2.11" + web3-core-subscriptions "1.2.11" + web3-eth-abi "1.2.11" + web3-utils "1.2.11" + +web3-eth-contract@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.5.3.tgz" + integrity sha512-Gdlt1L6cdHe83k7SdV6xhqCytVtOZkjD0kY/15x441AuuJ4JLubCHuqu69k2Dr3tWifHYVys/vG8QE/W16syGg== dependencies: "@types/bn.js" "^4.11.5" - "web3-core" "1.5.3" - "web3-core-helpers" "1.5.3" - "web3-core-method" "1.5.3" - "web3-core-promievent" "1.5.3" - "web3-core-subscriptions" "1.5.3" - "web3-eth-abi" "1.5.3" - "web3-utils" "1.5.3" - -"web3-eth-contract@1.7.4": - "integrity" "sha512-ZgSZMDVI1pE9uMQpK0T0HDT2oewHcfTCv0osEqf5qyn5KrcQDg1GT96/+S0dfqZ4HKj4lzS5O0rFyQiLPQ8LzQ==" - "resolved" "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.7.4.tgz" - "version" "1.7.4" + web3-core "1.5.3" + web3-core-helpers "1.5.3" + web3-core-method "1.5.3" + web3-core-promievent "1.5.3" + web3-core-subscriptions "1.5.3" + web3-eth-abi "1.5.3" + web3-utils "1.5.3" + +web3-eth-contract@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.7.4.tgz" + integrity sha512-ZgSZMDVI1pE9uMQpK0T0HDT2oewHcfTCv0osEqf5qyn5KrcQDg1GT96/+S0dfqZ4HKj4lzS5O0rFyQiLPQ8LzQ== dependencies: "@types/bn.js" "^5.1.0" - "web3-core" "1.7.4" - "web3-core-helpers" "1.7.4" - "web3-core-method" "1.7.4" - "web3-core-promievent" "1.7.4" - "web3-core-subscriptions" "1.7.4" - "web3-eth-abi" "1.7.4" - "web3-utils" "1.7.4" - -"web3-eth-ens@1.2.11": - "integrity" "sha512-dbW7dXP6HqT1EAPvnniZVnmw6TmQEKF6/1KgAxbo8iBBYrVTMDGFQUUnZ+C4VETGrwwaqtX4L9d/FrQhZ6SUiA==" - "resolved" "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz" - "version" "1.2.11" - dependencies: - "content-hash" "^2.5.2" - "eth-ens-namehash" "2.0.8" - "underscore" "1.9.1" - "web3-core" "1.2.11" - "web3-core-helpers" "1.2.11" - "web3-core-promievent" "1.2.11" - "web3-eth-abi" "1.2.11" - "web3-eth-contract" "1.2.11" - "web3-utils" "1.2.11" - -"web3-eth-ens@1.5.3": - "integrity" "sha512-QmGFFtTGElg0E+3xfCIFhiUF+1imFi9eg/cdsRMUZU4F1+MZCC/ee+IAelYLfNTGsEslCqfAusliKOT9DdGGnw==" - "resolved" "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.5.3.tgz" - "version" "1.5.3" - dependencies: - "content-hash" "^2.5.2" - "eth-ens-namehash" "2.0.8" - "web3-core" "1.5.3" - "web3-core-helpers" "1.5.3" - "web3-core-promievent" "1.5.3" - "web3-eth-abi" "1.5.3" - "web3-eth-contract" "1.5.3" - "web3-utils" "1.5.3" - -"web3-eth-ens@1.7.4": - "integrity" "sha512-Gw5CVU1+bFXP5RVXTCqJOmHn71X2ghNk9VcEH+9PchLr0PrKbHTA3hySpsPco1WJAyK4t8SNQVlNr3+bJ6/WZA==" - "resolved" "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.7.4.tgz" - "version" "1.7.4" - dependencies: - "content-hash" "^2.5.2" - "eth-ens-namehash" "2.0.8" - "web3-core" "1.7.4" - "web3-core-helpers" "1.7.4" - "web3-core-promievent" "1.7.4" - "web3-eth-abi" "1.7.4" - "web3-eth-contract" "1.7.4" - "web3-utils" "1.7.4" - -"web3-eth-iban@1.2.11": - "integrity" "sha512-ozuVlZ5jwFC2hJY4+fH9pIcuH1xP0HEFhtWsR69u9uDIANHLPQQtWYmdj7xQ3p2YT4bQLq/axKhZi7EZVetmxQ==" - "resolved" "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz" - "version" "1.2.11" - dependencies: - "bn.js" "^4.11.9" - "web3-utils" "1.2.11" - -"web3-eth-iban@1.5.3": - "integrity" "sha512-vMzmGqolYZvRHwP9P4Nf6G8uYM5aTLlQu2a34vz78p0KlDC+eV1th3+90Qeaupa28EG7OO0IT1F0BejiIauOPw==" - "resolved" "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.5.3.tgz" - "version" "1.5.3" - dependencies: - "bn.js" "^4.11.9" - "web3-utils" "1.5.3" - -"web3-eth-iban@1.7.4": - "integrity" "sha512-XyrsgWlZQMv5gRcjXMsNvAoCRvV5wN7YCfFV5+tHUCqN8g9T/o4XUS20vDWD0k4HNiAcWGFqT1nrls02MGZ08w==" - "resolved" "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.7.4.tgz" - "version" "1.7.4" - dependencies: - "bn.js" "^5.2.1" - "web3-utils" "1.7.4" - -"web3-eth-personal@1.2.11": - "integrity" "sha512-42IzUtKq9iHZ8K9VN0vAI50iSU9tOA1V7XU2BhF/tb7We2iKBVdkley2fg26TxlOcKNEHm7o6HRtiiFsVK4Ifw==" - "resolved" "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz" - "version" "1.2.11" + web3-core "1.7.4" + web3-core-helpers "1.7.4" + web3-core-method "1.7.4" + web3-core-promievent "1.7.4" + web3-core-subscriptions "1.7.4" + web3-eth-abi "1.7.4" + web3-utils "1.7.4" + +web3-eth-ens@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz" + integrity sha512-dbW7dXP6HqT1EAPvnniZVnmw6TmQEKF6/1KgAxbo8iBBYrVTMDGFQUUnZ+C4VETGrwwaqtX4L9d/FrQhZ6SUiA== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + underscore "1.9.1" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-promievent "1.2.11" + web3-eth-abi "1.2.11" + web3-eth-contract "1.2.11" + web3-utils "1.2.11" + +web3-eth-ens@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.5.3.tgz" + integrity sha512-QmGFFtTGElg0E+3xfCIFhiUF+1imFi9eg/cdsRMUZU4F1+MZCC/ee+IAelYLfNTGsEslCqfAusliKOT9DdGGnw== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + web3-core "1.5.3" + web3-core-helpers "1.5.3" + web3-core-promievent "1.5.3" + web3-eth-abi "1.5.3" + web3-eth-contract "1.5.3" + web3-utils "1.5.3" + +web3-eth-ens@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.7.4.tgz" + integrity sha512-Gw5CVU1+bFXP5RVXTCqJOmHn71X2ghNk9VcEH+9PchLr0PrKbHTA3hySpsPco1WJAyK4t8SNQVlNr3+bJ6/WZA== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + web3-core "1.7.4" + web3-core-helpers "1.7.4" + web3-core-promievent "1.7.4" + web3-eth-abi "1.7.4" + web3-eth-contract "1.7.4" + web3-utils "1.7.4" + +web3-eth-iban@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz" + integrity sha512-ozuVlZ5jwFC2hJY4+fH9pIcuH1xP0HEFhtWsR69u9uDIANHLPQQtWYmdj7xQ3p2YT4bQLq/axKhZi7EZVetmxQ== + dependencies: + bn.js "^4.11.9" + web3-utils "1.2.11" + +web3-eth-iban@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.5.3.tgz" + integrity sha512-vMzmGqolYZvRHwP9P4Nf6G8uYM5aTLlQu2a34vz78p0KlDC+eV1th3+90Qeaupa28EG7OO0IT1F0BejiIauOPw== + dependencies: + bn.js "^4.11.9" + web3-utils "1.5.3" + +web3-eth-iban@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.7.4.tgz" + integrity sha512-XyrsgWlZQMv5gRcjXMsNvAoCRvV5wN7YCfFV5+tHUCqN8g9T/o4XUS20vDWD0k4HNiAcWGFqT1nrls02MGZ08w== + dependencies: + bn.js "^5.2.1" + web3-utils "1.7.4" + +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" + integrity sha512-42IzUtKq9iHZ8K9VN0vAI50iSU9tOA1V7XU2BhF/tb7We2iKBVdkley2fg26TxlOcKNEHm7o6HRtiiFsVK4Ifw== dependencies: "@types/node" "^12.12.6" - "web3-core" "1.2.11" - "web3-core-helpers" "1.2.11" - "web3-core-method" "1.2.11" - "web3-net" "1.2.11" - "web3-utils" "1.2.11" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-net "1.2.11" + web3-utils "1.2.11" -"web3-eth-personal@1.5.3": - "integrity" "sha512-JzibJafR7ak/Icas8uvos3BmUNrZw1vShuNR5Cxjo+vteOC8XMqz1Vr7RH65B4bmlfb3bm9xLxetUHO894+Sew==" - "resolved" "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.5.3.tgz" - "version" "1.5.3" +web3-eth-personal@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.5.3.tgz" + integrity sha512-JzibJafR7ak/Icas8uvos3BmUNrZw1vShuNR5Cxjo+vteOC8XMqz1Vr7RH65B4bmlfb3bm9xLxetUHO894+Sew== dependencies: "@types/node" "^12.12.6" - "web3-core" "1.5.3" - "web3-core-helpers" "1.5.3" - "web3-core-method" "1.5.3" - "web3-net" "1.5.3" - "web3-utils" "1.5.3" + web3-core "1.5.3" + web3-core-helpers "1.5.3" + web3-core-method "1.5.3" + web3-net "1.5.3" + web3-utils "1.5.3" -"web3-eth-personal@1.7.4": - "integrity" "sha512-O10C1Hln5wvLQsDhlhmV58RhXo+GPZ5+W76frSsyIrkJWLtYQTCr5WxHtRC9sMD1idXLqODKKgI2DL+7xeZ0/g==" - "resolved" "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.7.4.tgz" - "version" "1.7.4" +web3-eth-personal@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.7.4.tgz" + integrity sha512-O10C1Hln5wvLQsDhlhmV58RhXo+GPZ5+W76frSsyIrkJWLtYQTCr5WxHtRC9sMD1idXLqODKKgI2DL+7xeZ0/g== dependencies: "@types/node" "^12.12.6" - "web3-core" "1.7.4" - "web3-core-helpers" "1.7.4" - "web3-core-method" "1.7.4" - "web3-net" "1.7.4" - "web3-utils" "1.7.4" - -"web3-eth@1.2.11": - "integrity" "sha512-REvxW1wJ58AgHPcXPJOL49d1K/dPmuw4LjPLBPStOVkQjzDTVmJEIsiLwn2YeuNDd4pfakBwT8L3bz1G1/wVsQ==" - "resolved" "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.11.tgz" - "version" "1.2.11" - dependencies: - "underscore" "1.9.1" - "web3-core" "1.2.11" - "web3-core-helpers" "1.2.11" - "web3-core-method" "1.2.11" - "web3-core-subscriptions" "1.2.11" - "web3-eth-abi" "1.2.11" - "web3-eth-accounts" "1.2.11" - "web3-eth-contract" "1.2.11" - "web3-eth-ens" "1.2.11" - "web3-eth-iban" "1.2.11" - "web3-eth-personal" "1.2.11" - "web3-net" "1.2.11" - "web3-utils" "1.2.11" - -"web3-eth@1.5.3": - "integrity" "sha512-saFurA1L23Bd7MEf7cBli6/jRdMhD4X/NaMiO2mdMMCXlPujoudlIJf+VWpRWJpsbDFdu7XJ2WHkmBYT5R3p1Q==" - "resolved" "https://registry.npmjs.org/web3-eth/-/web3-eth-1.5.3.tgz" - "version" "1.5.3" - dependencies: - "web3-core" "1.5.3" - "web3-core-helpers" "1.5.3" - "web3-core-method" "1.5.3" - "web3-core-subscriptions" "1.5.3" - "web3-eth-abi" "1.5.3" - "web3-eth-accounts" "1.5.3" - "web3-eth-contract" "1.5.3" - "web3-eth-ens" "1.5.3" - "web3-eth-iban" "1.5.3" - "web3-eth-personal" "1.5.3" - "web3-net" "1.5.3" - "web3-utils" "1.5.3" - -"web3-eth@1.7.4": - "integrity" "sha512-JG0tTMv0Ijj039emXNHi07jLb0OiWSA9O24MRSk5vToTQyDNXihdF2oyq85LfHuF690lXZaAXrjhtLNlYqb7Ug==" - "resolved" "https://registry.npmjs.org/web3-eth/-/web3-eth-1.7.4.tgz" - "version" "1.7.4" - dependencies: - "web3-core" "1.7.4" - "web3-core-helpers" "1.7.4" - "web3-core-method" "1.7.4" - "web3-core-subscriptions" "1.7.4" - "web3-eth-abi" "1.7.4" - "web3-eth-accounts" "1.7.4" - "web3-eth-contract" "1.7.4" - "web3-eth-ens" "1.7.4" - "web3-eth-iban" "1.7.4" - "web3-eth-personal" "1.7.4" - "web3-net" "1.7.4" - "web3-utils" "1.7.4" - -"web3-net@1.2.11": - "integrity" "sha512-sjrSDj0pTfZouR5BSTItCuZ5K/oZPVdVciPQ6981PPPIwJJkCMeVjD7I4zO3qDPCnBjBSbWvVnLdwqUBPtHxyg==" - "resolved" "https://registry.npmjs.org/web3-net/-/web3-net-1.2.11.tgz" - "version" "1.2.11" - dependencies: - "web3-core" "1.2.11" - "web3-core-method" "1.2.11" - "web3-utils" "1.2.11" - -"web3-net@1.5.3": - "integrity" "sha512-0W/xHIPvgVXPSdLu0iZYnpcrgNnhzHMC888uMlGP5+qMCt8VuflUZHy7tYXae9Mzsg1kxaJAS5lHVNyeNw4CoQ==" - "resolved" "https://registry.npmjs.org/web3-net/-/web3-net-1.5.3.tgz" - "version" "1.5.3" - dependencies: - "web3-core" "1.5.3" - "web3-core-method" "1.5.3" - "web3-utils" "1.5.3" - -"web3-net@1.7.4": - "integrity" "sha512-d2Gj+DIARHvwIdmxFQ4PwAAXZVxYCR2lET0cxz4KXbE5Og3DNjJi+MoPkX+WqoUXqimu/EOd4Cd+7gefqVAFDg==" - "resolved" "https://registry.npmjs.org/web3-net/-/web3-net-1.7.4.tgz" - "version" "1.7.4" - dependencies: - "web3-core" "1.7.4" - "web3-core-method" "1.7.4" - "web3-utils" "1.7.4" - -"web3-provider-engine@14.2.1": - "integrity" "sha512-iSv31h2qXkr9vrL6UZDm4leZMc32SjWJFGOp/D92JXfcEboCqraZyuExDkpxKw8ziTufXieNM7LSXNHzszYdJw==" - "resolved" "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-14.2.1.tgz" - "version" "14.2.1" - dependencies: - "async" "^2.5.0" - "backoff" "^2.5.0" - "clone" "^2.0.0" - "cross-fetch" "^2.1.0" - "eth-block-tracker" "^3.0.0" - "eth-json-rpc-infura" "^3.1.0" - "eth-sig-util" "3.0.0" - "ethereumjs-block" "^1.2.2" - "ethereumjs-tx" "^1.2.0" - "ethereumjs-util" "^5.1.5" - "ethereumjs-vm" "^2.3.4" - "json-rpc-error" "^2.0.0" - "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": - "integrity" "sha512-psh4hYGb1+ijWywfwpB2cvvOIMISlR44F/rJtYkRmQ5jMvG4FOCPlQJPiHQZo+2cc3HbktvvSJzIhkWQJdmvrA==" - "resolved" "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.11.tgz" - "version" "1.2.11" - dependencies: - "web3-core-helpers" "1.2.11" - "xhr2-cookies" "1.1.0" - -"web3-providers-http@1.5.3": - "integrity" "sha512-5DpUyWGHtDAr2RYmBu34Fu+4gJuBAuNx2POeiJIooUtJ+Mu6pIx4XkONWH6V+Ez87tZAVAsFOkJRTYuzMr3rPw==" - "resolved" "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.5.3.tgz" - "version" "1.5.3" - dependencies: - "web3-core-helpers" "1.5.3" - "xhr2-cookies" "1.1.0" - -"web3-providers-http@1.7.4": - "integrity" "sha512-AU+/S+49rcogUER99TlhW+UBMk0N2DxvN54CJ2pK7alc2TQ7+cprNPLHJu4KREe8ndV0fT6JtWUfOMyTvl+FRA==" - "resolved" "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.7.4.tgz" - "version" "1.7.4" - dependencies: - "web3-core-helpers" "1.7.4" - "xhr2-cookies" "1.1.0" - -"web3-providers-ipc@1.2.11": - "integrity" "sha512-yhc7Y/k8hBV/KlELxynWjJDzmgDEDjIjBzXK+e0rHBsYEhdCNdIH5Psa456c+l0qTEU2YzycF8VAjYpWfPnBpQ==" - "resolved" "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz" - "version" "1.2.11" - dependencies: - "oboe" "2.1.4" - "underscore" "1.9.1" - "web3-core-helpers" "1.2.11" - -"web3-providers-ipc@1.5.3": - "integrity" "sha512-JmeAptugVpmXI39LGxUSAymx0NOFdgpuI1hGQfIhbEAcd4sv7fhfd5D+ZU4oLHbRI8IFr4qfGU0uhR8BXhDzlg==" - "resolved" "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.5.3.tgz" - "version" "1.5.3" - dependencies: - "oboe" "2.1.5" - "web3-core-helpers" "1.5.3" - -"web3-providers-ipc@1.7.4": - "integrity" "sha512-jhArOZ235dZy8fS8090t60nTxbd1ap92ibQw5xIrAQ9m7LcZKNfmLAQUVsD+3dTFvadRMi6z1vCO7zRi84gWHw==" - "resolved" "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.7.4.tgz" - "version" "1.7.4" - dependencies: - "oboe" "2.1.5" - "web3-core-helpers" "1.7.4" - -"web3-providers-ws@1.2.11": - "integrity" "sha512-ZxnjIY1Er8Ty+cE4migzr43zA/+72AF1myzsLaU5eVgdsfV7Jqx7Dix1hbevNZDKFlSoEyq/3j/jYalh3So1Zg==" - "resolved" "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz" - "version" "1.2.11" - dependencies: - "eventemitter3" "4.0.4" - "underscore" "1.9.1" - "web3-core-helpers" "1.2.11" - "websocket" "^1.0.31" - -"web3-providers-ws@1.5.3": - "integrity" "sha512-6DhTw4Q7nm5CFYEUHOJM0gAb3xFx+9gWpVveg3YxJ/ybR1BUvEWo3bLgIJJtX56cYX0WyY6DS35a7f0LOI1kVg==" - "resolved" "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.5.3.tgz" - "version" "1.5.3" - dependencies: - "eventemitter3" "4.0.4" - "web3-core-helpers" "1.5.3" - "websocket" "^1.0.32" - -"web3-providers-ws@1.7.4": - "integrity" "sha512-g72X77nrcHMFU8hRzQJzfgi/072n8dHwRCoTw+WQrGp+XCQ71fsk2qIu3Tp+nlp5BPn8bRudQbPblVm2uT4myQ==" - "resolved" "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.7.4.tgz" - "version" "1.7.4" - dependencies: - "eventemitter3" "4.0.4" - "web3-core-helpers" "1.7.4" - "websocket" "^1.0.32" - -"web3-shh@1.2.11": - "integrity" "sha512-B3OrO3oG1L+bv3E1sTwCx66injW1A8hhwpknDUbV+sw3fehFazA06z9SGXUefuFI1kVs4q2vRi0n4oCcI4dZDg==" - "resolved" "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.11.tgz" - "version" "1.2.11" - dependencies: - "web3-core" "1.2.11" - "web3-core-method" "1.2.11" - "web3-core-subscriptions" "1.2.11" - "web3-net" "1.2.11" - -"web3-shh@1.5.3": - "integrity" "sha512-COfEXfsqoV/BkcsNLRxQqnWc1Teb8/9GxdGag5GtPC5gQC/vsN+7hYVJUwNxY9LtJPKYTij2DHHnx6UkITng+Q==" - "resolved" "https://registry.npmjs.org/web3-shh/-/web3-shh-1.5.3.tgz" - "version" "1.5.3" - dependencies: - "web3-core" "1.5.3" - "web3-core-method" "1.5.3" - "web3-core-subscriptions" "1.5.3" - "web3-net" "1.5.3" - -"web3-shh@1.7.4": - "integrity" "sha512-mlSZxSYcMkuMCxqhTYnZkUdahZ11h+bBv/8TlkXp/IHpEe4/Gg+KAbmfudakq3EzG/04z70XQmPgWcUPrsEJ+A==" - "resolved" "https://registry.npmjs.org/web3-shh/-/web3-shh-1.7.4.tgz" - "version" "1.7.4" - dependencies: - "web3-core" "1.7.4" - "web3-core-method" "1.7.4" - "web3-core-subscriptions" "1.7.4" - "web3-net" "1.7.4" - -"web3-utils@^1.0.0-beta.31", "web3-utils@^1.2.5", "web3-utils@^1.3.0", "web3-utils@^1.3.4", "web3-utils@^1.5.1", "web3-utils@1.7.4": - "integrity" "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==" - "resolved" "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz" - "version" "1.7.4" - 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-utils@1.2.11": - "integrity" "sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ==" - "resolved" "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.11.tgz" - "version" "1.2.11" - dependencies: - "bn.js" "^4.11.9" - "eth-lib" "0.2.8" - "ethereum-bloom-filters" "^1.0.6" - "ethjs-unit" "0.1.6" - "number-to-bn" "1.7.0" - "randombytes" "^2.1.0" - "underscore" "1.9.1" - "utf8" "3.0.0" - -"web3-utils@1.5.3": - "integrity" "sha512-56nRgA+Ad9SEyCv39g36rTcr5fpsd4L9LgV3FK0aB66nAMazLAA6Qz4lH5XrUKPDyBIPGJIR+kJsyRtwcu2q1Q==" - "resolved" "https://registry.npmjs.org/web3-utils/-/web3-utils-1.5.3.tgz" - "version" "1.5.3" - dependencies: - "bn.js" "^4.11.9" - "eth-lib" "0.2.8" - "ethereum-bloom-filters" "^1.0.6" - "ethjs-unit" "0.1.6" - "number-to-bn" "1.7.0" - "randombytes" "^2.1.0" - "utf8" "3.0.0" - -"web3@^1.0.0-beta.36", "web3@^1.2.5", "web3@^1.3.5", "web3@1.7.4": - "integrity" "sha512-iFGK5jO32vnXM/ASaJBaI0+gVR6uHozvYdxkdhaeOCD6HIQ4iIXadbO2atVpE9oc/H8l2MovJ4LtPhG7lIBN8A==" - "resolved" "https://registry.npmjs.org/web3/-/web3-1.7.4.tgz" - "version" "1.7.4" - dependencies: - "web3-bzz" "1.7.4" - "web3-core" "1.7.4" - "web3-eth" "1.7.4" - "web3-eth-personal" "1.7.4" - "web3-net" "1.7.4" - "web3-shh" "1.7.4" - "web3-utils" "1.7.4" - -"web3@1.2.11": - "integrity" "sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ==" - "resolved" "https://registry.npmjs.org/web3/-/web3-1.2.11.tgz" - "version" "1.2.11" - dependencies: - "web3-bzz" "1.2.11" - "web3-core" "1.2.11" - "web3-eth" "1.2.11" - "web3-eth-personal" "1.2.11" - "web3-net" "1.2.11" - "web3-shh" "1.2.11" - "web3-utils" "1.2.11" - -"web3@1.5.3": - "integrity" "sha512-eyBg/1K44flfv0hPjXfKvNwcUfIVDI4NX48qHQe6wd7C8nPSdbWqo9vLy6ksZIt9NLa90HjI8HsGYgnMSUxn6w==" - "resolved" "https://registry.npmjs.org/web3/-/web3-1.5.3.tgz" - "version" "1.5.3" - dependencies: - "web3-bzz" "1.5.3" - "web3-core" "1.5.3" - "web3-eth" "1.5.3" - "web3-eth-personal" "1.5.3" - "web3-net" "1.5.3" - "web3-shh" "1.5.3" - "web3-utils" "1.5.3" - -"webidl-conversions@^3.0.0": - "integrity" "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" - "version" "3.0.1" - -"websocket@^1.0.31", "websocket@1.0.32": - "integrity" "sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q==" - "resolved" "https://registry.npmjs.org/websocket/-/websocket-1.0.32.tgz" - "version" "1.0.32" - dependencies: - "bufferutil" "^4.0.1" - "debug" "^2.2.0" - "es5-ext" "^0.10.50" - "typedarray-to-buffer" "^3.1.5" - "utf-8-validate" "^5.0.2" - "yaeti" "^0.0.6" - -"websocket@^1.0.32": - "integrity" "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==" - "resolved" "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz" - "version" "1.0.34" - dependencies: - "bufferutil" "^4.0.1" - "debug" "^2.2.0" - "es5-ext" "^0.10.50" - "typedarray-to-buffer" "^3.1.5" - "utf-8-validate" "^5.0.2" - "yaeti" "^0.0.6" - -"whatwg-fetch@2.0.4": - "version" "2.0.4" - -"whatwg-url@^5.0.0": - "integrity" "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=" - "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "tr46" "~0.0.3" - "webidl-conversions" "^3.0.0" - -"which-boxed-primitive@^1.0.2": - "integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==" - "resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "is-bigint" "^1.0.1" - "is-boolean-object" "^1.1.0" - "is-number-object" "^1.0.4" - "is-string" "^1.0.5" - "is-symbol" "^1.0.3" - -"which-module@^1.0.0": - "integrity" "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==" - "resolved" "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz" - "version" "1.0.0" - -"which-module@^2.0.0": - "integrity" "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - "resolved" "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" - "version" "2.0.0" - -"which-typed-array@^1.1.2": - "integrity" "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==" - "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "es-abstract" "^1.18.5" - "foreach" "^2.0.5" - "has-tostringtag" "^1.0.0" - "is-typed-array" "^1.1.7" - -"which@^1.1.1", "which@^1.2.9", "which@^1.3.1", "which@1.3.1": - "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" - "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - "version" "1.3.1" - dependencies: - "isexe" "^2.0.0" - -"which@^2.0.1": - "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" - "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "isexe" "^2.0.0" - -"wide-align@1.1.3": - "integrity" "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==" - "resolved" "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "string-width" "^1.0.2 || 2" - -"window-size@^0.2.0": - "integrity" "sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw==" - "resolved" "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz" - "version" "0.2.0" - -"word-wrap@^1.2.3", "word-wrap@~1.2.3": - "integrity" "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" - "resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" - "version" "1.2.3" - -"wordwrap@^1.0.0": - "integrity" "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - "resolved" "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" - "version" "1.0.0" - -"wordwrapjs@^4.0.0": - "integrity" "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==" - "resolved" "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "reduce-flatten" "^2.0.0" - "typical" "^5.2.0" - -"workerpool@6.2.1": - "integrity" "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==" - "resolved" "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz" - "version" "6.2.1" - -"wrap-ansi@^2.0.0": - "integrity" "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "string-width" "^1.0.1" - "strip-ansi" "^3.0.1" - -"wrap-ansi@^5.1.0": - "integrity" "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "ansi-styles" "^3.2.0" - "string-width" "^3.0.0" - "strip-ansi" "^5.0.0" - -"wrap-ansi@^7.0.0": - "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - "version" "7.0.0" - dependencies: - "ansi-styles" "^4.0.0" - "string-width" "^4.1.0" - "strip-ansi" "^6.0.0" - -"wrappy@1": - "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - "version" "1.0.2" - -"write@1.0.3": - "integrity" "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==" - "resolved" "https://registry.npmjs.org/write/-/write-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "mkdirp" "^0.5.1" - -"ws@^3.0.0": - "integrity" "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==" - "resolved" "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz" - "version" "3.3.3" - dependencies: - "async-limiter" "~1.0.0" - "safe-buffer" "~5.1.0" - "ultron" "~1.1.0" - -"ws@^5.1.1": - "version" "5.2.2" - dependencies: - "async-limiter" "~1.0.0" - -"ws@^7.4.6": - "integrity" "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==" - "resolved" "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz" - "version" "7.5.6" - -"ws@7.4.6": - "integrity" "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" - "resolved" "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz" - "version" "7.4.6" - -"xhr-request-promise@^0.1.2": - "integrity" "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==" - "resolved" "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz" - "version" "0.1.3" - dependencies: - "xhr-request" "^1.1.0" - -"xhr-request@^1.0.1", "xhr-request@^1.1.0": - "integrity" "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==" - "resolved" "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "buffer-to-arraybuffer" "^0.0.5" - "object-assign" "^4.1.1" - "query-string" "^5.0.1" - "simple-get" "^2.7.0" - "timed-out" "^4.0.1" - "url-set-query" "^1.0.0" - "xhr" "^2.0.4" - -"xhr@^2.0.4", "xhr@^2.2.0", "xhr@^2.3.3": - "integrity" "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==" - "resolved" "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz" - "version" "2.6.0" - dependencies: - "global" "~4.4.0" - "is-function" "^1.0.1" - "parse-headers" "^2.0.0" - "xtend" "^4.0.0" - -"xhr2-cookies@1.1.0": - "integrity" "sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg=" - "resolved" "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "cookiejar" "^2.1.1" - -"xmlhttprequest@1.8.0": - "integrity" "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" - "resolved" "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz" - "version" "1.8.0" - -"xtend@^4.0.0", "xtend@^4.0.1", "xtend@^4.0.2", "xtend@~4.0.0", "xtend@~4.0.1": - "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" - "version" "4.0.2" - -"xtend@~2.1.1": - "integrity" "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==" - "resolved" "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz" - "version" "2.1.2" - dependencies: - "object-keys" "~0.4.0" - -"y18n@^3.2.1": - "integrity" "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" - "resolved" "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz" - "version" "3.2.2" - -"y18n@^4.0.0": - "integrity" "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - "resolved" "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" - "version" "4.0.3" - -"y18n@^5.0.5": - "integrity" "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - "resolved" "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" - "version" "5.0.8" - -"yaeti@^0.0.6": - "integrity" "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=" - "resolved" "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz" - "version" "0.0.6" - -"yallist@^3.0.0", "yallist@^3.0.2", "yallist@^3.0.3", "yallist@^3.1.1": - "integrity" "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" - "version" "3.1.1" - -"yallist@^4.0.0": - "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - "version" "4.0.0" - -"yargs-parser@^13.1.2", "yargs-parser@13.1.2": - "integrity" "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz" - "version" "13.1.2" - dependencies: - "camelcase" "^5.0.0" - "decamelize" "^1.2.0" - -"yargs-parser@^2.4.1": - "integrity" "sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz" - "version" "2.4.1" - dependencies: - "camelcase" "^3.0.0" - "lodash.assign" "^4.0.6" - -"yargs-parser@^20.2.2", "yargs-parser@20.2.4": - "integrity" "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" - "version" "20.2.4" - -"yargs-unparser@1.6.0": - "integrity" "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==" - "resolved" "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz" - "version" "1.6.0" - dependencies: - "flat" "^4.1.0" - "lodash" "^4.17.15" - "yargs" "^13.3.0" - -"yargs-unparser@2.0.0": - "integrity" "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==" - "resolved" "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "camelcase" "^6.0.0" - "decamelize" "^4.0.0" - "flat" "^5.0.2" - "is-plain-obj" "^2.1.0" - -"yargs@^13.3.0", "yargs@13.3.2": - "integrity" "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz" - "version" "13.3.2" - dependencies: - "cliui" "^5.0.0" - "find-up" "^3.0.0" - "get-caller-file" "^2.0.1" - "require-directory" "^2.1.1" - "require-main-filename" "^2.0.0" - "set-blocking" "^2.0.0" - "string-width" "^3.0.0" - "which-module" "^2.0.0" - "y18n" "^4.0.0" - "yargs-parser" "^13.1.2" - -"yargs@^4.7.1": - "integrity" "sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz" - "version" "4.8.1" - dependencies: - "cliui" "^3.2.0" - "decamelize" "^1.1.1" - "get-caller-file" "^1.0.1" - "lodash.assign" "^4.0.3" - "os-locale" "^1.4.0" - "read-pkg-up" "^1.0.1" - "require-directory" "^2.1.1" - "require-main-filename" "^1.0.1" - "set-blocking" "^2.0.0" - "string-width" "^1.0.1" - "which-module" "^1.0.0" - "window-size" "^0.2.0" - "y18n" "^3.2.1" - "yargs-parser" "^2.4.1" - -"yargs@16.2.0": - "integrity" "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" - "version" "16.2.0" - dependencies: - "cliui" "^7.0.2" - "escalade" "^3.1.1" - "get-caller-file" "^2.0.5" - "require-directory" "^2.1.1" - "string-width" "^4.2.0" - "y18n" "^5.0.5" - "yargs-parser" "^20.2.2" - -"yn@3.1.1": - "integrity" "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" - "resolved" "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" - "version" "3.1.1" - -"yocto-queue@^0.1.0": - "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" - "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - "version" "0.1.0" - -"zksync-web3@^0.8.1": - "integrity" "sha512-1A4aHPQ3MyuGjpv5X/8pVEN+MdZqMjfVmiweQSRjOlklXYu65wT9BGEOtCmMs5d3gIvLp4ssfTeuR5OCKOD2kw==" - "resolved" "https://registry.npmjs.org/zksync-web3/-/zksync-web3-0.8.1.tgz" - "version" "0.8.1" + web3-core "1.7.4" + web3-core-helpers "1.7.4" + web3-core-method "1.7.4" + web3-net "1.7.4" + web3-utils "1.7.4" + +web3-eth@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.11.tgz" + integrity sha512-REvxW1wJ58AgHPcXPJOL49d1K/dPmuw4LjPLBPStOVkQjzDTVmJEIsiLwn2YeuNDd4pfakBwT8L3bz1G1/wVsQ== + dependencies: + underscore "1.9.1" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-core-subscriptions "1.2.11" + web3-eth-abi "1.2.11" + web3-eth-accounts "1.2.11" + web3-eth-contract "1.2.11" + web3-eth-ens "1.2.11" + web3-eth-iban "1.2.11" + web3-eth-personal "1.2.11" + web3-net "1.2.11" + web3-utils "1.2.11" + +web3-eth@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3-eth/-/web3-eth-1.5.3.tgz" + integrity sha512-saFurA1L23Bd7MEf7cBli6/jRdMhD4X/NaMiO2mdMMCXlPujoudlIJf+VWpRWJpsbDFdu7XJ2WHkmBYT5R3p1Q== + dependencies: + web3-core "1.5.3" + web3-core-helpers "1.5.3" + web3-core-method "1.5.3" + web3-core-subscriptions "1.5.3" + web3-eth-abi "1.5.3" + web3-eth-accounts "1.5.3" + web3-eth-contract "1.5.3" + web3-eth-ens "1.5.3" + web3-eth-iban "1.5.3" + web3-eth-personal "1.5.3" + web3-net "1.5.3" + web3-utils "1.5.3" + +web3-eth@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3-eth/-/web3-eth-1.7.4.tgz" + integrity sha512-JG0tTMv0Ijj039emXNHi07jLb0OiWSA9O24MRSk5vToTQyDNXihdF2oyq85LfHuF690lXZaAXrjhtLNlYqb7Ug== + dependencies: + web3-core "1.7.4" + web3-core-helpers "1.7.4" + web3-core-method "1.7.4" + web3-core-subscriptions "1.7.4" + web3-eth-abi "1.7.4" + web3-eth-accounts "1.7.4" + web3-eth-contract "1.7.4" + web3-eth-ens "1.7.4" + web3-eth-iban "1.7.4" + web3-eth-personal "1.7.4" + web3-net "1.7.4" + web3-utils "1.7.4" + +web3-net@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-net/-/web3-net-1.2.11.tgz" + integrity sha512-sjrSDj0pTfZouR5BSTItCuZ5K/oZPVdVciPQ6981PPPIwJJkCMeVjD7I4zO3qDPCnBjBSbWvVnLdwqUBPtHxyg== + dependencies: + web3-core "1.2.11" + web3-core-method "1.2.11" + web3-utils "1.2.11" + +web3-net@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3-net/-/web3-net-1.5.3.tgz" + integrity sha512-0W/xHIPvgVXPSdLu0iZYnpcrgNnhzHMC888uMlGP5+qMCt8VuflUZHy7tYXae9Mzsg1kxaJAS5lHVNyeNw4CoQ== + dependencies: + web3-core "1.5.3" + web3-core-method "1.5.3" + web3-utils "1.5.3" + +web3-net@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3-net/-/web3-net-1.7.4.tgz" + integrity sha512-d2Gj+DIARHvwIdmxFQ4PwAAXZVxYCR2lET0cxz4KXbE5Og3DNjJi+MoPkX+WqoUXqimu/EOd4Cd+7gefqVAFDg== + dependencies: + web3-core "1.7.4" + web3-core-method "1.7.4" + web3-utils "1.7.4" + +web3-provider-engine@14.2.1: + version "14.2.1" + resolved "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-14.2.1.tgz" + integrity sha512-iSv31h2qXkr9vrL6UZDm4leZMc32SjWJFGOp/D92JXfcEboCqraZyuExDkpxKw8ziTufXieNM7LSXNHzszYdJw== + dependencies: + async "^2.5.0" + backoff "^2.5.0" + clone "^2.0.0" + cross-fetch "^2.1.0" + eth-block-tracker "^3.0.0" + eth-json-rpc-infura "^3.1.0" + eth-sig-util "3.0.0" + ethereumjs-block "^1.2.2" + ethereumjs-tx "^1.2.0" + ethereumjs-util "^5.1.5" + ethereumjs-vm "^2.3.4" + json-rpc-error "^2.0.0" + 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" + integrity sha512-psh4hYGb1+ijWywfwpB2cvvOIMISlR44F/rJtYkRmQ5jMvG4FOCPlQJPiHQZo+2cc3HbktvvSJzIhkWQJdmvrA== + dependencies: + web3-core-helpers "1.2.11" + xhr2-cookies "1.1.0" + +web3-providers-http@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.5.3.tgz" + integrity sha512-5DpUyWGHtDAr2RYmBu34Fu+4gJuBAuNx2POeiJIooUtJ+Mu6pIx4XkONWH6V+Ez87tZAVAsFOkJRTYuzMr3rPw== + dependencies: + web3-core-helpers "1.5.3" + xhr2-cookies "1.1.0" + +web3-providers-http@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.7.4.tgz" + integrity sha512-AU+/S+49rcogUER99TlhW+UBMk0N2DxvN54CJ2pK7alc2TQ7+cprNPLHJu4KREe8ndV0fT6JtWUfOMyTvl+FRA== + dependencies: + web3-core-helpers "1.7.4" + xhr2-cookies "1.1.0" + +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" + integrity sha512-yhc7Y/k8hBV/KlELxynWjJDzmgDEDjIjBzXK+e0rHBsYEhdCNdIH5Psa456c+l0qTEU2YzycF8VAjYpWfPnBpQ== + dependencies: + oboe "2.1.4" + underscore "1.9.1" + web3-core-helpers "1.2.11" + +web3-providers-ipc@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.5.3.tgz" + integrity sha512-JmeAptugVpmXI39LGxUSAymx0NOFdgpuI1hGQfIhbEAcd4sv7fhfd5D+ZU4oLHbRI8IFr4qfGU0uhR8BXhDzlg== + dependencies: + oboe "2.1.5" + web3-core-helpers "1.5.3" + +web3-providers-ipc@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.7.4.tgz" + integrity sha512-jhArOZ235dZy8fS8090t60nTxbd1ap92ibQw5xIrAQ9m7LcZKNfmLAQUVsD+3dTFvadRMi6z1vCO7zRi84gWHw== + dependencies: + oboe "2.1.5" + web3-core-helpers "1.7.4" + +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" + integrity sha512-ZxnjIY1Er8Ty+cE4migzr43zA/+72AF1myzsLaU5eVgdsfV7Jqx7Dix1hbevNZDKFlSoEyq/3j/jYalh3So1Zg== + dependencies: + eventemitter3 "4.0.4" + underscore "1.9.1" + web3-core-helpers "1.2.11" + websocket "^1.0.31" + +web3-providers-ws@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.5.3.tgz" + integrity sha512-6DhTw4Q7nm5CFYEUHOJM0gAb3xFx+9gWpVveg3YxJ/ybR1BUvEWo3bLgIJJtX56cYX0WyY6DS35a7f0LOI1kVg== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.5.3" + websocket "^1.0.32" + +web3-providers-ws@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.7.4.tgz" + integrity sha512-g72X77nrcHMFU8hRzQJzfgi/072n8dHwRCoTw+WQrGp+XCQ71fsk2qIu3Tp+nlp5BPn8bRudQbPblVm2uT4myQ== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.7.4" + 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" + integrity sha512-B3OrO3oG1L+bv3E1sTwCx66injW1A8hhwpknDUbV+sw3fehFazA06z9SGXUefuFI1kVs4q2vRi0n4oCcI4dZDg== + dependencies: + web3-core "1.2.11" + web3-core-method "1.2.11" + web3-core-subscriptions "1.2.11" + web3-net "1.2.11" + +web3-shh@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3-shh/-/web3-shh-1.5.3.tgz" + integrity sha512-COfEXfsqoV/BkcsNLRxQqnWc1Teb8/9GxdGag5GtPC5gQC/vsN+7hYVJUwNxY9LtJPKYTij2DHHnx6UkITng+Q== + dependencies: + web3-core "1.5.3" + web3-core-method "1.5.3" + web3-core-subscriptions "1.5.3" + web3-net "1.5.3" + +web3-shh@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3-shh/-/web3-shh-1.7.4.tgz" + integrity sha512-mlSZxSYcMkuMCxqhTYnZkUdahZ11h+bBv/8TlkXp/IHpEe4/Gg+KAbmfudakq3EzG/04z70XQmPgWcUPrsEJ+A== + dependencies: + web3-core "1.7.4" + web3-core-method "1.7.4" + web3-core-subscriptions "1.7.4" + web3-net "1.7.4" + +web3-utils@^1.0.0-beta.31, web3-utils@^1.2.5, web3-utils@^1.3.0, web3-utils@^1.3.4, web3-utils@^1.5.1, web3-utils@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz" + integrity sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA== + 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-utils@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.11.tgz" + integrity sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ== + dependencies: + bn.js "^4.11.9" + eth-lib "0.2.8" + ethereum-bloom-filters "^1.0.6" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + underscore "1.9.1" + utf8 "3.0.0" + +web3-utils@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.5.3.tgz" + integrity sha512-56nRgA+Ad9SEyCv39g36rTcr5fpsd4L9LgV3FK0aB66nAMazLAA6Qz4lH5XrUKPDyBIPGJIR+kJsyRtwcu2q1Q== + dependencies: + bn.js "^4.11.9" + eth-lib "0.2.8" + ethereum-bloom-filters "^1.0.6" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +web3@^1.0.0-beta.36, web3@^1.2.5, web3@^1.3.5, web3@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/web3/-/web3-1.7.4.tgz" + integrity sha512-iFGK5jO32vnXM/ASaJBaI0+gVR6uHozvYdxkdhaeOCD6HIQ4iIXadbO2atVpE9oc/H8l2MovJ4LtPhG7lIBN8A== + dependencies: + web3-bzz "1.7.4" + web3-core "1.7.4" + web3-eth "1.7.4" + web3-eth-personal "1.7.4" + web3-net "1.7.4" + web3-shh "1.7.4" + web3-utils "1.7.4" + +web3@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3/-/web3-1.2.11.tgz" + integrity sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ== + dependencies: + web3-bzz "1.2.11" + web3-core "1.2.11" + web3-eth "1.2.11" + web3-eth-personal "1.2.11" + web3-net "1.2.11" + web3-shh "1.2.11" + web3-utils "1.2.11" + +web3@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/web3/-/web3-1.5.3.tgz" + integrity sha512-eyBg/1K44flfv0hPjXfKvNwcUfIVDI4NX48qHQe6wd7C8nPSdbWqo9vLy6ksZIt9NLa90HjI8HsGYgnMSUxn6w== + dependencies: + web3-bzz "1.5.3" + web3-core "1.5.3" + web3-eth "1.5.3" + web3-eth-personal "1.5.3" + web3-net "1.5.3" + web3-shh "1.5.3" + web3-utils "1.5.3" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + +websocket@^1.0.31, websocket@1.0.32: + version "1.0.32" + resolved "https://registry.npmjs.org/websocket/-/websocket-1.0.32.tgz" + integrity sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + +websocket@^1.0.32: + version "1.0.34" + resolved "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz" + integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + +whatwg-fetch@2.0.4: + version "2.0.4" + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz" + integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which-typed-array@^1.1.2: + version "1.1.7" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz" + integrity sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-abstract "^1.18.5" + foreach "^2.0.5" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.7" + +which@^1.1.1, which@^1.2.9, which@^1.3.1, which@1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wide-align@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +window-size@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz" + integrity sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw== + +word-wrap@^1.2.3, word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" + +workerpool@6.2.1: + version "6.2.1" + resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz" + integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" + integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +ws@^3.0.0: + version "3.3.3" + resolved "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +ws@^5.1.1: + version "5.2.2" + dependencies: + async-limiter "~1.0.0" + +ws@^7.4.6: + version "7.5.6" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz" + integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +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" + integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== + dependencies: + xhr-request "^1.1.0" + +xhr-request@^1.0.1, xhr-request@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz" + integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== + dependencies: + buffer-to-arraybuffer "^0.0.5" + object-assign "^4.1.1" + query-string "^5.0.1" + simple-get "^2.7.0" + timed-out "^4.0.1" + url-set-query "^1.0.0" + xhr "^2.0.4" + +xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: + version "2.6.0" + resolved "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz" + integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== + dependencies: + global "~4.4.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + +xhr2-cookies@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz" + integrity sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg= + dependencies: + cookiejar "^2.1.1" + +xmlhttprequest@1.8.0: + version "1.8.0" + resolved "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz" + integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= + +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.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" + +y18n@^3.2.1: + version "3.2.2" + resolved "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz" + integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz" + integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= + +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3, yallist@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +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" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz" + integrity sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA== + dependencies: + camelcase "^3.0.0" + lodash.assign "^4.0.6" + +yargs-parser@^20.2.2, yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-unparser@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz" + integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== + dependencies: + flat "^4.1.0" + lodash "^4.17.15" + yargs "^13.3.0" + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@^13.3.0, yargs@13.3.2: + version "13.3.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^4.7.1: + version "4.8.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz" + integrity sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA== + dependencies: + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + lodash.assign "^4.0.3" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.1" + which-module "^1.0.0" + window-size "^0.2.0" + y18n "^3.2.1" + yargs-parser "^2.4.1" + +yargs@16.2.0: + version "16.2.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zksync-web3@^0.8.1: + version "0.8.1" + resolved "https://registry.npmjs.org/zksync-web3/-/zksync-web3-0.8.1.tgz" + integrity sha512-1A4aHPQ3MyuGjpv5X/8pVEN+MdZqMjfVmiweQSRjOlklXYu65wT9BGEOtCmMs5d3gIvLp4ssfTeuR5OCKOD2kw==